package dbutil

import (
	"github.com/tidbcloud/metrics-server/central/db/entity"
	"gorm.io/gorm"
)

func CreateMonitorDataMigrationCfg(tx *gorm.DB, cfgKey, cfgValue string) (*entity.MonitorDataMigrationCfg, error) {
	item := entity.MonitorDataMigrationCfg{
		CfgKey:   cfgKey,
		CfgValue: cfgValue,
	}

	err := tx.Create(&item).Error

	return &item, err
}

func DeleteMonitorDataMigrationCfgByCfgKey(tx *gorm.DB, cfgKey string) error {
	return entity.NewMonitorDataMigrationCfgQuerySet(tx).CfgKeyEq(cfgKey).Delete()
}

func GetAllMonitorDataMigrationCfg(tx *gorm.DB) ([]entity.MonitorDataMigrationCfg, error) {
	var cfgs []entity.MonitorDataMigrationCfg

	err := entity.NewMonitorDataMigrationCfgQuerySet(tx).OrderAscByCreatedAt().All(&cfgs)

	if err != nil {
		return nil, err
	}

	return cfgs, err
}

func GetMonitorDataMigrationCfgByCfgKey(tx *gorm.DB, cfgKey string) (*entity.MonitorDataMigrationCfg, error) {
	var cfg entity.MonitorDataMigrationCfg

	err := entity.NewMonitorDataMigrationCfgQuerySet(tx).CfgKeyEq(cfgKey).One(&cfg)

	if err != nil {
		return nil, err
	}

	return &cfg, err
}
