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
+12 -10
View File
@@ -55,16 +55,7 @@ func migrateAlertV2(db *gorm.DB) error {
if err := migrateAlertV2UniqueKey(db); err != nil {
return err
}
return migrateQueryIndexes(db, []businessQueryIndex{
{"sys_alert_record", "idx_alert_owner_status_time", []string{"business_id", "status", "created_at", "id"}},
{"sys_alert_record", "idx_alert_channel_type_time", []string{"platform_code", "target_promote_id", "rule_type", "created_at", "id"}},
{"sys_alert_record", "idx_alert_owner_time", []string{"business_id", "created_at", "id"}},
{"sys_alert_record", "idx_alert_created", []string{"created_at", "id"}},
{"sys_alert_operation_log", "idx_alert_log_time", []string{"alert_id", "created_at", "id"}},
{"tab_spend", "idx_alert_spend_window", []string{"source_db", "promote_id", "pay_status", "pay_time", "pay_amount"}},
{"tab_user", "idx_alert_user_window", []string{"source_db", "promote_id", "sw_register_time_unix", "puid"}},
{"tab_promote", "idx_alert_promote_tree", []string{"source_db", "top_promote_id", "id"}},
})
return migrateQueryIndexes(db, alertV2QueryIndexes)
}
func migrateAlertV2UniqueKey(db *gorm.DB) error {
@@ -131,3 +122,14 @@ func migrateAlertV2UniqueKey(db *gorm.DB) error {
}
return db.Exec("ALTER TABLE sys_alert_record " + strings.Join(clauses, ", ") + ", ALGORITHM=INPLACE, LOCK=NONE").Error
}
var alertV2QueryIndexes = []businessQueryIndex{
{"sys_alert_record", "idx_alert_owner_status_time", []string{"business_id", "status", "created_at", "id"}},
{"sys_alert_record", "idx_alert_channel_type_time", []string{"platform_code", "target_promote_id", "rule_type", "created_at", "id"}},
{"sys_alert_record", "idx_alert_owner_time", []string{"business_id", "created_at", "id"}},
{"sys_alert_record", "idx_alert_created", []string{"created_at", "id"}},
{"sys_alert_operation_log", "idx_alert_log_time", []string{"alert_id", "created_at", "id"}},
{"tab_spend", "idx_alert_spend_window", []string{"source_db", "promote_id", "pay_status", "pay_time", "pay_amount"}},
{"tab_user", "idx_alert_user_window", []string{"source_db", "promote_id", "sw_register_time_unix", "puid"}},
{"tab_promote", "idx_alert_promote_tree", []string{"source_db", "top_promote_id", "id"}},
}