Forge
1.x
Docs/Forge/Migrations and Seeding
Open

Deprecated

Use Grove instead.

Reading1 min
Updated31 Jul 2026
Sourcev1/extensions/database/migrations-seeding.mdx

Migration Manager01

MigrationManager wraps Bun migrator operations.

Core methods:

  • CreateTables

  • Migrate

  • Rollback

  • Status

  • Reset

  • AutoMigrate

  • CreateMigration

Migration Registry02

The package re-exports migration registry symbols from extensions/database/migrate:

  • database.Migrations

  • database.RegisterMigration

  • database.RegisterModel

  • database.Models

The migrate package attempts caller discovery lazily through GetMigrations().

Typical Migration Flow03

mgr := database.NewMigrationManager(db, database.Migrations, database.NewNoopMigrationLogger())

if err := mgr.CreateTables(ctx); err != nil {
    return err
}

if err := mgr.Migrate(ctx); err != nil {
    return err
}

Seeder Runner04

SeederRunner executes registered Seeder implementations and optionally tracks runs.

Key methods:

  • WithTracking(enabled bool)

  • Register

  • RegisterMany

  • Run

  • RunSeeder

  • Reset

  • ResetAll

  • List

Tracking writes to seeders table (SeederRecord).

Seeder Interface05

type Seeder interface {
    Name() string
    Seed(ctx context.Context, db *bun.DB) error
}
  • keep seeders idempotent

  • use deterministic unique keys for upsert-like behavior

  • wrap multi-step seed jobs in transactions when consistency matters

  • use RunSeeder for targeted re-runs in development