package migrate

import (
	"gorm.io/gorm"

	opmod "github.com/tidbcloud/devops/models/operation"
)

// migration for approval to add a new type 'operation' and fix old records.
var _ = AddMigrateRecord(
	"202312141400",
	func(db *gorm.DB) error {
		err := db.Exec("ALTER TABLE `approvals` MODIFY COLUMN `type` ENUM('release', 'operation') NOT NULL;").Error
		if err != nil {
			return err
		}

		instances := make([]*opmod.OperationInstance, 0)
		err = db.Model(&opmod.OperationInstance{}).Find(&instances).Error
		if err != nil {
			return err
		}

		ids := make([]uint64, 0)
		for _, ins := range instances {
			if ins.ApprovalID != nil {
				ids = append(ids, *ins.ApprovalID)

			}
		}
		err = db.Exec("UPDATE `approvals` SET `type`='operation' WHERE `id` in ?;", ids).Error
		if err != nil {
			return err
		}

		return nil
	},
)
