support OrderClauses for QuerySeter
This commit is contained in:
@@ -8,9 +8,21 @@ const (
|
||||
SortDescending Sort = 2
|
||||
)
|
||||
|
||||
type OrderOption func(order *Order)
|
||||
|
||||
type Order struct {
|
||||
column string
|
||||
sort Sort
|
||||
isRaw bool
|
||||
}
|
||||
|
||||
func OrderClause(options ...OrderOption) *Order {
|
||||
o := &Order{}
|
||||
for _, option := range options {
|
||||
option(o)
|
||||
}
|
||||
|
||||
return o
|
||||
}
|
||||
|
||||
func (o *Order) GetColumn() string {
|
||||
@@ -21,6 +33,10 @@ func (o *Order) GetSort() Sort {
|
||||
return o.sort
|
||||
}
|
||||
|
||||
func (o *Order) IsRaw() bool {
|
||||
return o.isRaw
|
||||
}
|
||||
|
||||
func ParseOrder(expressions ...string) []*Order {
|
||||
var orders []*Order
|
||||
for _, expression := range expressions {
|
||||
@@ -39,3 +55,21 @@ func ParseOrder(expressions ...string) []*Order {
|
||||
|
||||
return orders
|
||||
}
|
||||
|
||||
func OrderColumn(column string) OrderOption {
|
||||
return func(order *Order) {
|
||||
order.column = column
|
||||
}
|
||||
}
|
||||
|
||||
func OrderSort(sort Sort) OrderOption {
|
||||
return func(order *Order) {
|
||||
order.sort = sort
|
||||
}
|
||||
}
|
||||
|
||||
func OrderRaw(isRaw bool) OrderOption {
|
||||
return func(order *Order) {
|
||||
order.isRaw = isRaw
|
||||
}
|
||||
}
|
||||
|
||||
29
client/orm/structs/clauses/order_test.go
Normal file
29
client/orm/structs/clauses/order_test.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package clauses
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestOrderClause(t *testing.T) {
|
||||
var (
|
||||
column = `a`
|
||||
sort = SortDescending
|
||||
raw = true
|
||||
)
|
||||
|
||||
o := OrderClause(
|
||||
OrderColumn(column),
|
||||
OrderSort(sort),
|
||||
OrderRaw(raw),
|
||||
)
|
||||
|
||||
if o.GetColumn() != column {
|
||||
t.Error()
|
||||
}
|
||||
|
||||
if o.GetSort() != sort {
|
||||
t.Error()
|
||||
}
|
||||
|
||||
if o.IsRaw() != raw {
|
||||
t.Error()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user