mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Adding rankingSorter interface
This commit is contained in:
@@ -96,3 +96,42 @@ type Ranking struct {
|
||||
metricIDs utils.StringSet // convert the metricIDs here for faster matching
|
||||
|
||||
}
|
||||
|
||||
type rankingSorter interface {
|
||||
sortStatIDs() []string // sortStatIDs returns the sorted list of statIDs
|
||||
}
|
||||
|
||||
// rankingSortStats will return the list of sorted statIDs out of the sortingData map
|
||||
func rankingSortStats(sortingType string, sortingParams []string, statMetrics map[string]map[string]float64) (sortedStatIDs []string, err error) {
|
||||
var rnkSrtr rankingSorter
|
||||
if rnkSrtr, err = newRankingSorter(sortingType, sortingParams, statMetrics); err != nil {
|
||||
return
|
||||
}
|
||||
return rnkSrtr.sortStatIDs(), nil
|
||||
}
|
||||
|
||||
// newRankingSorter is the constructor for various ranking sorters
|
||||
//
|
||||
// returns error if the sortingType is not implemented
|
||||
func newRankingSorter(sortingType string, sortingParams []string,
|
||||
statMetrics map[string]map[string]float64) (rkStr rankingSorter, err error) {
|
||||
switch sortingType {
|
||||
default:
|
||||
err = utils.ErrPrefixNotErrNotImplemented(sortingType)
|
||||
return
|
||||
case utils.MetaDescending:
|
||||
return &rankingDescSorter{sortingParams, statMetrics}, nil
|
||||
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// rankingDescSorter will sort data descendently for metrics in sortingParams or randomly if all equal
|
||||
type rankingDescSorter struct {
|
||||
sortingParams []string
|
||||
statMetrics map[string]map[string]float64
|
||||
}
|
||||
|
||||
func (rkDsrtr *rankingDescSorter) sortStatIDs() (statIDs []string) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1017,6 +1017,8 @@ const (
|
||||
MetaSessionsBackup = "*sessions_backup"
|
||||
MetaLoadIDs = "*load_ids"
|
||||
MetaNodeID = "*node_id"
|
||||
MetaAscending = "*ascending"
|
||||
MetaDescending = "*descending"
|
||||
)
|
||||
|
||||
// MetaMetrics
|
||||
|
||||
Reference in New Issue
Block a user