Fix test
This commit is contained in:
parent
cf658a940c
commit
2623c1b73f
|
@ -14,7 +14,7 @@ import (
|
|||
"xorm.io/xorm/schemas"
|
||||
)
|
||||
|
||||
func (statement *Statement) writeDeleteOrder(w builder.Writer) error {
|
||||
func (statement *Statement) writeDeleteOrder(w *builder.BytesWriter) error {
|
||||
if err := statement.writeOrderBys(w); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -10,6 +10,12 @@ import (
|
|||
"xorm.io/builder"
|
||||
)
|
||||
|
||||
type orderBy struct {
|
||||
orderStr interface{}
|
||||
orderArgs []interface{}
|
||||
direction string // ASC, DESC or "", "" means raw orderStr
|
||||
}
|
||||
|
||||
func (statement *Statement) HasOrderBy() bool {
|
||||
return len(statement.orderBy) > 0
|
||||
}
|
||||
|
@ -19,27 +25,34 @@ func (statement *Statement) ResetOrderBy() {
|
|||
statement.orderBy = []orderBy{}
|
||||
}
|
||||
|
||||
func (statement *Statement) writeOrderBy(w builder.Writer, orderBy orderBy) error {
|
||||
func (statement *Statement) writeOrderBy(w *builder.BytesWriter, orderBy orderBy) error {
|
||||
switch t := orderBy.orderStr.(type) {
|
||||
case (*builder.Expression):
|
||||
if _, err := fmt.Fprint(w, statement.ReplaceQuote(t.Content())); err != nil {
|
||||
if _, err := fmt.Fprint(w.Builder, statement.dialect.Quoter().Replace(t.Content())); err != nil {
|
||||
return err
|
||||
}
|
||||
w.Append(t.Args()...)
|
||||
return nil
|
||||
case string:
|
||||
if _, err := fmt.Fprint(w, statement.dialect.Quoter().Quote(t)); err != nil {
|
||||
if orderBy.direction == "" {
|
||||
if _, err := fmt.Fprint(w.Builder, statement.dialect.Quoter().Replace(t)); err != nil {
|
||||
return err
|
||||
}
|
||||
w.Append(orderBy.orderArgs...)
|
||||
return nil
|
||||
}
|
||||
if err := statement.dialect.Quoter().QuoteTo(w.Builder, t); err != nil {
|
||||
return err
|
||||
}
|
||||
_, err := fmt.Fprint(w, " ", orderBy.direction)
|
||||
return err
|
||||
default:
|
||||
return ErrUnSupportedSQLType
|
||||
}
|
||||
}
|
||||
|
||||
// WriteOrderBy write order by to writer
|
||||
func (statement *Statement) writeOrderBys(w builder.Writer) error {
|
||||
func (statement *Statement) writeOrderBys(w *builder.BytesWriter) error {
|
||||
if len(statement.orderBy) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
@ -62,14 +75,14 @@ func (statement *Statement) writeOrderBys(w builder.Writer) error {
|
|||
|
||||
// OrderBy generate "Order By order" statement
|
||||
func (statement *Statement) OrderBy(order interface{}, args ...interface{}) *Statement {
|
||||
statement.orderBy = append(statement.orderBy, orderBy{order, args})
|
||||
statement.orderBy = append(statement.orderBy, orderBy{order, args, ""})
|
||||
return statement
|
||||
}
|
||||
|
||||
// Desc generate `ORDER BY xx DESC`
|
||||
func (statement *Statement) Desc(colNames ...string) *Statement {
|
||||
for _, colName := range colNames {
|
||||
statement.orderBy = append(statement.orderBy, orderBy{colName + " DESC", nil})
|
||||
statement.orderBy = append(statement.orderBy, orderBy{colName, nil, "DESC"})
|
||||
}
|
||||
return statement
|
||||
}
|
||||
|
@ -77,7 +90,7 @@ func (statement *Statement) Desc(colNames ...string) *Statement {
|
|||
// Asc provide asc order by query condition, the input parameters are columns.
|
||||
func (statement *Statement) Asc(colNames ...string) *Statement {
|
||||
for _, colName := range colNames {
|
||||
statement.orderBy = append(statement.orderBy, orderBy{colName + " ASC", nil})
|
||||
statement.orderBy = append(statement.orderBy, orderBy{colName, nil, "ASC"})
|
||||
}
|
||||
return statement
|
||||
}
|
||||
|
|
|
@ -41,11 +41,6 @@ type join struct {
|
|||
args []interface{}
|
||||
}
|
||||
|
||||
type orderBy struct {
|
||||
orderStr interface{}
|
||||
orderArgs []interface{}
|
||||
}
|
||||
|
||||
// Statement save all the sql info for executing SQL
|
||||
type Statement struct {
|
||||
RefTable *schemas.Table
|
||||
|
|
Loading…
Reference in New Issue