diff --git a/api.go b/api.go index 1dd4538..8f2d8be 100644 --- a/api.go +++ b/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,