package migrate

import (
	"fmt"

	mod "github.com/tidbcloud/devops/models"

	"gorm.io/gorm"
)

// migration for incident todo action model repair.
var _ = AddMigrateRecord(
	"202605181400",
	func(db *gorm.DB) error {
		if err := db.AutoMigrate(&mod.IncidentPostMortemToDoAction{}); err != nil {
			return err
		}

		table := mod.IncidentPostMortemToDoAction{}.TableName()
		sql := fmt.Sprintf("ALTER TABLE %s MODIFY COLUMN description varchar(2000) DEFAULT NULL", table)
		if err := db.Exec(sql).Error; err != nil {
			return fmt.Errorf("execute sql [%s] failed: %w", sql, err)
		}

		const incidentIDIndex = "idx_incident_postmortem_todoaction_incident_id"
		if !db.Migrator().HasIndex(&mod.IncidentPostMortemToDoAction{}, incidentIDIndex) {
			sql = fmt.Sprintf("CREATE INDEX %s ON %s (incident_id)", incidentIDIndex, table)
			if err := db.Exec(sql).Error; err != nil {
				return fmt.Errorf("execute sql [%s] failed: %w", sql, err)
			}
		}
		return nil
	},
)
