package migrate

import (
	opmod "github.com/tidbcloud/devops/models/operation"

	"gorm.io/gorm"
)

// migration for operation tables
var _ = AddMigrateRecord(
	"202511071400",
	func(db *gorm.DB) error {
		err := db.AutoMigrate(&opmod.OperationInstanceToTargetMapping{})
		if err != nil {
			return err
		}

		// migrate cluster, tenant, project mappings to the new table
		migrateSQLs := []string{
			`INSERT IGNORE INTO operation_instance_to_target_mappings (instance_id, target_type, target_id)
SELECT
    instance_id,
    'cluster' AS target_type,
    cluster_id AS target_id
FROM
    operation_instance_to_cluster;
			`,

			`INSERT IGNORE INTO operation_instance_to_target_mappings (instance_id, target_type, target_id)
SELECT
    instance_id,
    'tenant' AS target_type,
    tenant_id AS target_id
FROM
    operation_instance_to_tenant;
	`,

			`INSERT IGNORE INTO operation_instance_to_target_mappings (instance_id, target_type, target_id)
SELECT
    instance_id,
    'project' AS target_type,
    project_id AS target_id
FROM
    operation_instance_to_project;`,
		}

		for _, sql := range migrateSQLs {
			if err := db.Exec(sql).Error; err != nil {
				return err
			}
		}

		return nil
	},
)
