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) {
}
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))
}