From d47149cf36e330aa946f21a718f767a82e14ee02 Mon Sep 17 00:00:00 2001 From: Arthur Zamarin Date: Mon, 13 May 2024 14:06:12 +0300 Subject: add eapi 6 overview page under "/packages/eapi6" Signed-off-by: Arthur Zamarin --- pkg/app/handler/packages/eapi.templ | 112 ++++++++++++++++++++++++++++++++ pkg/app/handler/packages/overview.templ | 26 ++++---- pkg/app/serve.go | 1 + 3 files changed, 128 insertions(+), 11 deletions(-) create mode 100644 pkg/app/handler/packages/eapi.templ diff --git a/pkg/app/handler/packages/eapi.templ b/pkg/app/handler/packages/eapi.templ new file mode 100644 index 0000000..c076f96 --- /dev/null +++ b/pkg/app/handler/packages/eapi.templ @@ -0,0 +1,112 @@ +package packages + +import "net/http" +import "strconv" +import "soko/pkg/database" +import "soko/pkg/models" +import "soko/pkg/app/handler/categories" + +type eapiPackage struct { + Category string + Package string + Version string + Maintainers []*models.Maintainer + ReverseDependencies uint64 + Bugs uint64 + IsMasked bool + IsRedundant bool + HasStable bool +} + +templ eapiOverview(packages []eapiPackage) { +
+
+
+

+ EAPI 6 Overview +

+ + + + + + + + + + + for _, pkg := range packages { + + + + + + + } + +
VersionRev-depsBugsMaintainers
+ + { pkg.Category + "/" + pkg.Package }{ "-" + pkg.Version } + + if pkg.IsMasked { + M + } else if pkg.IsRedundant { + R + } else if pkg.HasStable { + S + } + + + { strconv.FormatUint(pkg.ReverseDependencies, 10) } + + + + { strconv.FormatUint(pkg.Bugs, 10) } + + + if len(pkg.Maintainers) > 0 { + @maintainersList(pkg.Maintainers) + } else { + Maintainer-needed + } +
+
+
+
+} + +func Eapi(w http.ResponseWriter, r *http.Request) { + var result []eapiPackage + err := database.DBCon.Model((*models.Version)(nil)). + Column("version.category", "version.package", "version.version"). + ColumnExpr("(?) AS maintainers", + database.DBCon.Model((*models.Package)(nil)). + Column("maintainers"). + Where("atom = version.atom"). + Limit(1)). + Join("LEFT JOIN reverse_dependencies").JoinOn("version.atom = reverse_dependencies.atom"). + ColumnExpr("COALESCE(COUNT(DISTINCT reverse_dependencies.reverse_dependency_atom),0) AS reverse_dependencies"). + Join("LEFT JOIN package_to_bugs").JoinOn("version.atom = package_to_bugs.package_atom"). + ColumnExpr("COALESCE(COUNT(DISTINCT package_to_bugs.id),0) AS bugs"). + ColumnExpr("EXISTS(?) AS is_masked", + database.DBCon.Model((*models.MaskToVersion)(nil)). + ColumnExpr("1"). + Where("version_id = version.id")). + ColumnExpr("EXISTS(?) AS is_redundant", + database.DBCon.Model((*models.PkgCheckResult)(nil)). + ColumnExpr("1"). + Where("cpv = version.id").Where("class = ?", "RedundantVersion")). + ColumnExpr("EXISTS(?) AS has_stable", + database.DBCon.Model((*models.PkgCheckResult)(nil)). + ColumnExpr("1"). + Where("atom = version.atom").Where("class = ?", "StableRequest")). + Where("version.eapi = ?", "6"). + Group("version.id"). + Order("version.atom"). + Select(&result) + if err != nil { + http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) + return + } + categories.RenderPage(w, r, "EAPI 6 Overview", "EAPI", eapiOverview(result)) +} diff --git a/pkg/app/handler/packages/overview.templ b/pkg/app/handler/packages/overview.templ index cd6985c..0e18082 100644 --- a/pkg/app/handler/packages/overview.templ +++ b/pkg/app/handler/packages/overview.templ @@ -119,6 +119,20 @@ templ overviewVersions(pkg *models.Package) { } +templ maintainersList(maintainers []*models.Maintainer) { + for i, maintainer := range maintainers { + if i > 0 { + ,  + } + + { maintainer.PrintName() } + + + + + } +} + templ overview(pkg *models.Package, userPreferences *models.UserPreferences) {
@@ -372,17 +386,7 @@ templ overview(pkg *models.Package, userPreferences *models.UserPreferences) { Maintainer(s)
- for i, maintainer := range pkg.Maintainers { - if i > 0 { - ,  - } - - { maintainer.PrintName() } - - - - - } + @maintainersList(pkg.Maintainers)
diff --git a/pkg/app/serve.go b/pkg/app/serve.go index b54d4f2..7e627ad 100644 --- a/pkg/app/serve.go +++ b/pkg/app/serve.go @@ -86,6 +86,7 @@ func Serve() { setRoute("GET /maintainer/{email}/stabilization.xml", maintainer.ShowStabilizationFile) setRoute("GET /maintainer/{email}/stabilization.atom", maintainer.ShowStabilizationFeed) + setRoute("GET /packages/eapi6", packages.Eapi) setRoute("GET /packages/search", packages.Search) setRoute("GET /packages/suggest.json", packages.Suggest) setRoute("GET /packages/resolve.json", packages.Resolve) -- cgit v1.2.3-65-gdbad