package migrate

import (
	"time"

	engmodel "github.com/tidbcloud/aisupport/services/ticket-manager/models/engineer"

	"gorm.io/gorm"
)

var _ = addRecord("202607101300", cleanupLegacyEngineerSchema)

type legacyEngineer struct {
	Name           string    `gorm:"column:name"`
	SourceActive   bool      `gorm:"column:source_active"`
	SourceSyncedAt time.Time `gorm:"column:source_synced_at"`
}

func (legacyEngineer) TableName() string {
	return "engineer_engineers"
}

func cleanupLegacyEngineerSchema(db *gorm.DB) error {
	if db.Migrator().HasTable("engineer_group_memberships") {
		if err := db.Migrator().DropTable("engineer_group_memberships"); err != nil {
			return err
		}
	}
	if db.Migrator().HasIndex(&engmodel.Engineer{}, "idx_engineer_eligibility") {
		if err := db.Migrator().DropIndex(&engmodel.Engineer{}, "idx_engineer_eligibility"); err != nil {
			return err
		}
	}
	for _, column := range []string{"name", "source_active", "source_synced_at"} {
		if db.Migrator().HasColumn(&legacyEngineer{}, column) {
			if err := db.Migrator().DropColumn(&legacyEngineer{}, column); err != nil {
				return err
			}
		}
	}
	if !db.Migrator().HasIndex(&engmodel.Engineer{}, "idx_engineer_eligibility") {
		return db.Migrator().CreateIndex(&engmodel.Engineer{}, "idx_engineer_eligibility")
	}
	return nil
}
