refactor: enhance sorting logic in GetSortsFromString function

- Replaced JSON unmarshalling with string parsing to handle sorting parameters more flexibly.
- Improved handling of sorting direction by allowing both ascending and descending specifications through prefixes.
- Enhanced code readability and maintainability by simplifying the sorting logic and removing unnecessary error handling.
This commit is contained in:
Marvin Zhang
2025-03-27 11:55:22 +08:00
parent f86173c973
commit 65d344a21e

View File

@@ -191,8 +191,31 @@ func GetSortsFromString(sortStr string) (sorts []entity.Sort, err error) {
if sortStr == "" {
return nil, nil
}
if err := json.Unmarshal([]byte(sortStr), &sorts); err != nil {
return nil, err
parts := strings.Split(sortStr, ",")
for _, part := range parts {
trimmed := strings.TrimSpace(part)
if trimmed == "" {
continue
}
if !strings.HasPrefix(trimmed, "-") {
key := strings.TrimLeft(trimmed, "+")
sorts = append(sorts, entity.Sort{
Key: key,
Direction: constants.DESCENDING,
})
} else if strings.HasPrefix(trimmed, "+") {
key := strings.TrimLeft(trimmed, "+")
sorts = append(sorts, entity.Sort{
Key: key,
Direction: constants.ASCENDING,
})
} else {
key := strings.TrimLeft(trimmed, "-")
sorts = append(sorts, entity.Sort{
Key: key,
Direction: constants.ASCENDING,
})
}
}
return sorts, nil
}