Files
astra-events/pkg/utils/url.go
andrusyakka 6752536325 WIP service
2023-07-14 18:39:50 +03:00

62 lines
1.0 KiB
Go

package utils
import (
"net/url"
"strconv"
"strings"
)
func GetQueryParam(query url.Values, key string, defaultVal string) string {
data := query.Get(key)
if data == "" {
return defaultVal
}
return data
}
func GetPaginationParams(query url.Values) (int, int) {
offset := GetQueryParam(query, "offset", "0")
limit := GetQueryParam(query, "limit", "10")
limitInt, err := strconv.Atoi(limit)
if err != nil {
limitInt = 10
}
offsetInt, err := strconv.Atoi(offset)
if err != nil {
offsetInt = 0
}
return limitInt, offsetInt
}
func GetFilterParams(query url.Values) (string, bool, map[string]string) {
sort := GetQueryParam(query, "sort", "id:asc")
filter := GetQueryParam(query, "filter", "")
filtersMap := make(map[string]string)
filters := strings.Split(filter, "|")
sorts := strings.Split(sort, ":")
for _, filter := range filters {
tmp := strings.Split(filter, "=")
if len(tmp) == 2 {
filtersMap[tmp[0]] = tmp[1]
}
}
isDesc := false
if sorts[1] == "desc" {
isDesc = true
}
return sorts[0], isDesc, filtersMap
}