代码拉取完成,页面将自动刷新
package wrapper
import "strings"
type FField string
func (ff FField) Equal(des FField) bool {
return ff == des
}
type Flag struct {
FInt int `form:"flag" json:"flag"`
}
type Column struct {
Flag
Column string `form:"col" json:"col"`
As string `form:"-" json:"-"`
Desc bool `form:"desc" json:"desc"` //(降序(大=>小)desc, 升序(小=>大)asc
}
func WithColumn(column string) *Column {
return &Column{
Column: column,
}
}
func WithColumns(cols []string) *Column {
c := &Column{}
c.SetColumn(cols)
return c
}
func (col *Column) GetColumn() []string {
return strings.SplitN(col.Column, ",", maxColumns)
}
func (col *Column) SetColumn(cols []string) {
if len(cols) <= 0 {
col.Column = ""
return
}
col.Column = strings.Join(cols, ",")
}
func (col *Column) With(column string) *Column {
col.Column = column
return col
}
func (col *Column) AS(newCol string) *Column {
if newCol == "" {
col.As = col.Column
} else {
col.As = newCol
}
return col
}
func (col *Column) WithFunc(fg int) *Column {
col.FInt = fg
return col
}
func (col *Column) Check(filters []FField) *Column {
var (
filter = func(col string) bool {
for i := range filters {
if filters[i].Equal(FField(col)) {
return true
}
}
return false
}
newCol []string
)
cols := col.GetColumn()
for i := range cols {
if filter(cols[i]) {
newCol = append(newCol, cols[i])
}
}
col.SetColumn(newCol)
return col
}
func defColumnConvert(col string) string {
return col
}
type ColumnConvert func(col string) string
func (col *Column) Sql(convert ColumnConvert) string {
if convert == nil {
convert = defColumnConvert
}
builder := strings.Builder{}
fn := SQLFunc(col.FInt)
if len(fn) > 0 {
builder.WriteString(fn)
builder.WriteByte('(')
}
builder.WriteString(convert(col.Column))
if len(fn) > 0 {
builder.WriteByte(')')
}
if len(col.As) > 0 {
builder.WriteString(" AS ")
builder.WriteString(col.As)
}
return builder.String()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。