opt Methods

This commit is contained in:
jianzhiyao 2020-10-26 18:57:01 +08:00
parent 7d4e88c1b9
commit d24388ad81
3 changed files with 78 additions and 18 deletions

View File

@ -46,7 +46,6 @@ func (o *Order) SortString() string {
return `` return ``
} }
func (o *Order) IsRaw() bool { func (o *Order) IsRaw() bool {
return o.isRaw return o.isRaw
} }
@ -76,14 +75,26 @@ func OrderColumn(column string) OrderOption {
} }
} }
func OrderSort(sort Sort) OrderOption { func sort(sort Sort) OrderOption {
return func(order *Order) { return func(order *Order) {
order.sort = sort order.sort = sort
} }
} }
func OrderRaw(isRaw bool) OrderOption { func OrderSortAscending() OrderOption {
return sort(SortAscending)
}
func OrderSortDescending() OrderOption {
return sort(SortDescending)
}
func OrderSortNone() OrderOption {
return sort(SortNone)
}
func OrderRaw() OrderOption {
return func(order *Order) { return func(order *Order) {
order.isRaw = isRaw order.isRaw = true
} }
} }

View File

@ -5,25 +5,76 @@ import "testing"
func TestOrderClause(t *testing.T) { func TestOrderClause(t *testing.T) {
var ( var (
column = `a` column = `a`
sort = SortDescending
raw = true
) )
o := OrderClause( o := OrderClause(
OrderColumn(column), OrderColumn(column),
OrderSort(sort),
OrderRaw(raw),
) )
if o.GetColumn() != column { if o.GetColumn() != column {
t.Error() t.Error()
} }
}
if o.GetSort() != sort { func TestOrderSortAscending(t *testing.T) {
t.Error() o := OrderClause(
} OrderSortAscending(),
)
if o.IsRaw() != raw { if o.GetSort() != SortAscending {
t.Error() t.Error()
} }
} }
func TestOrderSortDescending(t *testing.T) {
o := OrderClause(
OrderSortDescending(),
)
if o.GetSort() != SortDescending {
t.Error()
}
}
func TestOrderSortNone(t *testing.T) {
o1 := OrderClause(
OrderSortNone(),
)
if o1.GetSort() != SortNone {
t.Error()
}
o2 := OrderClause()
if o2.GetSort() != SortNone {
t.Error()
}
}
func TestOrderRaw(t *testing.T) {
o1 := OrderClause()
if o1.IsRaw() {
t.Error()
}
o2 := OrderClause(
OrderRaw(),
)
if !o2.IsRaw() {
t.Error()
}
}
func TestOrderColumn(t *testing.T) {
o1 := OrderClause(
OrderColumn(`aaa`),
)
if o1.GetColumn() != `aaa` {
t.Error()
}
}

View File

@ -294,18 +294,16 @@ type QuerySeter interface {
// for example: // for example:
// OrderClauses(clauses.OrderClause( // OrderClauses(clauses.OrderClause(
// clauses.OrderColumn(`status`), // clauses.OrderColumn(`status`),
// clauses.OrderSort(clauses.SortAscending), // clauses.OrderSortAscending(),//default None
// clauses.OrderRaw(false),
// )) // ))
// OrderClauses(clauses.OrderClause( // OrderClauses(clauses.OrderClause(
// clauses.OrderColumn(`user__status`), // clauses.OrderColumn(`user__status`),
// clauses.OrderSort(clauses.SortAscending), // clauses.OrderSortDescending(),//default None
// clauses.OrderRaw(false),
// )) // ))
// OrderClauses(clauses.OrderClause( // OrderClauses(clauses.OrderClause(
// clauses.OrderColumn(`random()`), // clauses.OrderColumn(`random()`),
// clauses.OrderSort(clauses.SortNone), // clauses.OrderSortNone(),//default None
// clauses.OrderRaw(true), // clauses.OrderRaw(),//default false.if true, do not check field is valid or not
// )) // ))
OrderClauses(orders ...*clauses.Order) QuerySeter OrderClauses(orders ...*clauses.Order) QuerySeter
// add FORCE INDEX expression. // add FORCE INDEX expression.