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