代码拉取完成,页面将自动刷新
package wrapper
import (
"fmt"
"strings"
)
const (
kDesc = "DESC"
kAsc = "ASC"
maxColumns = 6
)
// OrderBy 排序(降序(大=>小)desc, 升序(小=>大)asc
// example: "orderBy:[{"col:"create_at","desc":true}, {"col":"id","desc":false}]
//
// "orderBy:[{"col:"create_at,id","desc":true}]
type OrderBy []*Column
func (ob OrderBy) Check(filters []FField) {
length := len(ob)
if length > maxColumns { //防止多
length = maxColumns
}
cols := ob[:length]
for i := range cols {
cols[i].Check(filters)
}
}
func (ob OrderBy) sqlCol(col *Column, convert ColumnConvert) string {
if len(col.Column) > 0 && col.Desc {
return fmt.Sprintf("%s %s", convert(col.Column), kDesc)
}
return convert(col.Column)
}
func (ob OrderBy) Sql(full bool, convert ColumnConvert) string {
if convert == nil {
convert = defColumnConvert
}
count := 0
builder := strings.Builder{}
for i := range ob {
if count >= maxColumns {
//后面不要接入
break
}
c := ob.sqlCol(ob[i], convert)
if len(c) == 0 {
continue
}
if count == 0 && full {
builder.WriteString(" ORDER BY ")
}
if count > 0 {
builder.WriteByte(',')
}
builder.WriteString(c)
count++
}
return builder.String()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。