feat: add sort and order params to admin market list

Supports sorting by name, city, date, created, status with asc/desc order.
This commit is contained in:
2026-03-05 15:22:01 +01:00
parent aa7a982caf
commit 10da87735f
2 changed files with 22 additions and 2 deletions

View File

@@ -153,6 +153,8 @@ func ToDetail(m Market) MarketDetail {
type AdminSearchParams struct {
Status string `form:"status"`
Query string `form:"q"`
Sort string `form:"sort"` // name, city, date, created, status
Order string `form:"order"` // asc, desc
Page int `form:"page"`
PerPage int `form:"per_page"`
}

View File

@@ -474,13 +474,31 @@ func (r *pgRepository) AdminSearch(ctx context.Context, params AdminSearchParams
offsetArg := nextArg()
args = append(args, params.PerPage, params.Offset())
orderCol := "m.created_at"
switch params.Sort {
case "name":
orderCol = "m.name"
case "city":
orderCol = "m.city"
case "date":
orderCol = "m.start_date"
case "created":
orderCol = "m.created_at"
case "status":
orderCol = "m.status"
}
orderDir := "DESC"
if params.Order == "asc" {
orderDir = "ASC"
}
dataQuery := fmt.Sprintf(`
SELECT %s
FROM markets m
%s
ORDER BY m.created_at DESC
ORDER BY %s %s
LIMIT %s OFFSET %s
`, selectFullColumns, where, limitArg, offsetArg)
`, selectFullColumns, where, orderCol, orderDir, limitArg, offsetArg)
rows, err := r.db.Query(ctx, dataQuery, args...)
if err != nil {