aboutsummaryrefslogtreecommitdiff
path: root/libbrep/package.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'libbrep/package.hxx')
-rw-r--r--libbrep/package.hxx137
1 files changed, 92 insertions, 45 deletions
diff --git a/libbrep/package.hxx b/libbrep/package.hxx
index 76c5836..79b2c68 100644
--- a/libbrep/package.hxx
+++ b/libbrep/package.hxx
@@ -18,9 +18,9 @@
// Used by the data migration entries.
//
-#define LIBBREP_PACKAGE_SCHEMA_VERSION_BASE 27
+#define LIBBREP_PACKAGE_SCHEMA_VERSION_BASE 34
-#pragma db model version(LIBBREP_PACKAGE_SCHEMA_VERSION_BASE, 34, closed)
+#pragma db model version(LIBBREP_PACKAGE_SCHEMA_VERSION_BASE, 35, closed)
namespace brep
{
@@ -224,9 +224,8 @@ namespace brep
// certificate
//
#pragma db value
- class certificate
+ struct certificate
{
- public:
string fingerprint; // SHA256 fingerprint. Note: foreign-mapped in build.
string name; // CN component of Subject.
string organization; // O component of Subject.
@@ -536,6 +535,35 @@ namespace brep
#pragma db member(package_build_bot_key_key::outer) column("config_index")
#pragma db member(package_build_bot_key_key::inner) column("index")
+ // Number of the passed and failed reviews and the path to the
+ // reviews.manifest file this information comes form. The path is relative
+ // to the root of the package metadata directory.
+ //
+ #pragma db value
+ struct reviews_summary
+ {
+ // May not be both zero.
+ //
+ size_t pass;
+ size_t fail;
+
+ path manifest_file;
+ };
+
+ inline bool
+ operator== (const reviews_summary& x, const reviews_summary& y)
+ {
+ return x.pass == y.pass &&
+ x.fail == y.fail &&
+ x.manifest_file == y.manifest_file;
+ }
+
+ inline bool
+ operator!= (const reviews_summary& x, const reviews_summary& y)
+ {
+ return !(x == y);
+ }
+
// Tweak package_id mapping to include a constraint (this only affects the
// database schema).
//
@@ -589,6 +617,7 @@ namespace brep
build_auxiliaries_type,
package_build_bot_keys,
package_build_configs,
+ optional<reviews_summary>,
optional<path> location,
optional<string> fragment,
optional<string> sha256sum,
@@ -691,6 +720,9 @@ namespace brep
//
odb::section build_section;
+ optional<reviews_summary> reviews;
+ odb::section reviews_section;
+
// Note that it is foreign-mapped in build.
//
lazy_shared_ptr<repository_type> internal_repository;
@@ -870,54 +902,55 @@ namespace brep
#pragma db member(build_configs) id_column("") value_column("config_") \
section(build_section)
- #pragma db member(build_config_builds) \
- virtual(build_class_exprs_map) \
- after(build_configs) \
- get(odb::nested_get ( \
- brep::build_package_config_builds (this.build_configs))) \
- set(brep::build_package_config_builds bs; \
- odb::nested_set (bs, std::move (?)); \
- move (bs).to_configs (this.build_configs)) \
- id_column("") key_column("") value_column("") \
+ #pragma db member(build_config_builds) \
+ virtual(build_class_exprs_map) \
+ after(build_configs) \
+ get(odb::nested_get (this.build_configs, \
+ &brep::package_build_config::builds)) \
+ set(odb::nested_set (this.build_configs, \
+ &brep::package_build_config::builds, \
+ std::move (?))) \
+ id_column("") key_column("") value_column("") \
section(build_section)
- #pragma db member(build_config_constraints) \
- virtual(build_constraints_map) \
- after(build_config_builds) \
- get(odb::nested_get ( \
- brep::build_package_config_constraints (this.build_configs))) \
- set(brep::build_package_config_constraints cs; \
- odb::nested_set (cs, std::move (?)); \
- move (cs).to_configs (this.build_configs)) \
- id_column("") key_column("") value_column("") \
+ #pragma db member(build_config_constraints) \
+ virtual(build_constraints_map) \
+ after(build_config_builds) \
+ get(odb::nested_get (this.build_configs, \
+ &brep::package_build_config::constraints)) \
+ set(odb::nested_set (this.build_configs, \
+ &brep::package_build_config::constraints, \
+ std::move (?))) \
+ id_column("") key_column("") value_column("") \
section(build_section)
- #pragma db member(build_config_auxiliaries) \
- virtual(build_auxiliaries_map) \
- after(build_config_constraints) \
- get(odb::nested_get ( \
- brep::build_package_config_auxiliaries (this.build_configs))) \
- set(brep::build_package_config_auxiliaries as; \
- odb::nested_set (as, std::move (?)); \
- move (as).to_configs (this.build_configs)) \
- id_column("") key_column("") value_column("") \
+ #pragma db member(build_config_auxiliaries) \
+ virtual(build_auxiliaries_map) \
+ after(build_config_constraints) \
+ get(odb::nested_get (this.build_configs, \
+ &brep::package_build_config::auxiliaries)) \
+ set(odb::nested_set (this.build_configs, \
+ &brep::package_build_config::auxiliaries, \
+ std::move (?))) \
+ id_column("") key_column("") value_column("") \
section(unused_section)
- #pragma db member(build_config_bot_keys) \
- virtual(package_build_bot_keys_map) \
- after(build_config_auxiliaries) \
- get(odb::nested_get ( \
- brep::build_package_config_bot_keys< \
- lazy_shared_ptr<brep::public_key>> (this.build_configs))) \
- set(brep::build_package_config_bot_keys< \
- lazy_shared_ptr<brep::public_key>> bks; \
- odb::nested_set (bks, std::move (?)); \
- move (bks).to_configs (this.build_configs)) \
- id_column("") key_column("") value_column("key_") value_not_null \
+ #pragma db member(build_config_bot_keys) \
+ virtual(package_build_bot_keys_map) \
+ after(build_config_auxiliaries) \
+ get(odb::nested_get (this.build_configs, \
+ &brep::package_build_config::bot_keys)) \
+ set(odb::nested_set (this.build_configs, \
+ &brep::package_build_config::bot_keys, \
+ std::move (?))) \
+ id_column("") key_column("") value_column("key_") value_not_null \
section(unused_section)
- #pragma db member(build_section) load(lazy) update(always)
- #pragma db member(unused_section) load(lazy) update(manual)
+ #pragma db member(reviews) section(reviews_section)
+
+ #pragma db member(build_section) load(lazy) update(always)
+ #pragma db member(reviews_section) load(lazy) update(always)
+ #pragma db member(unused_section) load(lazy) update(manual)
// other_repositories
//
@@ -948,6 +981,20 @@ namespace brep
search_text (const weighted_text&) {}
};
+ // Packages count.
+ //
+ #pragma db view object(package)
+ struct package_count
+ {
+ size_t result;
+
+ operator size_t () const {return result;}
+
+ // Database mapping.
+ //
+ #pragma db member(result) column("count(" + package::id.tenant + ")")
+ };
+
// Package search query matching rank.
//
#pragma db view query("/*CALL*/ SELECT * FROM search_latest_packages(?)")
@@ -974,7 +1021,7 @@ namespace brep
};
#pragma db view query("/*CALL*/ SELECT count(*) FROM search_packages(?)")
- struct package_count
+ struct package_search_count
{
size_t result;