package migrate

import (
	"time"

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

	"gorm.io/gorm"
)

var _ = addRecord("202607171100", migrateDispatchTriggerCreatedAt)

type dispatchTriggerWithNullableCreatedAt struct {
	CreatedAt *time.Time `gorm:"column:created_at;type:timestamp"`
}

func (dispatchTriggerWithNullableCreatedAt) TableName() string {
	return "dispatch_triggers"
}

func migrateDispatchTriggerCreatedAt(db *gorm.DB) error {
	legacy := &dispatchTriggerWithNullableCreatedAt{}
	if err := db.AutoMigrate(legacy); err != nil {
		return err
	}
	backfill := func() error {
		return db.Exec("UPDATE dispatch_triggers SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL").Error
	}
	if err := backfill(); err != nil {
		return err
	}
	if err := db.AutoMigrate(&dispatchmodel.DispatchTrigger{}); err != nil {
		return err
	}
	if err := db.Migrator().AlterColumn(&dispatchmodel.DispatchTrigger{}, "CreatedAt"); err != nil {
		return err
	}
	return backfill()
}
