added repo filter

This commit is contained in:
2023-12-15 19:53:45 +01:00
parent 32ba980a2e
commit a6b116198a

16
api.go
View File

@@ -9,6 +9,7 @@ import (
"somegit.dev/ALHP/ALHP.GO/ent/dbpackage" "somegit.dev/ALHP/ALHP.GO/ent/dbpackage"
"somegit.dev/ALHP/ALHP.GO/ent/predicate" "somegit.dev/ALHP/ALHP.GO/ent/predicate"
"strconv" "strconv"
"strings"
"time" "time"
) )
@@ -26,6 +27,7 @@ type StatsResponse struct {
type ThinPackage struct { type ThinPackage struct {
Pkgbase string `json:"pkgbase"` Pkgbase string `json:"pkgbase"`
Repo string `json:"repo"`
SplitPackages []string `json:"split_packages"` SplitPackages []string `json:"split_packages"`
Status dbpackage.Status `json:"status"` Status dbpackage.Status `json:"status"`
SkipReason string `json:"skip_reason"` SkipReason string `json:"skip_reason"`
@@ -99,6 +101,7 @@ func GetPackages(w http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
pkgbase := r.URL.Query().Get("pkgbase") pkgbase := r.URL.Query().Get("pkgbase")
status := r.URL.Query().Get("status") status := r.URL.Query().Get("status")
repo := r.URL.Query().Get("repo")
offset, err := strconv.Atoi(r.URL.Query().Get("offset")) offset, err := strconv.Atoi(r.URL.Query().Get("offset"))
if err != nil { if err != nil {
@@ -124,6 +127,13 @@ func GetPackages(w http.ResponseWriter, r *http.Request) {
constraints = append(constraints, dbpackage.StatusEQ(dbpackage.Status(status))) constraints = append(constraints, dbpackage.StatusEQ(dbpackage.Status(status)))
} }
if repo != "" {
before, after, found := strings.Cut(repo, "-")
if found {
constraints = append(constraints, dbpackage.And(dbpackage.MarchEQ(after), dbpackage.RepositoryEQ(dbpackage.Repository(before))))
}
}
nPkgs, err := db.DBPackage.Query().Where(constraints...).Count(ctx) nPkgs, err := db.DBPackage.Query().Where(constraints...).Count(ctx)
if err != nil { if err != nil {
log.Warningf("error getting package count from db: %v", err) log.Warningf("error getting package count from db: %v", err)
@@ -131,6 +141,11 @@ func GetPackages(w http.ResponseWriter, r *http.Request) {
return return
} }
if nPkgs == 0 {
w.WriteHeader(http.StatusNotFound)
return
}
rPackages, err := db.DBPackage.Query().Where(constraints...).Limit(limit).Offset(offset).All(ctx) rPackages, err := db.DBPackage.Query().Where(constraints...).Limit(limit).Offset(offset).All(ctx)
if err != nil { if err != nil {
log.Warningf("error getting packages from db: %v", err) log.Warningf("error getting packages from db: %v", err)
@@ -142,6 +157,7 @@ func GetPackages(w http.ResponseWriter, r *http.Request) {
for _, mPkg := range rPackages { for _, mPkg := range rPackages {
nPkg := &ThinPackage{ nPkg := &ThinPackage{
Pkgbase: mPkg.Pkgbase, Pkgbase: mPkg.Pkgbase,
Repo: mPkg.Repository.String() + "-" + mPkg.March,
SplitPackages: mPkg.Packages, SplitPackages: mPkg.Packages,
Status: mPkg.Status, Status: mPkg.Status,
SkipReason: mPkg.SkipReason, SkipReason: mPkg.SkipReason,