package migrate

import (
	"github.com/pingcap/log"
	"go.uber.org/zap"
	"gorm.io/gorm"
)

// Add 'deleting' state to dm_vpc_endpoints.state enum
var _ = AddDBMigrateRecord(
	"202510271100",
	func(db *gorm.DB) error {
		if err := db.Exec("ALTER TABLE `dm_vpc_endpoints` MODIFY COLUMN `state` enum('pending','pendingAcceptance','available','deleting','failed','deleted') NULL").Error; err != nil {
			log.Error("failed to add 'deleting' state to dm_vpc_endpoints.state", zap.Error(err))
			return err
		}

		// A null task ID was previously used for backward compatibility. Since the worker now only handles empty string task IDs,
		// we need to manually replace all null values with either a valid task ID (if bound to a task) or an empty string (for orphaned records).
		if err := db.Exec("ALTER TABLE `dm_vpc_endpoints` ADD COLUMN `dm_task_id` varchar(255) NULL DEFAULT NULL").Error; err != nil {
			log.Error("failed to add dm_task_id column to dm_vpc_endpoints", zap.Error(err))
			return err
		}
		return nil
	},
)
