Use Grove instead.
Migration Manager01
MigrationManager wraps Bun migrator operations.
Core methods:
CreateTablesMigrateRollbackStatusResetAutoMigrateCreateMigration
Migration Registry02
The package re-exports migration registry symbols from extensions/database/migrate:
database.Migrationsdatabase.RegisterMigrationdatabase.RegisterModeldatabase.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)RegisterRegisterManyRunRunSeederResetResetAllList
Tracking writes to seeders table (SeederRecord).
Seeder Interface05
type Seeder interface {
Name() string
Seed(ctx context.Context, db *bun.DB) error
}Recommended Seeding Practices06
keep seeders idempotent
use deterministic unique keys for upsert-like behavior
wrap multi-step seed jobs in transactions when consistency matters
use
RunSeederfor targeted re-runs in development