This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
backend/internal/db/sort.go

29 lines
544 B
Go

package db
import (
"strings"
"github.com/go-pg/pg/v10/orm"
)
type Sort struct {
Relationships map[string]string
Orders []string
}
func (s Sort) Apply(q *orm.Query) (*orm.Query, error) {
for _, order := range s.Orders {
if alias := s.extractAlias(order); alias != "" && s.Relationships[alias] != "" {
q = q.Relation(s.Relationships[alias])
}
}
return q.Order(s.Orders...), nil
}
func (s Sort) extractAlias(order string) string {
if strings.Contains(order, ".") {
return strings.Split(order, ".")[0]
}
return ""
}