| 1234567891011121314151617181920212223242526272829303132333435363738394041 | package cosyimport (	"github.com/0xJacky/Nginx-UI/internal/logger"	"gorm.io/gorm"	"gorm.io/gorm/schema"	"strings"	"sync")func (c *Ctx[T]) SortOrder() func(db *gorm.DB) *gorm.DB {	return func(db *gorm.DB) *gorm.DB {		order := c.ctx.DefaultQuery("order", "desc")		if order != "desc" && order != "asc" {			order = "desc"		}		sortBy := c.ctx.DefaultQuery("sort_by", c.itemKey)		s, _ := schema.Parse(c.Model, &sync.Map{}, schema.NamingStrategy{})		if _, ok := s.FieldsByDBName[sortBy]; !ok && sortBy != c.itemKey {			logger.Error("invalid order field:", sortBy)			return db		}		var sb strings.Builder		sb.WriteString(sortBy)		sb.WriteString(" ")		sb.WriteString(order)		return db.Order(sb.String())	}}func (c *Ctx[T]) OrderAndPaginate() func(db *gorm.DB) *gorm.DB {	return func(db *gorm.DB) *gorm.DB {		db = c.SortOrder()(db)		_, offset, pageSize := GetPagingParams(c.ctx)		return db.Offset(offset).Limit(pageSize)	}}
 |