added repo filter
This commit is contained in:
16
api.go
16
api.go
@@ -9,6 +9,7 @@ import (
|
||||
"somegit.dev/ALHP/ALHP.GO/ent/dbpackage"
|
||||
"somegit.dev/ALHP/ALHP.GO/ent/predicate"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
@@ -26,6 +27,7 @@ type StatsResponse struct {
|
||||
|
||||
type ThinPackage struct {
|
||||
Pkgbase string `json:"pkgbase"`
|
||||
Repo string `json:"repo"`
|
||||
SplitPackages []string `json:"split_packages"`
|
||||
Status dbpackage.Status `json:"status"`
|
||||
SkipReason string `json:"skip_reason"`
|
||||
@@ -99,6 +101,7 @@ func GetPackages(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
pkgbase := r.URL.Query().Get("pkgbase")
|
||||
status := r.URL.Query().Get("status")
|
||||
repo := r.URL.Query().Get("repo")
|
||||
|
||||
offset, err := strconv.Atoi(r.URL.Query().Get("offset"))
|
||||
if err != nil {
|
||||
@@ -124,6 +127,13 @@ func GetPackages(w http.ResponseWriter, r *http.Request) {
|
||||
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)
|
||||
if err != nil {
|
||||
log.Warningf("error getting package count from db: %v", err)
|
||||
@@ -131,6 +141,11 @@ func GetPackages(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
if nPkgs == 0 {
|
||||
w.WriteHeader(http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
rPackages, err := db.DBPackage.Query().Where(constraints...).Limit(limit).Offset(offset).All(ctx)
|
||||
if err != nil {
|
||||
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 {
|
||||
nPkg := &ThinPackage{
|
||||
Pkgbase: mPkg.Pkgbase,
|
||||
Repo: mPkg.Repository.String() + "-" + mPkg.March,
|
||||
SplitPackages: mPkg.Packages,
|
||||
Status: mPkg.Status,
|
||||
SkipReason: mPkg.SkipReason,
|
||||
|
Reference in New Issue
Block a user