package transactional_operation

import (
	"database/sql"
	"strings"
	"validate/dbctrl"
	"validate/util"
)

var GlobalVariableWhiteList = []*dbctrl.GlobalVariables{
	{Name: "datadir"},
	{Name: "port"},
	{Name: "socket"},
	{Name: "tidb_config"},
}

func IsVariableInWhiteList(config *dbctrl.GlobalVariables) bool {
	for _, c := range GlobalVariableWhiteList {
		if 0 == strings.Compare(c.Name, config.Name) {
			return true
		}
	}

	return false
}

func GetGlobalVariableList(db *sql.DB) (variables []*dbctrl.GlobalVariables, err error) {
	tx, err := db.Begin()
	if err != nil {
		return nil, err
	}
	defer func() {
		commitErr := tx.Commit()
		if commitErr != nil {
			util.Logger.Fatalf("failed to COMMIT transaction, " + commitErr.Error())
		}
	}()

	return dbctrl.GetGlobalVariableList(tx)
}
