package migrate

import (
	"fmt"

	"github.com/tidbcloud/aisupport/services/jsm-syncer/models"

	"gorm.io/gorm"
)

const systemUserEmailPattern = "%-system@pingcap.com"

var _ = addRecord("202607301200", deleteSystemUsers)

func deleteSystemUsers(db *gorm.DB) error {
	return db.Transaction(func(tx *gorm.DB) error {
		systemUserIDs := tx.Model(&models.TiDBCloudUser{}).
			Select("id").
			Where("LOWER(TRIM(email)) LIKE ?", systemUserEmailPattern)

		if err := tx.Where("user_id IN (?)", systemUserIDs).
			Delete(&models.TiDBCloudLakeMembership{}).Error; err != nil {
			return fmt.Errorf("delete system user lake memberships: %w", err)
		}

		if err := tx.Where("user_id IN (?)", systemUserIDs).
			Delete(&models.TiDBCloudOrgMembership{}).Error; err != nil {
			return fmt.Errorf("delete system user org memberships: %w", err)
		}

		if err := tx.Where("LOWER(TRIM(email)) LIKE ?", systemUserEmailPattern).
			Delete(&models.TiDBCloudUser{}).Error; err != nil {
			return fmt.Errorf("delete system users: %w", err)
		}

		return nil
	})
}
