From 4fcd32b536f3d29755b1fecc7e3f06be64f996ca Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Sat, 24 Feb 2018 18:21:39 +0300 Subject: Add support for rep-list and rep-remove, update rep-add --- bpkg/package.hxx | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'bpkg/package.hxx') diff --git a/bpkg/package.hxx b/bpkg/package.hxx index 23fe9b2..54efca1 100644 --- a/bpkg/package.hxx +++ b/bpkg/package.hxx @@ -761,6 +761,61 @@ namespace bpkg optional constraint; }; + // Return a list of repositories that depend on this repository as a + // complement. + // + // Note that the last db object pragma is required to produce an object + // loading view. + // + #pragma db view object(repository = complement) \ + table("repository_complements" = "rc" inner: \ + "rc.complement = " + complement::name) \ + object(repository inner: "rc.repository = " + repository::name) + struct repository_complement_dependent + { + shared_ptr object; + + operator const shared_ptr () const {return object;} + }; + + // Return a list of repositories that depend on this repository as a + // prerequisite. + // + // Note that the last db object pragma is required to produce an object + // loading view. + // + #pragma db view object(repository = prerequisite) \ + table("repository_prerequisites" = "rp" inner: \ + "rp.prerequisite = " + prerequisite::name) \ + object(repository inner: "rp.repository = " + repository::name) + struct repository_prerequisite_dependent + { + shared_ptr object; + + operator const shared_ptr () const {return object;} + }; + + // Return a list of packages available from this repository. + // + #pragma db view object(repository) \ + table("available_package_locations" = "pl" inner: \ + "pl.repository = " + repository::name) \ + object(available_package inner: \ + "pl.name = " + available_package::id.name + "AND" + \ + "pl.version_epoch = " + \ + available_package::id.version.epoch + "AND" + \ + "pl.version_canonical_upstream = " + \ + available_package::id.version.canonical_upstream + "AND" + \ + "pl.version_canonical_release = " + \ + available_package::id.version.canonical_release + "AND" + \ + "pl.version_revision = " + \ + available_package::id.version.revision) + struct repository_package + { + shared_ptr object; + + operator const shared_ptr () const {return object;} + }; // Version comparison operators. // -- cgit v1.1