From 675e973bf8e0e24593552f596eb3d81e57e19c94 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sat, 19 Sep 2015 15:12:48 +0200 Subject: Elaborate package search and package version search pages --- brep/package | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'brep/package') diff --git a/brep/package b/brep/package index c383b82..75920c4 100644 --- a/brep/package +++ b/brep/package @@ -463,7 +463,6 @@ namespace brep struct max_package_version { using version_type = brep::version; - version_type version; void @@ -480,10 +479,33 @@ namespace brep get() set(_id (std::move (?))) }; - #pragma db view object(package) - struct package_count + #pragma db view object(package_version = version) \ + object(package_version = v: \ + version::id.data.package == v::id.data.package && \ + (version::id.data.epoch < v::id.data.epoch || \ + (version::id.data.epoch == v::id.data.epoch && \ + (version::id.data.canonical_upstream < \ + v::id.data.canonical_upstream || \ + (version::id.data.canonical_upstream == \ + v::id.data.canonical_upstream && \ + version::id.data.revision < v::id.data.revision))))) \ + object(package inner: version::id.data.package == package::name && \ + version::internal_repository.is_not_null () && \ + v::id.data.package.is_null ()) + struct internal_package { - #pragma db column("count(*)") + using package_type = brep::package; + std::shared_ptr package; + std::shared_ptr version; + }; + + #pragma db view object(package) \ + object(package_version: package_version::id.data.package == \ + package::name) \ + query(package_version::internal_repository.is_not_null () && (?)) + struct internal_package_count + { + #pragma db column("count(DISTINCT" + package::name + ")") std::size_t count; }; -- cgit v1.1