Skip to main content

Data Seeding

Strategi seeding data untuk initial setup merchant, branch, roles, users, dan master data di MStore Backend.

πŸ“Š Seed Data Categories

1. Lookup Tables (Static Reference Data)

Data statis yang jarang berubah, biasanya enum values. Examples:
  • business_level: L0, L1, L2, L3, L4
  • transaction_status: draft, completed, cancelled, refunded
  • branch_type: outlet, warehouse, distribution, hq
  • user_role: owner, manager, cashier, auditor, etc.
Location: third_party/migrations/seeder/

2. Master Data (Initial Setup)

Data yang dibuat saat merchant/branch baru didaftarkan. Examples:
  • Roles & Permissions (multi-level RBAC)
  • Users (admin, owner-manager, cashier, etc.)
  • Chart of Accounts (COA) untuk accounting
  • Tax Configurations
  • Default Settings per merchant/branch
Location: internal/domains/excel_import/excel_import_data_seeder.go

3. Configuration Data

Sistem configuration yang bisa di-override per merchant. Examples:
  • Log level, timezone, currency
  • Merchant defaults (payment method, tax rate)
  • Branch defaults (warehouse, POS terminal)

πŸ”„ Seed Data Flow


πŸ’» Seeder Implementation (Go)

User Seeder

Role Seeder (Multi-Level RBAC)

Permission Seeder

Role-Permission Mapping


πŸš€ Running Seeders

Method 1: Via CLI Command

Method 2: Via API Endpoint

Method 3: Via Database Migration


βœ… Seeding Checklist

  • Backup database before seeding
  • Verify lookup tables exist
  • Check role & permission definitions
  • Validate user credentials
  • Test seeding on staging first
  • Verify seeded data integrity
  • Check for duplicate entries
  • Validate foreign key constraints
  • Monitor application logs

πŸš€ Best Practices

DO βœ…

  • Seed lookup tables first
  • Use transactions for atomic seeding
  • Validate data before inserting
  • Document seed data changes
  • Version control seed scripts
  • Test seeding on staging
  • Use idempotent seeders (safe to run multiple times)

DON’T ❌

  • Seed production data directly
  • Skip validation
  • Use hardcoded IDs (use natural keys)
  • Seed without backup
  • Mix seed & migration scripts
  • Seed sensitive data (passwords, tokens)
  • Ignore foreign key constraints

MySQL Migrations

Migration strategy

MySQL Schema

Complete schema reference

Backup & Restore

Backup procedures

Multi-Level RBAC

RBAC architecture