Skip to content

Commit 76458bf

Browse files
committed
sanitize Sort.String output
1 parent dfb0f24 commit 76458bf

1 file changed

Lines changed: 26 additions & 16 deletions

File tree

page.go

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,31 @@ type Sort struct {
2828
Order Order
2929
}
3030

31+
func (s Sort) sanitize(columnFunc func(string) string) Sort {
32+
s.Column = strings.TrimSpace(s.Column)
33+
if s.Column != "" {
34+
if columnFunc != nil {
35+
s.Column = columnFunc(s.Column)
36+
}
37+
s.Column = pgx.Identifier(strings.Split(s.Column, ".")).Sanitize()
38+
}
39+
40+
switch strings.ToUpper(strings.TrimSpace(string(s.Order))) {
41+
case string(Desc):
42+
s.Order = Desc
43+
case string(Asc):
44+
s.Order = Asc
45+
default:
46+
s.Order = Asc
47+
}
48+
return s
49+
}
50+
3151
func (s Sort) String() string {
52+
s = s.sanitize(nil)
53+
if s.Column == "" {
54+
return ""
55+
}
3256
return fmt.Sprintf("%s %s", s.Column, s.Order)
3357
}
3458

@@ -109,21 +133,7 @@ func (p *Page) GetOrder(columnFunc func(string) string, defaultSort ...string) [
109133
}
110134

111135
for i := range sorts {
112-
s := &sorts[i]
113-
s.Column = strings.TrimSpace(s.Column)
114-
if columnFunc != nil {
115-
s.Column = columnFunc(s.Column)
116-
}
117-
s.Column = pgx.Identifier(strings.Split(s.Column, ".")).Sanitize()
118-
119-
switch strings.ToUpper(strings.TrimSpace(string(s.Order))) {
120-
case string(Desc):
121-
s.Order = Desc
122-
case string(Asc):
123-
s.Order = Asc
124-
default:
125-
s.Order = Asc
126-
}
136+
sorts[i] = sorts[i].sanitize(columnFunc)
127137
}
128138
return sorts
129139
}
@@ -219,7 +229,7 @@ func (p Paginator[T]) getOrder(page *Page) []string {
219229
sort := page.GetOrder(p.settings.ColumnFunc, p.settings.Sort...)
220230
list := make([]string, len(sort))
221231
for i := range sort {
222-
list[i] = sort[i].String()
232+
list[i] = fmt.Sprintf("%s %s", sort[i].Column, sort[i].Order)
223233
}
224234
return list
225235
}

0 commit comments

Comments
 (0)