package migrate

import (
	"time"

	dispatchmodel "github.com/tidbcloud/aisupport/services/ticket-manager/models/dispatch"

	"gorm.io/gorm"
)

var _ = addRecord("202607151200", removeDispatchExecutionTriggerFields)

type dispatchExecutionWithTriggerFields struct {
	TriggerID   string    `gorm:"column:trigger_id"`
	TriggerType string    `gorm:"column:trigger_type"`
	TriggeredAt time.Time `gorm:"column:triggered_at"`
}

func (dispatchExecutionWithTriggerFields) TableName() string {
	return "dispatch_executions"
}

func removeDispatchExecutionTriggerFields(db *gorm.DB) error {
	legacy := &dispatchExecutionWithTriggerFields{}
	if db.Migrator().HasIndex(legacy, "idx_dispatch_execution_trigger") {
		if err := db.Migrator().DropIndex(legacy, "idx_dispatch_execution_trigger"); err != nil {
			return err
		}
	}
	for _, column := range []string{"trigger_id", "trigger_type", "triggered_at"} {
		if db.Migrator().HasColumn("dispatch_executions", column) {
			if err := db.Migrator().DropColumn(legacy, column); err != nil {
				return err
			}
		}
	}
	return db.AutoMigrate(&dispatchmodel.Execution{})
}
