package migration

import (
	"gorm.io/gorm"

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

var _ = AddDBMigrateRecord(
	"202407101650",
	func(db *gorm.DB) error {
		if err := db.AutoMigrate(&schema.ClusterCidr{}); err != nil {
			return err
		}

		var clusterCidrs []*schema.ClusterCidr
		err := db.Unscoped().Model(&schema.ClusterCidr{}).Find(&clusterCidrs).Error
		if err != nil {
			return err
		}

		for _, clusterCidr := range clusterCidrs {
			var defaultWorkPool schema.WorkPool
			if err := db.Unscoped().Model(&schema.WorkPool{}).
				Where("cluster_id = ?", clusterCidr.ClusterID).
				Where("`default` = ?", true).
				First(&defaultWorkPool).Error; err != nil {
				return err
			}

			clusterCidr.WorkPoolID = uint64(defaultWorkPool.ID)
			if err := db.Save(clusterCidr).Error; err != nil {
				return err
			}
		}

		return nil
	},
)
