42 lines
619 B
Go
42 lines
619 B
Go
package clauses
|
|
|
|
type Sort int8
|
|
|
|
const (
|
|
SortNone Sort = 0
|
|
SortAscending Sort = 1
|
|
SortDescending Sort = 2
|
|
)
|
|
|
|
type Order struct {
|
|
column string
|
|
sort Sort
|
|
}
|
|
|
|
func (o *Order) GetColumn() string {
|
|
return o.column
|
|
}
|
|
|
|
func (o *Order) GetSort() Sort {
|
|
return o.sort
|
|
}
|
|
|
|
func ParseOrder(expressions ...string) []*Order {
|
|
var orders []*Order
|
|
for _, expression := range expressions {
|
|
sort := SortAscending
|
|
column := expression
|
|
if expression[0] == '-' {
|
|
sort = SortDescending
|
|
column = expression[1:]
|
|
}
|
|
|
|
orders = append(orders, &Order{
|
|
column: column,
|
|
sort: sort,
|
|
})
|
|
}
|
|
|
|
return orders
|
|
}
|