fix: validate explicit migrations and preserve large business ids

This commit is contained in:
Yvan
2026-11-06 07:00:05 +08:00
parent f6f2a4745e
commit 0f0ec2e6d7
53 changed files with 2653 additions and 1445 deletions
+30 -4
View File
@@ -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 {