Skip to content

Commit

Permalink
Merge pull request #129 from Quaver/es-sort-by
Browse files Browse the repository at this point in the history
Mapset search sort by
  • Loading branch information
Swan authored Nov 18, 2024
2 parents 5b377cf + d72a379 commit 55fdeba
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion db/elasticsearch_mapsets.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ type ElasticMapsetSearchOptions struct {
ModeArray []enums.GameMode `form:"mode[]" json:"mode[]"`
Page int `form:"page" json:"page"`
Limit int `form:"limit" json:"limit"`
SortBy string `form:"sort_by" json:"sort_by"`
SortOrder string `form:"sort_order" json:"sort_order"`

MinDifficultyRating float64 `form:"min_difficulty_rating" json:"min_difficulty_rating"`
MaxDifficultyRating float64 `form:"max_difficulty_rating" json:"max_difficulty_rating"`
Expand Down Expand Up @@ -67,6 +69,8 @@ func NewElasticMapsetSearchOptions() *ElasticMapsetSearchOptions {
MinLastUpdated: 0,
MaxLastUpdated: math.MaxInt64,
Explicit: false,
SortBy: "date_last_updated",
SortOrder: "desc",
}
}

Expand Down Expand Up @@ -349,7 +353,27 @@ func SearchElasticMapsets(options *ElasticMapsetSearchOptions) ([]*Mapset, int,
boolQuery.BoolQuery.Must = append(boolQuery.BoolQuery.Must, explicitTerm)
}

validSortFields := map[string]bool{
"length": true,
"difficulty_rating": true,
"max_combo": true,
"play_count": true,
"bpm": true,
"long_note_percentage": true,
"date_submitted": true,
"date_last_updated": true,
}

sort := "date_last_updated"
sortOrder := "desc"

if options.SortBy != "" && validSortFields[options.SortBy] {
sort = options.SortBy
}

if options.SortOrder == "asc" || options.SortOrder == "desc" {
sortOrder = options.SortOrder
}

if options.IsClanRanked {
clanRankedTerm := TermCustom{}
Expand Down Expand Up @@ -377,7 +401,7 @@ func SearchElasticMapsets(options *ElasticMapsetSearchOptions) ([]*Mapset, int,
Query: boolQuery,
Sort: []map[string]SortOrder{
{"_score": {Order: "desc"}},
{sort: {Order: "desc"}},
{sort: {Order: sortOrder}},
},
Aggs: map[string]interface{}{
"distinct_mapset_ids": map[string]interface{}{
Expand Down

0 comments on commit 55fdeba

Please sign in to comment.