fix: validate explicit migrations and preserve large business ids
This commit is contained in:
+30
-4
@@ -4,7 +4,9 @@
|
||||
package module
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
"kra/pkg/database/migration"
|
||||
)
|
||||
|
||||
@@ -28,16 +30,40 @@ type TimedTask struct {
|
||||
}
|
||||
|
||||
type Definition struct {
|
||||
Name string
|
||||
Migrations []migration.Step
|
||||
Surface Surface
|
||||
TimedTasks []TimedTask
|
||||
Name string
|
||||
Migrations []migration.Step
|
||||
Surface Surface
|
||||
TimedTasks []TimedTask
|
||||
Prerequisites func(*gorm.DB) error
|
||||
ValidateSchema func(*gorm.DB) error
|
||||
}
|
||||
|
||||
type Catalog struct {
|
||||
Definitions []Definition
|
||||
}
|
||||
|
||||
func (c Catalog) CheckPrerequisites(db *gorm.DB) error {
|
||||
for _, item := range c.Definitions {
|
||||
if item.Prerequisites != nil {
|
||||
if err := item.Prerequisites(db); err != nil {
|
||||
return fmt.Errorf("%s prerequisites: %w", item.Name, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c Catalog) CheckSchema(db *gorm.DB) error {
|
||||
for _, item := range c.Definitions {
|
||||
if item.ValidateSchema != nil {
|
||||
if err := item.ValidateSchema(db); err != nil {
|
||||
return fmt.Errorf("%s: %w", item.Name, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c Catalog) MigrationSteps() []migration.Step {
|
||||
var steps []migration.Step
|
||||
for _, item := range c.Definitions {
|
||||
|
||||
Reference in New Issue
Block a user