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 ``
}
func (o *Order) IsRaw() bool {
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) {
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) {
order.isRaw = isRaw
order.isRaw = true
}
}

View File

@ -5,25 +5,76 @@ 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()
}
func TestOrderSortAscending(t *testing.T) {
o := OrderClause(
OrderSortAscending(),
)
if o.IsRaw() != raw {
if o.GetSort() != SortAscending {
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:
// OrderClauses(clauses.OrderClause(
// clauses.OrderColumn(`status`),
// clauses.OrderSort(clauses.SortAscending),
// clauses.OrderRaw(false),
// clauses.OrderSortAscending(),//default None
// ))
// OrderClauses(clauses.OrderClause(
// clauses.OrderColumn(`user__status`),
// clauses.OrderSort(clauses.SortAscending),
// clauses.OrderRaw(false),
// clauses.OrderSortDescending(),//default None
// ))
// OrderClauses(clauses.OrderClause(
// clauses.OrderColumn(`random()`),
// clauses.OrderSort(clauses.SortNone),
// clauses.OrderRaw(true),
// clauses.OrderSortNone(),//default None
// clauses.OrderRaw(),//default false.if true, do not check field is valid or not
// ))
OrderClauses(orders ...*clauses.Order) QuerySeter
// add FORCE INDEX expression.