aboutsummaryrefslogtreecommitdiff
path: root/brep/package
diff options
context:
space:
mode:
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;
};