mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 08:49:13 +00:00
fix(releases): search with postgres (#1181)
* fix(releases): search with postgres * fix: validate release push status from filters * fix: add missing import * fix: validate push status if not empty
This commit is contained in:
parent
faaec5625a
commit
06b864da4d
3 changed files with 29 additions and 1 deletions
|
@ -200,7 +200,9 @@ func (repo *ReleaseRepo) findReleases(ctx context.Context, tx *Tx, params domain
|
||||||
|
|
||||||
if params.Filters.PushStatus != "" {
|
if params.Filters.PushStatus != "" {
|
||||||
subQueryBuilder = subQueryBuilder.InnerJoin("release_action_status ras ON r.id = ras.release_id").Where(sq.Eq{"ras.status": params.Filters.PushStatus})
|
subQueryBuilder = subQueryBuilder.InnerJoin("release_action_status ras ON r.id = ras.release_id").Where(sq.Eq{"ras.status": params.Filters.PushStatus})
|
||||||
countQuery = countQuery.InnerJoin("release_action_status ras ON r.id = ras.release_id").Where(sq.Eq{"ras.status": params.Filters.PushStatus})
|
|
||||||
|
// using sq.Eq for countQuery breaks search with Postgres.
|
||||||
|
countQuery = countQuery.InnerJoin("release_action_status ras ON r.id = ras.release_id").Where("ras.status = '" + params.Filters.PushStatus + `'`)
|
||||||
}
|
}
|
||||||
|
|
||||||
subQuery, subArgs, err := subQueryBuilder.ToSql()
|
subQuery, subArgs, err := subQueryBuilder.ToSql()
|
||||||
|
|
|
@ -176,6 +176,21 @@ func (r ReleasePushStatus) String() string {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ValidReleasePushStatus(s string) bool {
|
||||||
|
switch s {
|
||||||
|
case string(ReleasePushStatusPending):
|
||||||
|
return true
|
||||||
|
case string(ReleasePushStatusApproved):
|
||||||
|
return true
|
||||||
|
case string(ReleasePushStatusRejected):
|
||||||
|
return true
|
||||||
|
case string(ReleasePushStatusErr):
|
||||||
|
return true
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type ReleaseFilterStatus string
|
type ReleaseFilterStatus string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -5,6 +5,7 @@ package http
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -97,6 +98,16 @@ func (h releaseHandler) findReleases(w http.ResponseWriter, r *http.Request) {
|
||||||
indexer := vals["indexer"]
|
indexer := vals["indexer"]
|
||||||
|
|
||||||
pushStatus := r.URL.Query().Get("push_status")
|
pushStatus := r.URL.Query().Get("push_status")
|
||||||
|
if pushStatus != "" {
|
||||||
|
if !domain.ValidReleasePushStatus(pushStatus) {
|
||||||
|
h.encoder.StatusResponse(w, http.StatusBadRequest, map[string]interface{}{
|
||||||
|
"code": "BAD_REQUEST_PARAMS",
|
||||||
|
"message": fmt.Sprintf("push_status parameter is of invalid type: %v", pushStatus),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
search := r.URL.Query().Get("q")
|
search := r.URL.Query().Get("q")
|
||||||
|
|
||||||
query := domain.ReleaseQueryParams{
|
query := domain.ReleaseQueryParams{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue