fix: validate explicit migrations and preserve large business ids
This commit is contained in:
+13
-5
@@ -246,12 +246,20 @@ func NewData(runtime *config.Store, appLogger *slog.Logger, storageManager *stor
|
||||
undo.add(cleanup)
|
||||
defer undo.run()
|
||||
usingFallback := !databaseConnectionConfigured(c.Database)
|
||||
admin := runtime.Admin()
|
||||
if admin == nil {
|
||||
admin = &config.Admin{}
|
||||
}
|
||||
disableAutoMigrate := admin.System != nil && admin.System.DisableAutoMigrate
|
||||
var db *gorm.DB
|
||||
var err error
|
||||
if !usingFallback {
|
||||
db, err = openDatabase(c.Database, false, "", appLogger)
|
||||
}
|
||||
if usingFallback || err != nil {
|
||||
if disableAutoMigrate {
|
||||
return nil, nil, fmt.Errorf("automatic migration is disabled; an available migrated database is required")
|
||||
}
|
||||
// The initialization endpoint must remain available when the configured
|
||||
// target database has not been created yet.
|
||||
if err != nil {
|
||||
@@ -274,16 +282,16 @@ func NewData(runtime *config.Store, appLogger *slog.Logger, storageManager *stor
|
||||
for _, item := range d.dbList {
|
||||
registerDataScopeCallbacks(item, d.enqueueDataScopeAudit)
|
||||
}
|
||||
admin := runtime.Admin()
|
||||
if admin == nil {
|
||||
admin = &config.Admin{}
|
||||
}
|
||||
disableAutoMigrate := admin.System != nil && admin.System.DisableAutoMigrate
|
||||
if !usingFallback && !disableAutoMigrate {
|
||||
if err = migrateAll(db, catalog); err != nil {
|
||||
return nil, nil, fmt.Errorf("migrate tables: %w", err)
|
||||
}
|
||||
}
|
||||
if !usingFallback && disableAutoMigrate {
|
||||
if err = checkMigratedSchema(db, catalog); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
}
|
||||
if !usingFallback {
|
||||
storageConfig, storageErr := dataintegration.ResolveStorageConfig(db, admin.Storage)
|
||||
if storageErr != nil {
|
||||
|
||||
Reference in New Issue
Block a user