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 {