Skip to content

Commit 0d140b4

Browse files
committed
fix: sort order
1 parent b1e95d3 commit 0d140b4

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

api/cosy/sort.go

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,34 @@
11
package cosy
22

33
import (
4-
"fmt"
54
"github.com/0xJacky/Nginx-UI/internal/logger"
65
"gorm.io/gorm"
76
"gorm.io/gorm/schema"
7+
"strings"
88
"sync"
99
)
1010

1111
func (c *Ctx[T]) SortOrder() func(db *gorm.DB) *gorm.DB {
1212
return func(db *gorm.DB) *gorm.DB {
13-
sort := c.ctx.DefaultQuery("order", "desc")
14-
if sort != "desc" && sort != "asc" {
15-
sort = "desc"
13+
order := c.ctx.DefaultQuery("order", "desc")
14+
if order != "desc" && order != "asc" {
15+
order = "desc"
1616
}
1717

18-
order := c.itemKey
19-
if value, ok := c.ctx.Get("order"); ok {
20-
// check if the order field is valid
21-
// todo: maybe we can use more generic way to check if the sort_by is valid
22-
s, _ := schema.Parse(c.Model, &sync.Map{}, schema.NamingStrategy{})
23-
if _, ok := s.FieldsByDBName[value.(string)]; ok {
24-
order = value.(string)
25-
} else {
26-
logger.Error("invalid order field:", order)
27-
}
28-
} else if value, ok := c.ctx.Get("sort_by"); ok {
29-
order = value.(string)
18+
sortBy := c.ctx.DefaultQuery("sort_by", c.itemKey)
19+
20+
s, _ := schema.Parse(c.Model, &sync.Map{}, schema.NamingStrategy{})
21+
if _, ok := s.FieldsByDBName[sortBy]; !ok && sortBy != c.itemKey {
22+
logger.Error("invalid order field:", sortBy)
23+
return db
3024
}
3125

32-
order = fmt.Sprintf("%s %s", order, sort)
33-
return db.Order(order)
26+
var sb strings.Builder
27+
sb.WriteString(sortBy)
28+
sb.WriteString(" ")
29+
sb.WriteString(order)
30+
31+
return db.Order(sb.String())
3432
}
3533
}
3634

0 commit comments

Comments
 (0)