refactor: shorten model and table prefixes
This commit is contained in:
@@ -39,16 +39,22 @@ func TestAutoMigrateUpgradesLegacyProjectsAndTagsWithoutLosingAssociations(t *te
|
||||
// carry an initialized Gorm statement. Exercise that mode so model state from
|
||||
// the migration-version lookup cannot leak into the data-repair transaction.
|
||||
require.NoError(t, AutoMigrate(database.Session(&gorm.Session{Initialized: true})))
|
||||
require.False(t, database.Migrator().HasTable("senlin_agent_projects"))
|
||||
require.False(t, database.Migrator().HasTable("senlin_agent_tags"))
|
||||
require.False(t, database.Migrator().HasTable("senlin_agent_tasks"))
|
||||
require.True(t, database.Migrator().HasTable("sa_projects"))
|
||||
require.True(t, database.Migrator().HasTable("sa_tags"))
|
||||
require.True(t, database.Migrator().HasTable("sa_tasks"))
|
||||
|
||||
var projects []SenlinAgentProject
|
||||
var projects []SaProject
|
||||
require.NoError(t, database.Order("id asc").Find(&projects).Error)
|
||||
require.Len(t, projects, 6, "项目迁移不得删除 legacy 行")
|
||||
require.Equal(t, []string{"project-1", "project-2", "DUP", "DUP-4-2", "DUP-4", "DUP"}, projectIdentifiers(projects))
|
||||
|
||||
var tags []SenlinAgentTag
|
||||
var tags []SaTag
|
||||
require.NoError(t, database.Order("id asc").Find(&tags).Error)
|
||||
require.Equal(t, []uint{10, 12}, tagIDs(tags), "同项目同名标签应保留最早记录,不影响其他项目")
|
||||
var task SenlinAgentTask
|
||||
var task SaTask
|
||||
require.NoError(t, database.First(&task, 20).Error)
|
||||
require.NotNil(t, task.TagID)
|
||||
require.Equal(t, uint(10), *task.TagID)
|
||||
@@ -56,21 +62,32 @@ func TestAutoMigrateUpgradesLegacyProjectsAndTagsWithoutLosingAssociations(t *te
|
||||
require.Equal(t, "tag-keeper", *task.TagIdentity)
|
||||
|
||||
var migrationCount int64
|
||||
require.NoError(t, database.Table("senlin_agent_schema_migrations").Count(&migrationCount).Error)
|
||||
require.NoError(t, database.Table("sa_schema_migrations").Count(&migrationCount).Error)
|
||||
require.Equal(t, int64(2), migrationCount)
|
||||
var auditDetails []string
|
||||
require.NoError(t, database.Table("senlin_agent_schema_migrations").Order("version asc").Pluck("details", &auditDetails).Error)
|
||||
require.NoError(t, database.Table("sa_schema_migrations").Order("version asc").Pluck("details", &auditDetails).Error)
|
||||
require.Contains(t, auditDetails[0], `"updated":3`)
|
||||
require.Contains(t, auditDetails[1], `"deduplicated":1`)
|
||||
require.NoError(t, AutoMigrate(database), "versioned migrations must be safe to run again")
|
||||
require.NoError(t, database.Table("senlin_agent_schema_migrations").Count(&migrationCount).Error)
|
||||
require.NoError(t, database.Table("sa_schema_migrations").Count(&migrationCount).Error)
|
||||
require.Equal(t, int64(2), migrationCount)
|
||||
|
||||
require.Error(t, database.Exec(`INSERT INTO senlin_agent_projects (owner_id, name, identifier) VALUES (7, 'still duplicate', 'DUP')`).Error)
|
||||
require.Error(t, database.Exec(`INSERT INTO senlin_agent_tags (project_id, name) VALUES (1, 'UI')`).Error)
|
||||
require.Error(t, database.Exec(`INSERT INTO sa_projects (owner_id, name, identifier) VALUES (7, 'still duplicate', 'DUP')`).Error)
|
||||
require.Error(t, database.Exec(`INSERT INTO sa_tags (project_id, name) VALUES (1, 'UI')`).Error)
|
||||
}
|
||||
|
||||
func projectIdentifiers(projects []SenlinAgentProject) []string {
|
||||
func TestAutoMigrateRejectsAmbiguousLegacyAndCurrentTables(t *testing.T) {
|
||||
database, err := gorm.Open(sqlite.Open(fmt.Sprintf("file:%s?mode=memory&cache=shared", t.Name())), &gorm.Config{})
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, database.Exec(`CREATE TABLE senlin_agent_users (id integer primary key)`).Error)
|
||||
require.NoError(t, database.Exec(`CREATE TABLE sa_users (id integer primary key)`).Error)
|
||||
|
||||
err = AutoMigrate(database)
|
||||
|
||||
require.EqualError(t, err, "cannot rename legacy table senlin_agent_users: target table sa_users already exists")
|
||||
}
|
||||
|
||||
func projectIdentifiers(projects []SaProject) []string {
|
||||
result := make([]string, 0, len(projects))
|
||||
for _, project := range projects {
|
||||
result = append(result, project.Identifier)
|
||||
@@ -78,7 +95,7 @@ func projectIdentifiers(projects []SenlinAgentProject) []string {
|
||||
return result
|
||||
}
|
||||
|
||||
func tagIDs(tags []SenlinAgentTag) []uint {
|
||||
func tagIDs(tags []SaTag) []uint {
|
||||
result := make([]uint, 0, len(tags))
|
||||
for _, tag := range tags {
|
||||
result = append(result, tag.ID)
|
||||
|
||||
Reference in New Issue
Block a user