aboutsummaryrefslogtreecommitdiff
path: root/bpkg/package
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-09-22 13:41:54 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-09-22 13:41:54 +0200
commit738050f2a71b2f0d094a692cc48c94653b82287f (patch)
tree874b79e5017be0aefde4f9427ecf6fc95cbe36be /bpkg/package
parent221f0250fcd7cba4fa4b5e4fd6c0d410eb6e5811 (diff)
Implement rep-fetch command
Diffstat (limited to 'bpkg/package')
-rw-r--r--bpkg/package32
1 files changed, 30 insertions, 2 deletions
diff --git a/bpkg/package b/bpkg/package
index 1c2a420..34d917e 100644
--- a/bpkg/package
+++ b/bpkg/package
@@ -9,8 +9,6 @@
#include <vector>
#include <cstdint> // uint16
#include <ostream>
-#include <utility> // move()
-#include <cstdint> // uint16
#include <odb/core.hxx>
@@ -99,6 +97,15 @@ namespace bpkg
complements_type complements;
prerequisites_type prerequisites;
+ const string&
+ name () const {return location.canonical_name ();}
+
+ // Used to detect recursive fecthing. Will probably be replaced
+ // by the 'repositories' file timestamp or hashsum later.
+ //
+ #pragma db transient
+ bool fetched = false;
+
public:
explicit
repository (repository_location l): location (move (l)) {}
@@ -134,6 +141,13 @@ namespace bpkg
repository () = default;
};
+ #pragma db view object(repository) query(repository::id.name != "" && (?))
+ struct repository_count
+ {
+ #pragma db column("count(" + repository::id.name + ")")
+ size_t result;
+ };
+
// package_version_id
//
#pragma db value
@@ -144,6 +158,13 @@ namespace bpkg
string upstream; // Canonical upstream.
std::uint16_t revision;
+ package_version_id () = default;
+ package_version_id (string n, const version& v)
+ : name (move (n)),
+ epoch (v.epoch ()),
+ upstream (v.canonical_upstream ()),
+ revision (v.revision ()) {}
+
#pragma db member(epoch) column("version_epoch")
#pragma db member(upstream) column("version_upstream")
#pragma db member(revision) column("version_revision")
@@ -215,6 +236,13 @@ namespace bpkg
available_package () = default;
};
+ #pragma db view object(available_package)
+ struct available_package_count
+ {
+ #pragma db column("count(" + available_package::id.data.name + ")")
+ size_t result;
+ };
+
// state
//
enum class state