@@ -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+
3151func (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