diff --git a/engine.go b/engine.go index 81cfc7a9..b40cb272 100644 --- a/engine.go +++ b/engine.go @@ -1006,10 +1006,17 @@ func (engine *Engine) Asc(colNames ...string) *Session { } // OrderBy will generate "ORDER BY order" -func (engine *Engine) OrderBy(order interface{}, args ...interface{}) *Session { +func (engine *Engine) OrderBy(order string) *Session { session := engine.NewSession() session.isAutoClose = true - return session.OrderBy(order, args...) + return session.OrderBy(order) +} + +// OrderByWithArgs will generate "ORDER BY order" +func (engine *Engine) OrderByWithArgs(order interface{}, args ...interface{}) *Session { + session := engine.NewSession() + session.isAutoClose = true + return session.OrderByWithArgs(order, args...) } // Prepare enables prepare statement diff --git a/interface.go b/interface.go index 55ffebe4..b315c3c5 100644 --- a/interface.go +++ b/interface.go @@ -54,7 +54,8 @@ type Interface interface { Nullable(...string) *Session Join(joinOperator string, tablename interface{}, condition string, args ...interface{}) *Session Omit(columns ...string) *Session - OrderBy(order interface{}, args ...interface{}) *Session + OrderBy(order string) *Session + OrderByWithArgs(order interface{}, args ...interface{}) *Session Ping() error Query(sqlOrArgs ...interface{}) (resultsSlice []map[string][]byte, err error) QueryInterface(sqlOrArgs ...interface{}) ([]map[string]interface{}, error) diff --git a/internal/statements/statement.go b/internal/statements/statement.go index 2b81a6b9..b47ef6b1 100644 --- a/internal/statements/statement.go +++ b/internal/statements/statement.go @@ -457,7 +457,12 @@ func (statement *Statement) Limit(limit int, start ...int) *Statement { } // OrderBy generate "Order By order" statement -func (statement *Statement) OrderBy(order interface{}, args ...interface{}) *Statement { +func (statement *Statement) OrderBy(order string) *Statement { + return statement.OrderByWithArgs(order) +} + +// OrderByWithArgs generate "Order By order" statement +func (statement *Statement) OrderByWithArgs(order interface{}, args ...interface{}) *Statement { var rawOrder string switch order.(type) { case (*builder.Builder): diff --git a/session.go b/session.go index 388678cd..1cbf7752 100644 --- a/session.go +++ b/session.go @@ -275,8 +275,15 @@ func (session *Session) Limit(limit int, start ...int) *Session { // OrderBy provide order by query condition, the input parameter is the content // after order by on a sql statement. -func (session *Session) OrderBy(order interface{}, args ...interface{}) *Session { - session.statement.OrderBy(order, args...) +func (session *Session) OrderBy(order string) *Session { + session.statement.OrderBy(order) + return session +} + +// OrderByWithArgs provide order by query condition, the input parameter is the content +// after order by on a sql statement. +func (session *Session) OrderByWithArgs(order interface{}, args ...interface{}) *Session { + session.statement.OrderByWithArgs(order, args...) return session }