37 lines
645 B
Go
37 lines
645 B
Go
package dao
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
"yintai-api/base/global"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func getDB(db ...*gorm.DB) *gorm.DB {
|
|
if len(db) > 0 {
|
|
return db[0]
|
|
}
|
|
|
|
return global.GetDB()
|
|
}
|
|
|
|
var sortCol = regexp.MustCompile(`^[A-Za-z_][A-Za-z0-9_]*$`)
|
|
|
|
func ezSort(a string) string {
|
|
items := strings.Split(a, ",")
|
|
parts := make([]string, 0, len(items))
|
|
for _, item := range items {
|
|
s := strings.Fields(item)
|
|
if len(s) != 2 || !sortCol.MatchString(s[0]) {
|
|
return ""
|
|
}
|
|
dir := strings.ToUpper(s[1])
|
|
if dir != "ASC" && dir != "DESC" {
|
|
return ""
|
|
}
|
|
parts = append(parts, "`"+s[0]+"` "+dir)
|
|
}
|
|
return strings.Join(parts, ",")
|
|
}
|