contracts/support/orm/orderBy.go

37 lines
774 B
Go

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())
}