package config

import (
	"fmt"
)

// ToClusterMap returns a map from cluster ID to *TargetCluster for quick lookup.
func (targetClusters TargetClusters) ToClusterMap() map[uint64]*TargetCluster {
	m := make(map[uint64]*TargetCluster, len(targetClusters))
	for i := range targetClusters {
		m[targetClusters[i].Id] = &targetClusters[i]
	}
	return m
}

func (targetClusters TargetClusters) GetProjectName(projectID uint64) string {
	for _, targetCluster := range targetClusters {
		if targetCluster.ProjectId == projectID {
			return targetCluster.ProjectName
		}
	}
	return ""
}

func LoadClusterConfigByID(clusterID uint64) (*TargetCluster, error) {
	for _, c := range globalConf.TargetClusters {
		if c.Id == clusterID {
			return &c, nil
		}
	}
	return nil, fmt.Errorf("cluster %d not found in config", clusterID)
}

func VerifyClusterTokenByID(clusterID uint64, token string) bool {
	for _, mapping := range globalConf.PrometheusTokenMappings {
		if mapping.ClusterID == clusterID && mapping.Token == token {
			return true
		}
	}
	return false
}
