diff --git a/interfaces.go b/interfaces.go index 695abf1..301e2f2 100644 --- a/interfaces.go +++ b/interfaces.go @@ -14,3 +14,8 @@ type EntitiesProvider interface { maf.Module GetDBEntities() []interface{} } + +type PreMigrationConsumer interface { + Consumer + DBPreMigration(db *gorm.DB) error +} diff --git a/module.go b/module.go index 403a135..dd32305 100644 --- a/module.go +++ b/module.go @@ -110,6 +110,15 @@ func (m *Module) autoMigrate() error { var err error + for _, module := range m.manager.GetModulesList() { + if preMigrationModule, ok := module.(PreMigrationConsumer); ok { + err = preMigrationModule.DBPreMigration(m.db) + if err != nil { + return err + } + } + } + err = m.autoMigrateTables() if err != nil { return err