aboutsummaryrefslogtreecommitdiff
path: root/brep/package
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-09-19 15:12:48 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-09-24 11:23:38 +0200
commit675e973bf8e0e24593552f596eb3d81e57e19c94 (patch)
treed9d8c5d85287e6c7b727ef0f71215a31d4d32632 /brep/package
parenta64dad6a0a6f6893bbb6eed7065485c1965ff70b (diff)
Elaborate package search and package version search pages
Diffstat (limited to 'brep/package')
-rw-r--r--brep/package30
1 files changed, 26 insertions, 4 deletions
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_type> package;
+ std::shared_ptr<package_version> 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;
};