From 09e6142f935020801547dfcb8bba0046e1287569 Mon Sep 17 00:00:00 2001 From: mgdigital Date: Sat, 13 Jan 2024 13:36:17 +0000 Subject: [PATCH] Fix search ordering (#104) --- internal/database/query/options.go | 5 +++-- internal/database/query/query.go | 13 ++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/internal/database/query/options.go b/internal/database/query/options.go index ef0b6796..7a91e897 100644 --- a/internal/database/query/options.go +++ b/internal/database/query/options.go @@ -145,8 +145,9 @@ const queryStringRankField = "query_string_rank" func OrderByQueryStringRank() Option { return func(ctx OptionBuilder) (OptionBuilder, error) { return ctx.OrderBy(clause.OrderByColumn{ - Column: clause.Column{Name: queryStringRankField}, - Desc: true, + Column: clause.Column{Name: queryStringRankField}, + Desc: true, + Reorder: true, }), nil } } diff --git a/internal/database/query/query.go b/internal/database/query/query.go index c235337c..fe4661e9 100644 --- a/internal/database/query/query.go +++ b/internal/database/query/query.go @@ -488,8 +488,19 @@ func applyJoins(sq SubQuery, joins ...TableJoin) { func (b optionBuilder) applyPost(sq SubQuery) error { if len(b.orderBy) > 0 { + orderBy := make([]clause.OrderByColumn, 0, len(b.orderBy)) + for _, ob := range b.orderBy { + if ob.Reorder { + orderBy = append([]clause.OrderByColumn{{ + Column: ob.Column, + Desc: ob.Desc, + }}, orderBy...) + } else { + orderBy = append(orderBy, ob) + } + } sq.UnderlyingDB().Statement.AddClause(clause.OrderBy{ - Columns: b.orderBy, + Columns: orderBy, }) } if b.limit.Valid {