Search: fix PostgreSQL query (#45305)

* Search: fix PostgreSQL query

* Apply suggestion from code review
This commit is contained in:
Sofia Papagiannaki 2022-02-23 14:36:37 +02:00 committed by GitHub
parent ef3f254208
commit 5a1d8cbea7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -115,15 +115,31 @@ func (b *Builder) applyFilters() (ordering string) {
b.params = append(b.params, whereParams...)
}
if len(groups) > 0 {
b.sql.WriteString(fmt.Sprintf(" GROUP BY %s", strings.Join(groups, ", ")))
b.params = append(b.params, groupParams...)
}
if len(orders) < 1 {
orders = append(orders, TitleSorter{}.OrderBy())
}
if len(groups) > 0 {
cols := make([]string, 0, len(orders)+len(groups))
for _, o := range orders {
o := strings.TrimSuffix(o, " DESC")
o = strings.TrimSuffix(o, " ASC")
exists := false
for _, g := range groups {
if g == o {
exists = true
break
}
}
if !exists {
cols = append(cols, o)
}
}
cols = append(cols, groups...)
b.sql.WriteString(fmt.Sprintf(" GROUP BY %s", strings.Join(cols, ", ")))
b.params = append(b.params, groupParams...)
}
orderBy := fmt.Sprintf(" ORDER BY %s", strings.Join(orders, ", "))
b.sql.WriteString(orderBy)