From b06ebdb3c2bae922752cdbbe338fbe03f7492469 Mon Sep 17 00:00:00 2001 From: Leigh MacDonald Date: Sun, 12 Nov 2023 07:53:24 -0700 Subject: [PATCH] Fix demo queries --- Dockerfile | 2 +- Makefile | 2 +- docs/INSTALL.md | 2 +- frontend/package.json | 2 +- internal/store/demo.go | 23 ++++++++++++++++++++++- 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 558bae020..b10624dbb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ FROM alpine:latest LABEL maintainer="Leigh MacDonald " LABEL org.opencontainers.image.source="https://github.com/leighmacdonald/gbans" -LABEL org.opencontainers.image.version="v0.5.0" +LABEL org.opencontainers.image.version="v0.5.1" LABEL org.opencontainers.image.licenses="MIT" LABEL org.opencontainers.image.description="Centralized community backend for Team Fortress 2" diff --git a/Makefile b/Makefile index de0344648..55d28a2fc 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: all test clean build install frontend sourcemod BRANCH := $(shell git rev-parse --abbrev-ref HEAD) TAGGED_IMAGE = ghcr.io/leighmacdonald/gbans:$(BRANCH) -VERSION=v0.5.0 +VERSION=v0.5.1 GO_CMD=go GO_BUILD=$(GO_CMD) build GO_FLAGS = -trimpath -ldflags="-s -w -X github.com/leighmacdonald/gbans/internal/app.BuildVersion=$(VERSION)" diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 0a98bb161..b16458817 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -58,7 +58,7 @@ sudo docker run -d --restart unless-stopped \ --dns=1.1.1.1 \ -v /home/ubuntu/gbans/gbans.yml:/app/gbans.yml:ro \ --name gbans \ - ghcr.io/leighmacdonald/gbans:v0.5.0 + ghcr.io/leighmacdonald/gbans:v0.5.1 ``` Substitute `master` for a specific tag if desired, and `/home/ubuntu/gbans/gbans.yml` with the location of your config. diff --git a/frontend/package.json b/frontend/package.json index 5e738789c..121298c25 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "gbans", - "version": "0.5.0", + "version": "0.5.1", "description": "gbans", "main": "src/index.tsx", "repository": "github.com/leighmacdonald/gbans", diff --git a/internal/store/demo.go b/internal/store/demo.go index 119d37631..618bfade1 100644 --- a/internal/store/demo.go +++ b/internal/store/demo.go @@ -2,6 +2,7 @@ package store import ( "context" + "fmt" "strings" "time" @@ -128,6 +129,18 @@ func (db *Store) GetDemos(ctx context.Context, opts DemoFilter) ([]DemoFile, int constraints = append(constraints, sq.Expr("stats ?? ?", sid64.String())) } + orderBy := "demo_id" + if opts.OrderBy != "" { + orderBy = opts.OrderBy + } + + order := "ASC" + if opts.Desc { + order = "DESC" + } + + builder = builder.OrderBy(fmt.Sprintf("d.%s %s", orderBy, order)) + if len(opts.ServerIds) > 0 && opts.ServerIds[0] != 0 { anyServer := false @@ -144,7 +157,15 @@ func (db *Store) GetDemos(ctx context.Context, opts DemoFilter) ([]DemoFile, int } } - query, args, errQueryArgs := builder.Where(constraints).ToSql() + var limit uint64 + + if opts.Limit <= 0 || opts.Limit > 100 { + limit = 50 + } else { + limit = opts.Limit + } + + query, args, errQueryArgs := builder.Limit(limit).Offset(opts.Offset).Where(constraints).ToSql() if errQueryArgs != nil { return nil, 0, Err(errQueryArgs) }