diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-09-19 15:12:48 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-09-24 11:23:38 +0200 |
commit | 675e973bf8e0e24593552f596eb3d81e57e19c94 (patch) | |
tree | d9d8c5d85287e6c7b727ef0f71215a31d4d32632 /brep/package | |
parent | a64dad6a0a6f6893bbb6eed7065485c1965ff70b (diff) |
Elaborate package search and package version search pages
Diffstat (limited to 'brep/package')
-rw-r--r-- | brep/package | 30 |
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; }; |