package migration

import (
	"gorm.io/gorm"

	"github.com/tidbcloud/tidb-management-service/nextgen-global-service/infra/repoimpl/schema"
)

var _ = AddDBMigrateRecord(
	"202510100001",
	func(db *gorm.DB) error {
		return db.Transaction(func(tx *gorm.DB) error {
			// Create ResourcePool and ResourcePoolStrategy tables
			if err := tx.AutoMigrate(&schema.ResourcePool{}); err != nil {
				return err
			}
			if err := tx.AutoMigrate(&schema.ResourcePoolStrategy{}); err != nil {
				return err
			}

			sql1 := `
        ALTER TABLE resource_pool_strategies
        ADD COLUMN unique_check INT AS (
            CASE
                WHEN deleted_at IS NULL THEN 1
                ELSE NULL
            END
        ) VIRTUAL;`
			err := tx.Exec(sql1).Error
			if err != nil {
				return err
			}

			sql2 := `
        ALTER TABLE resource_pool_strategies
        ADD CONSTRAINT UQ_ACTIVE_STRATEGY UNIQUE (
            organization_id,
            provider_id,
            region_id,
            unique_check
        );`
			err = tx.Exec(sql2).Error
			if err != nil {
				return err
			}
			return nil
		})
	},
)
