diff --git a/internal/core/application.go b/internal/core/application.go index 2335f06..3db0fa8 100644 --- a/internal/core/application.go +++ b/internal/core/application.go @@ -124,15 +124,7 @@ func initStorage(cfg config.DatabaseConfig, logger *logs.Logger) (database.Stora } // 执行数据库迁移 - // 这里需要添加所有需要自动迁移的模型 - var dbModels = []interface{}{ - &models.User{}, - &models.Device{}, - &models.Plan{}, - &models.SubPlan{}, - &models.Task{}, - } - if err := storage.Migrate(dbModels...); err != nil { + if err := storage.Migrate(models.GetAllModels()...); err != nil { return nil, fmt.Errorf("数据库迁移失败: %w", err) } diff --git a/internal/infra/models/models.go b/internal/infra/models/models.go new file mode 100644 index 0000000..37cc5c5 --- /dev/null +++ b/internal/infra/models/models.go @@ -0,0 +1,13 @@ +package models + +// GetAllModels 返回一个包含所有数据库模型实例的切片。 +// 这个函数用于在数据库初始化时自动迁移所有的表结构。 +func GetAllModels() []interface{} { + return []interface{}{ + &User{}, + &Device{}, + &Plan{}, + &SubPlan{}, + &Task{}, + } +} diff --git a/internal/infra/repository/main_test.go b/internal/infra/repository/main_test.go index 700e438..81c3907 100644 --- a/internal/infra/repository/main_test.go +++ b/internal/infra/repository/main_test.go @@ -17,7 +17,7 @@ func setupTestDB(t *testing.T) *gorm.DB { assert.NoError(t, err, "连接内存数据库时发生错误") // 自动迁移所有需要的表结构 - err = db.AutoMigrate(&models.User{}, &models.Device{}, &models.SubPlan{}, &models.Task{}, &models.Plan{}) + err = db.AutoMigrate(models.GetAllModels()...) assert.NoError(t, err, "数据库迁移时发生错误") return db