first commit

This commit is contained in:
kandrusyak
2023-07-14 14:54:41 +03:00
commit 7b03922374
29 changed files with 839 additions and 0 deletions

27
pkg/utils/query.go Normal file
View File

@@ -0,0 +1,27 @@
package utils
import (
"github.com/labstack/echo/v4"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
func ApplySort(tx *gorm.DB, column string, isDesc bool) {
tx.Order(clause.OrderByColumn{
Column: clause.Column{Name: column},
Desc: isDesc,
})
}
func ApplyFilters(tx *gorm.DB, column string, value string) {
if column != "" && value != "" {
tx.Where(column + " LIKE '%" + value + "%'")
}
}
func ApplyIdFilter(c echo.Context, tx *gorm.DB) {
id := c.Param("id")
if id != "" {
tx.Where("id = ?", id)
}
}

52
pkg/utils/url.go Normal file
View File

@@ -0,0 +1,52 @@
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, string, string) {
sort := GetQueryParam(query, "sort", "id:asc")
filter := GetQueryParam(query, "filter", ":")
filters := strings.Split(filter, ":")
sorts := strings.Split(sort, ":")
isDesc := false
if sorts[1] == "desc" {
isDesc = true
}
return sorts[0], isDesc, filters[0], filters[1]
}