package perfpkg

import (
	"database/sql"
)

type ClusterInfo struct {
	Branch      string
	Version     string
	TidbHash    string
	PdHash      string
	TikvHash    string
	TiflashHash string
}

func GetClusterInformation(db *sql.DB) (*ClusterInfo, error) {
	var info ClusterInfo
	q := "select type, max(version), max(git_hash) from information_schema.cluster_info group by type"
	rows, err := db.Query(q)
	if err != nil {
		return &info, err
	}
	defer rows.Close()
	var nodeType, version, gitHash string
	for rows.Next() {
		if err := rows.Scan(&nodeType, &version, &gitHash); err != nil {
			return &info, err
		}
		switch nodeType {
		case "tidb":
			info.TidbHash = gitHash
		case "tikv":
			info.TikvHash = gitHash
		case "pd":
			info.PdHash = gitHash
		case "tiflash":
			info.TiflashHash = gitHash
		}
	}
	info.Version = version
	return &info, rows.Err()
}
