21 lines
673 B
Go
21 lines
673 B
Go
package migration
|
|
|
|
import "gorm.io/gorm"
|
|
|
|
// CreateMissingTables creates only schemas that are absent. Existing tables
|
|
// are intentionally left untouched: GORM's MySQL column diff path can panic
|
|
// when older servers return incomplete information_schema metadata, and this
|
|
// project does not support implicit legacy-schema upgrades through AutoMigrate.
|
|
func CreateMissingTables(db *gorm.DB, models ...any) error {
|
|
missing := make([]any, 0, len(models))
|
|
for _, model := range models {
|
|
if model != nil && !db.Migrator().HasTable(model) {
|
|
missing = append(missing, model)
|
|
}
|
|
}
|
|
if len(missing) == 0 {
|
|
return nil
|
|
}
|
|
return db.Migrator().CreateTable(missing...)
|
|
}
|