Skip to content

Commit 39ff9e2

Browse files
authored
Merge pull request #35 from rizalgowandy/arwego/feat/sortx_v2
Improve Sortx Information
2 parents 8db0efa + 33048e6 commit 39ff9e2

File tree

2 files changed

+45
-15
lines changed

2 files changed

+45
-15
lines changed

pkg/sortx/sortx.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
package sortx
22

3-
import "strings"
3+
import (
4+
"strings"
5+
)
46

57
type (
68
Key string
7-
Order int64
9+
Order string
810
)
911

1012
const (
11-
OrderAscending Order = iota + 1
12-
OrderDescending
13+
OrderAscending Order = "ASC"
14+
OrderDescending Order = "DESC"
1315
)
1416

1517
type Sort struct {
16-
Key Key
17-
Order Order
18+
Key Key
19+
Order Order
20+
Original string
1821
}
1922

2023
// NewSorts create sorting based on
@@ -28,11 +31,12 @@ func NewSorts(qs string) []Sort {
2831
kv := strings.Split(v, ":")
2932

3033
s := Sort{
31-
Key: Key(kv[0]),
32-
Order: OrderAscending,
34+
Key: Key(strings.ToLower(kv[0])),
35+
Order: OrderAscending,
36+
Original: strings.ToLower(v),
3337
}
3438
if len(kv) == 2 {
35-
switch kv[1] {
39+
switch strings.ToLower(kv[1]) {
3640
case "asc":
3741
s.Order = OrderAscending
3842
case "desc":

pkg/sortx/sortx_test.go

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,42 @@ func TestNewSorts(t *testing.T) {
2121
},
2222
want: []Sort{
2323
{
24-
Key: "id",
25-
Order: OrderDescending,
24+
Key: "id",
25+
Order: OrderDescending,
26+
Original: "id:desc",
2627
},
2728
{
28-
Key: "status",
29-
Order: OrderAscending,
29+
Key: "status",
30+
Order: OrderAscending,
31+
Original: "status:asc",
3032
},
3133
{
32-
Key: "created_at",
33-
Order: OrderAscending,
34+
Key: "created_at",
35+
Order: OrderAscending,
36+
Original: "created_at",
37+
},
38+
},
39+
},
40+
{
41+
name: "Success with different case",
42+
args: args{
43+
qs: "ID:DESC,Status:Asc,created_at",
44+
},
45+
want: []Sort{
46+
{
47+
Key: "id",
48+
Order: OrderDescending,
49+
Original: "id:desc",
50+
},
51+
{
52+
Key: "status",
53+
Order: OrderAscending,
54+
Original: "status:asc",
55+
},
56+
{
57+
Key: "created_at",
58+
Order: OrderAscending,
59+
Original: "created_at",
3460
},
3561
},
3662
},

0 commit comments

Comments
 (0)