package migrate

import (
	"gorm.io/gorm"

	"github.com/tidbcloud/tidb-management-service/serverless-global-service/infra/persistence/model"
)

var _ = AddDBMigrateRecord(
	"2026081701",
	func(db *gorm.DB) error {
		return db.Transaction(func(tx *gorm.DB) error {
			if err := tx.AutoMigrate(&model.Cluster{}); err != nil {
				return err
			}

			if err := tx.AutoMigrate(&model.Region{}); err != nil {
				return err
			}

			var indexCount int64
			if err := tx.Raw(
				"SELECT COUNT(1) FROM information_schema.statistics WHERE table_schema = DATABASE() AND table_name = ? AND index_name = ?",
				"regions",
				"idx_name_provider_service_plan",
			).Scan(&indexCount).Error; err != nil {
				return err
			}

			if indexCount > 0 {
				if err := tx.Exec("ALTER TABLE regions DROP INDEX idx_name_provider_service_plan").Error; err != nil {
					return err
				}
			}

			return tx.Exec(
				"ALTER TABLE regions ADD UNIQUE KEY idx_name_provider_service_plan_engine_type (name, provider_id, service_plan, engine_type)",
			).Error
		})
	},
)
