[feat] 新增 NewOrderBy 方法

This commit is contained in:
输入äwhat 2023-04-16 22:01:48 +08:00
parent 1deaa426d2
commit a02c41c650
3 changed files with 36 additions and 0 deletions

36
support/orm/orderBy.go Normal file
View File

@ -0,0 +1,36 @@
package orm
import (
"git.fsdpf.net/go/contracts"
"git.fsdpf.net/go/db"
)
type OrderByDirection string
type OrderByType string
const (
OrderByDirection_ASC OrderByDirection = db.ORDER_ASC
OrderByDirection_DESC OrderByDirection = db.ORDER_DESC
)
type OrderBy struct {
sql string // SQL 或 字段
direction OrderByDirection // 排序方向
}
func NewOrderBy(sql string, params ...OrderByDirection) contracts.OrderBy {
direction := OrderByDirection_ASC
if len(params) > 0 {
direction = params[0]
}
return OrderBy{sql, direction}
}
func (this OrderBy) ToSql() db.Expression {
return db.Raw(this.sql + " " + string(this.direction))
}
func (this OrderBy) Inject(dbBuilder *db.Builder, m contracts.Model) {
dbBuilder.OrderBy(this.ToSql())
}