package model

import (
	"gorm.io/gorm"

	"github.com/pingcap-inc/clinic/pkg/db"
)

var components = map[string]any{
	"tidb":    &db.TiDBDefaultConfiguration{},
	"pd":      &db.PDDefaultConfiguration{},
	"tikv":    &db.TiKVDefaultConfiguration{},
	"tiflash": &db.TiFlashDefaultConfiguration{},
}

func GetDefaultConfigurations(version string) (map[string][]db.DefaultConfiguration, error) {
	var (
		values = make(map[string][]db.DefaultConfiguration)
		err    error
	)

	err = db.Transaction(func(tx *gorm.DB) error {
		for com, comType := range components {
			var configurations []db.DefaultConfiguration
			if err := tx.Model(comType).Where("version = ?", version).Find(&configurations).Error; err != nil {
				return err
			}
			values[com] = configurations
		}

		return nil
	})

	return values, err
}
