From c8c0645e9a3dd0c09cdf422a04d153530a9febbb Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 16 May 2024 18:04:49 +0300 Subject: Make changes required for CI --- bpkg/package-odb.hxx | 6023 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6023 insertions(+) create mode 100644 bpkg/package-odb.hxx (limited to 'bpkg/package-odb.hxx') diff --git a/bpkg/package-odb.hxx b/bpkg/package-odb.hxx new file mode 100644 index 0000000..1055829 --- /dev/null +++ b/bpkg/package-odb.hxx @@ -0,0 +1,6023 @@ +// -*- C++ -*- +// +// This file was generated by ODB, object-relational mapping (ORM) +// compiler for C++. +// + +#ifndef BPKG_PACKAGE_ODB_HXX +#define BPKG_PACKAGE_ODB_HXX + +// Begin prologue. +// +#include +#include +#include +#include +// +// End prologue. + +#include + +#if ODB_VERSION != 20476UL +#error ODB runtime version mismatch +#endif + +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace odb +{ + // configuration + // + template <> + struct class_traits< ::bpkg::configuration > + { + static const class_kind kind = class_object; + }; + + template <> + class access::object_traits< ::bpkg::configuration > + { + public: + typedef ::bpkg::configuration object_type; + typedef ::std::shared_ptr< ::bpkg::configuration > pointer_type; + typedef odb::pointer_traits pointer_traits; + + static const bool polymorphic = false; + + typedef ::bpkg::optional_uint64_t id_type; + + static const bool auto_id = true; + + static const bool abstract = false; + + static id_type + id (const object_type&); + + typedef + no_op_pointer_cache_traits + pointer_cache_traits; + + typedef + no_op_reference_cache_traits + reference_cache_traits; + + static void + callback (database&, object_type&, callback_event); + + static void + callback (database&, const object_type&, callback_event); + }; + + // repository_fragment + // + template <> + struct class_traits< ::bpkg::repository_fragment > + { + static const class_kind kind = class_object; + }; + + template <> + class access::object_traits< ::bpkg::repository_fragment > + { + public: + typedef ::bpkg::repository_fragment object_type; + typedef ::std::shared_ptr< ::bpkg::repository_fragment > pointer_type; + typedef odb::pointer_traits pointer_traits; + + static const bool polymorphic = false; + + typedef ::std::string id_type; + + static const bool auto_id = false; + + static const bool abstract = false; + + static id_type + id (const object_type&); + + typedef + odb::pointer_cache_traits< + pointer_type, + odb::session > + pointer_cache_traits; + + typedef + odb::reference_cache_traits< + object_type, + odb::session > + reference_cache_traits; + + static void + callback (database&, object_type&, callback_event); + + static void + callback (database&, const object_type&, callback_event); + }; + + // repository_fragment_count + // + template <> + struct class_traits< ::bpkg::repository_fragment_count > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::repository_fragment_count > + { + public: + typedef ::bpkg::repository_fragment_count view_type; + typedef ::bpkg::repository_fragment_count* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; + + // repository + // + template <> + struct class_traits< ::bpkg::repository > + { + static const class_kind kind = class_object; + }; + + template <> + class access::object_traits< ::bpkg::repository > + { + public: + typedef ::bpkg::repository object_type; + typedef ::std::shared_ptr< ::bpkg::repository > pointer_type; + typedef odb::pointer_traits pointer_traits; + + static const bool polymorphic = false; + + typedef ::std::string id_type; + + static const bool auto_id = false; + + static const bool abstract = false; + + static id_type + id (const object_type&); + + typedef + odb::pointer_cache_traits< + pointer_type, + odb::session > + pointer_cache_traits; + + typedef + odb::reference_cache_traits< + object_type, + odb::session > + reference_cache_traits; + + static void + callback (database&, object_type&, callback_event); + + static void + callback (database&, const object_type&, callback_event); + }; + + // repository_count + // + template <> + struct class_traits< ::bpkg::repository_count > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::repository_count > + { + public: + typedef ::bpkg::repository_count view_type; + typedef ::bpkg::repository_count* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; + + // available_package + // + template <> + struct class_traits< ::bpkg::available_package > + { + static const class_kind kind = class_object; + }; + + template <> + class access::object_traits< ::bpkg::available_package > + { + public: + typedef ::bpkg::available_package object_type; + typedef ::std::shared_ptr< ::bpkg::available_package > pointer_type; + typedef odb::pointer_traits pointer_traits; + + static const bool polymorphic = false; + + typedef ::bpkg::available_package_id id_type; + + static const bool auto_id = false; + + static const bool abstract = false; + + static id_type + id (const object_type&); + + typedef + odb::pointer_cache_traits< + pointer_type, + odb::session > + pointer_cache_traits; + + typedef + odb::reference_cache_traits< + object_type, + odb::session > + reference_cache_traits; + + static void + callback (database&, object_type&, callback_event); + + static void + callback (database&, const object_type&, callback_event); + }; + + // available_package_count + // + template <> + struct class_traits< ::bpkg::available_package_count > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::available_package_count > + { + public: + typedef ::bpkg::available_package_count view_type; + typedef ::bpkg::available_package_count* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; + + // available_test + // + template <> + struct class_traits< ::bpkg::available_test > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::available_test > + { + public: + typedef ::bpkg::available_test view_type; + typedef ::bpkg::available_test* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; + + // available_main + // + template <> + struct class_traits< ::bpkg::available_main > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::available_main > + { + public: + typedef ::bpkg::available_main view_type; + typedef ::bpkg::available_main* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; + + // selected_package + // + template <> + struct class_traits< ::bpkg::selected_package > + { + static const class_kind kind = class_object; + }; + + template <> + class access::object_traits< ::bpkg::selected_package > + { + public: + typedef ::bpkg::selected_package object_type; + typedef ::std::shared_ptr< ::bpkg::selected_package > pointer_type; + typedef odb::pointer_traits pointer_traits; + + static const bool polymorphic = false; + + typedef ::bpkg::package_name id_type; + + static const bool auto_id = false; + + static const bool abstract = false; + + static id_type + id (const object_type&); + + typedef + odb::pointer_cache_traits< + pointer_type, + odb::session > + pointer_cache_traits; + + typedef + odb::reference_cache_traits< + object_type, + odb::session > + reference_cache_traits; + + static void + callback (database&, object_type&, callback_event); + + static void + callback (database&, const object_type&, callback_event); + }; + + // certificate + // + template <> + struct class_traits< ::bpkg::certificate > + { + static const class_kind kind = class_object; + }; + + template <> + class access::object_traits< ::bpkg::certificate > + { + public: + typedef ::bpkg::certificate object_type; + typedef ::std::shared_ptr< ::bpkg::certificate > pointer_type; + typedef odb::pointer_traits pointer_traits; + + static const bool polymorphic = false; + + typedef ::std::string id_type; + + static const bool auto_id = false; + + static const bool abstract = false; + + static id_type + id (const object_type&); + + typedef + odb::pointer_cache_traits< + pointer_type, + odb::session > + pointer_cache_traits; + + typedef + odb::reference_cache_traits< + object_type, + odb::session > + reference_cache_traits; + + static void + callback (database&, object_type&, callback_event); + + static void + callback (database&, const object_type&, callback_event); + }; + + // package_dependent + // + template <> + struct class_traits< ::bpkg::package_dependent > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::package_dependent > + { + public: + typedef ::bpkg::package_dependent view_type; + typedef ::bpkg::package_dependent* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; + + // fragment_repository_count + // + template <> + struct class_traits< ::bpkg::fragment_repository_count > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::fragment_repository_count > + { + public: + typedef ::bpkg::fragment_repository_count view_type; + typedef ::bpkg::fragment_repository_count* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; + + // fragment_repository + // + template <> + struct class_traits< ::bpkg::fragment_repository > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::fragment_repository > + { + public: + typedef ::bpkg::fragment_repository view_type; + typedef ::bpkg::fragment_repository* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; + + // repository_complement_dependent + // + template <> + struct class_traits< ::bpkg::repository_complement_dependent > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::repository_complement_dependent > + { + public: + typedef ::bpkg::repository_complement_dependent view_type; + typedef ::bpkg::repository_complement_dependent* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; + + // repository_prerequisite_dependent + // + template <> + struct class_traits< ::bpkg::repository_prerequisite_dependent > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::repository_prerequisite_dependent > + { + public: + typedef ::bpkg::repository_prerequisite_dependent view_type; + typedef ::bpkg::repository_prerequisite_dependent* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; + + // repository_fragment_package + // + template <> + struct class_traits< ::bpkg::repository_fragment_package > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::repository_fragment_package > + { + public: + typedef ::bpkg::repository_fragment_package view_type; + typedef ::bpkg::repository_fragment_package* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; + + // package_repository_fragment + // + template <> + struct class_traits< ::bpkg::package_repository_fragment > + { + static const class_kind kind = class_view; + }; + + template <> + class access::view_traits< ::bpkg::package_repository_fragment > + { + public: + typedef ::bpkg::package_repository_fragment view_type; + typedef ::bpkg::package_repository_fragment* pointer_type; + + static void + callback (database&, view_type&, callback_event); + }; +} + +#include + +#include +#include +#include +#include +#include + +namespace odb +{ + // _version + // + template <> + class access::composite_value_traits< ::bpkg::_version, id_sqlite > + { + public: + typedef ::bpkg::_version value_type; + + struct image_type + { + // epoch + // + long long epoch_value; + bool epoch_null; + + // canonical_upstream + // + details::buffer canonical_upstream_value; + std::size_t canonical_upstream_size; + bool canonical_upstream_null; + + // canonical_release + // + details::buffer canonical_release_value; + std::size_t canonical_release_size; + bool canonical_release_null; + + // revision + // + long long revision_value; + bool revision_null; + + // iteration + // + long long iteration_value; + bool iteration_null; + + // upstream + // + details::buffer upstream_value; + std::size_t upstream_size; + bool upstream_null; + + // release + // + details::buffer release_value; + std::size_t release_size; + bool release_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 7UL; + }; + + // language + // + template <> + class access::composite_value_traits< ::bpkg::language, id_sqlite > + { + public: + typedef ::bpkg::language value_type; + + struct image_type + { + // name + // + details::buffer name_value; + std::size_t name_size; + bool name_null; + + // impl + // + long long impl_value; + bool impl_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 2UL; + }; + + // version_constraint + // + template <> + class access::composite_value_traits< ::bpkg::version_constraint, id_sqlite > + { + public: + typedef ::bpkg::version_constraint value_type; + + struct image_type + { + // min_version + // + composite_value_traits< ::bpkg::_version, id_sqlite >::image_type min_version_value; + + // max_version + // + composite_value_traits< ::bpkg::_version, id_sqlite >::image_type max_version_value; + + // min_open + // + long long min_open_value; + bool min_open_null; + + // max_open + // + long long max_open_value; + bool max_open_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 16UL; + }; + + // dependency + // + template <> + class access::composite_value_traits< ::bpkg::dependency, id_sqlite > + { + public: + typedef ::bpkg::dependency value_type; + + struct image_type + { + // name + // + details::buffer name_value; + std::size_t name_size; + bool name_null; + + // constraint + // + composite_value_traits< ::bpkg::version_constraint, id_sqlite >::image_type constraint_value; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 17UL; + }; + + // dependency_alternative + // + template <> + class access::composite_value_traits< ::bpkg::dependency_alternative, id_sqlite > + { + public: + typedef ::bpkg::dependency_alternative value_type; + + struct image_type + { + // enable + // + details::buffer enable_value; + std::size_t enable_size; + bool enable_null; + + // reflect + // + details::buffer reflect_value; + std::size_t reflect_size; + bool reflect_null; + + // prefer + // + details::buffer prefer_value; + std::size_t prefer_size; + bool prefer_null; + + // accept + // + details::buffer accept_value; + std::size_t accept_size; + bool accept_null; + + // require + // + details::buffer require_value; + std::size_t require_size; + bool require_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 5UL; + }; + + // dependency_alternatives + // + template <> + class access::composite_value_traits< ::bpkg::dependency_alternatives, id_sqlite > + { + public: + typedef ::bpkg::dependency_alternatives value_type; + + struct image_type + { + // buildtime + // + long long buildtime_value; + bool buildtime_null; + + // comment + // + details::buffer comment_value; + std::size_t comment_size; + bool comment_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 2UL; + }; + + // test_dependency + // + template <> + class access::composite_value_traits< ::bpkg::test_dependency, id_sqlite > + { + public: + typedef ::bpkg::test_dependency value_type; + + struct image_type: composite_value_traits< ::bpkg::dependency, id_sqlite >::image_type + { + // type + // + details::buffer type_value; + std::size_t type_size; + bool type_null; + + // buildtime + // + long long buildtime_value; + bool buildtime_null; + + // enable + // + details::buffer enable_value; + std::size_t enable_size; + bool enable_null; + + // reflect + // + details::buffer reflect_value; + std::size_t reflect_size; + bool reflect_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 21UL; + }; + + // buildfile + // + template <> + class access::composite_value_traits< ::bpkg::buildfile, id_sqlite > + { + public: + typedef ::bpkg::buildfile value_type; + + struct image_type + { + // path + // + details::buffer path_value; + std::size_t path_size; + bool path_null; + + // content + // + details::buffer content_value; + std::size_t content_size; + bool content_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 2UL; + }; + + // distribution_name_value + // + template <> + class access::composite_value_traits< ::bpkg::distribution_name_value, id_sqlite > + { + public: + typedef ::bpkg::distribution_name_value value_type; + + struct image_type + { + // name + // + details::buffer name_value; + std::size_t name_size; + bool name_null; + + // value + // + details::buffer value_value; + std::size_t value_size; + bool value_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 2UL; + }; + + // configuration + // + template + struct query_columns< ::bpkg::configuration, id_sqlite, A > + { + // id + // + typedef + sqlite::query_column< + sqlite::value_traits< + long unsigned int, + sqlite::id_integer >::query_type, + sqlite::id_integer > + id_type_; + + static const id_type_ id; + + // uuid + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + uuid_type_; + + static const uuid_type_ uuid; + + // name + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + name_type_; + + static const name_type_ name; + + // type + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + type_type_; + + static const type_type_ type; + + // path + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + path_type_; + + static const path_type_ path; + + // expl + // + typedef + sqlite::query_column< + sqlite::value_traits< + bool, + sqlite::id_integer >::query_type, + sqlite::id_integer > + expl_type_; + + static const expl_type_ expl; + }; + + template + const typename query_columns< ::bpkg::configuration, id_sqlite, A >::id_type_ + query_columns< ::bpkg::configuration, id_sqlite, A >:: + id (A::table_name, "\"id\"", 0); + + template + const typename query_columns< ::bpkg::configuration, id_sqlite, A >::uuid_type_ + query_columns< ::bpkg::configuration, id_sqlite, A >:: + uuid (A::table_name, "\"uuid\"", 0); + + template + const typename query_columns< ::bpkg::configuration, id_sqlite, A >::name_type_ + query_columns< ::bpkg::configuration, id_sqlite, A >:: + name (A::table_name, "\"name\"", 0); + + template + const typename query_columns< ::bpkg::configuration, id_sqlite, A >::type_type_ + query_columns< ::bpkg::configuration, id_sqlite, A >:: + type (A::table_name, "\"type\"", 0); + + template + const typename query_columns< ::bpkg::configuration, id_sqlite, A >::path_type_ + query_columns< ::bpkg::configuration, id_sqlite, A >:: + path (A::table_name, "\"path\"", 0); + + template + const typename query_columns< ::bpkg::configuration, id_sqlite, A >::expl_type_ + query_columns< ::bpkg::configuration, id_sqlite, A >:: + expl (A::table_name, "\"explicit\"", 0); + + template + struct pointer_query_columns< ::bpkg::configuration, id_sqlite, A >: + query_columns< ::bpkg::configuration, id_sqlite, A > + { + }; + + template <> + class access::object_traits_impl< ::bpkg::configuration, id_sqlite >: + public access::object_traits< ::bpkg::configuration > + { + public: + struct id_image_type + { + long long id_value; + bool id_null; + + std::size_t version; + }; + + struct image_type + { + // id + // + long long id_value; + bool id_null; + + // uuid + // + details::buffer uuid_value; + std::size_t uuid_size; + bool uuid_null; + + // name + // + details::buffer name_value; + std::size_t name_size; + bool name_null; + + // type + // + details::buffer type_value; + std::size_t type_size; + bool type_null; + + // path + // + details::buffer path_value; + std::size_t path_size; + bool path_null; + + // expl + // + long long expl_value; + bool expl_null; + + std::size_t version; + }; + + struct extra_statement_cache_type; + + using object_traits::id; + + static id_type + id (const id_image_type&); + + static id_type + id (const image_type&); + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static void + bind (sqlite::bind*, id_image_type&); + + static bool + init (image_type&, + const object_type&, + sqlite::statement_kind); + + static void + init (object_type&, + const image_type&, + database*); + + static void + init (id_image_type&, const id_type&); + + typedef sqlite::object_statements statements_type; + + typedef sqlite::query_base query_base_type; + + static const std::size_t column_count = 6UL; + static const std::size_t id_column_count = 1UL; + static const std::size_t inverse_column_count = 0UL; + static const std::size_t readonly_column_count = 0UL; + static const std::size_t managed_optimistic_column_count = 0UL; + + static const std::size_t separate_load_column_count = 0UL; + static const std::size_t separate_update_column_count = 0UL; + + static const bool versioned = false; + + static const char persist_statement[]; + static const char find_statement[]; + static const char update_statement[]; + static const char erase_statement[]; + static const char query_statement[]; + static const char erase_query_statement[]; + + static const char table_name[]; + + static void + persist (database&, object_type&); + + static pointer_type + find (database&, const id_type&); + + static bool + find (database&, const id_type&, object_type&); + + static bool + reload (database&, object_type&); + + static void + update (database&, const object_type&); + + static void + erase (database&, const id_type&); + + static void + erase (database&, const object_type&); + + static result + query (database&, const query_base_type&); + + static unsigned long long + erase_query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + + public: + static bool + find_ (statements_type&, + const id_type*); + + static void + load_ (statements_type&, + object_type&, + bool reload); + }; + + template <> + class access::object_traits_impl< ::bpkg::configuration, id_common >: + public access::object_traits_impl< ::bpkg::configuration, id_sqlite > + { + }; + + // canonical_version + // + template <> + class access::composite_value_traits< ::bpkg::canonical_version, id_sqlite > + { + public: + typedef ::bpkg::canonical_version value_type; + + struct image_type + { + // epoch + // + long long epoch_value; + bool epoch_null; + + // canonical_upstream + // + details::buffer canonical_upstream_value; + std::size_t canonical_upstream_size; + bool canonical_upstream_null; + + // canonical_release + // + details::buffer canonical_release_value; + std::size_t canonical_release_size; + bool canonical_release_null; + + // revision + // + long long revision_value; + bool revision_null; + + // iteration + // + long long iteration_value; + bool iteration_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 5UL; + }; + + // upstream_version + // + template <> + class access::composite_value_traits< ::bpkg::upstream_version, id_sqlite > + { + public: + typedef ::bpkg::upstream_version value_type; + + struct image_type + { + // upstream_ + // + details::buffer upstream_value; + std::size_t upstream_size; + bool upstream_null; + + // release_ + // + details::buffer release_value; + std::size_t release_size; + bool release_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 2UL; + }; + + // _repository_location + // + template <> + class access::composite_value_traits< ::bpkg::_repository_location, id_sqlite > + { + public: + typedef ::bpkg::_repository_location value_type; + + struct image_type + { + // url + // + details::buffer url_value; + std::size_t url_size; + bool url_null; + + // type + // + details::buffer type_value; + std::size_t type_size; + bool type_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 2UL; + }; + + // repository_fragment + // + template + struct query_columns< ::bpkg::repository_fragment, id_sqlite, A > + { + // name + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + name_type_; + + static const name_type_ name; + + // location + // + struct location_class_ + { + location_class_ () + { + } + + // url + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + url_type_; + + static const url_type_ url; + + // type + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + type_type_; + + static const type_type_ type; + }; + + static const location_class_ location; + }; + + template + const typename query_columns< ::bpkg::repository_fragment, id_sqlite, A >::name_type_ + query_columns< ::bpkg::repository_fragment, id_sqlite, A >:: + name (A::table_name, "\"name\"", 0); + + template + const typename query_columns< ::bpkg::repository_fragment, id_sqlite, A >::location_class_::url_type_ + query_columns< ::bpkg::repository_fragment, id_sqlite, A >::location_class_:: + url (A::table_name, "\"url\"", 0); + + template + const typename query_columns< ::bpkg::repository_fragment, id_sqlite, A >::location_class_::type_type_ + query_columns< ::bpkg::repository_fragment, id_sqlite, A >::location_class_:: + type (A::table_name, "\"type\"", 0); + + template + const typename query_columns< ::bpkg::repository_fragment, id_sqlite, A >::location_class_ + query_columns< ::bpkg::repository_fragment, id_sqlite, A >::location; + + template + struct pointer_query_columns< ::bpkg::repository_fragment, id_sqlite, A >: + query_columns< ::bpkg::repository_fragment, id_sqlite, A > + { + }; + + template <> + class access::object_traits_impl< ::bpkg::repository_fragment, id_sqlite >: + public access::object_traits< ::bpkg::repository_fragment > + { + public: + struct id_image_type + { + details::buffer id_value; + std::size_t id_size; + bool id_null; + + std::size_t version; + }; + + struct image_type + { + // name + // + details::buffer name_value; + std::size_t name_size; + bool name_null; + + // location + // + composite_value_traits< ::bpkg::_repository_location, id_sqlite >::image_type location_value; + + std::size_t version; + }; + + struct extra_statement_cache_type; + + // complements + // + struct complements_traits + { + static const std::size_t id_column_count = 1UL; + static const std::size_t data_column_count = 2UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::bpkg::repository_fragment::dependencies container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::value_type value_type; + + typedef set_functions functions_type; + typedef sqlite::container_statements< complements_traits > statements_type; + + struct data_image_type + { + // value + // + details::buffer value_value; + std::size_t value_size; + bool value_null; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + const value_type&); + + static void + init (value_type&, + const data_image_type&, + database*); + + static void + insert (const value_type&, void*); + + static bool + select (value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // prerequisites + // + struct prerequisites_traits + { + static const std::size_t id_column_count = 1UL; + static const std::size_t data_column_count = 2UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::bpkg::repository_fragment::dependencies container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::value_type value_type; + + typedef set_functions functions_type; + typedef sqlite::container_statements< prerequisites_traits > statements_type; + + struct data_image_type + { + // value + // + details::buffer value_value; + std::size_t value_size; + bool value_null; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + const value_type&); + + static void + init (value_type&, + const data_image_type&, + database*); + + static void + insert (const value_type&, void*); + + static bool + select (value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + using object_traits::id; + + static id_type + id (const image_type&); + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static void + bind (sqlite::bind*, id_image_type&); + + static bool + init (image_type&, + const object_type&, + sqlite::statement_kind); + + static void + init (object_type&, + const image_type&, + database*); + + static void + init (id_image_type&, const id_type&); + + typedef sqlite::object_statements statements_type; + + typedef sqlite::query_base query_base_type; + + static const std::size_t column_count = 3UL; + static const std::size_t id_column_count = 1UL; + static const std::size_t inverse_column_count = 0UL; + static const std::size_t readonly_column_count = 0UL; + static const std::size_t managed_optimistic_column_count = 0UL; + + static const std::size_t separate_load_column_count = 0UL; + static const std::size_t separate_update_column_count = 0UL; + + static const bool versioned = false; + + static const char persist_statement[]; + static const char find_statement[]; + static const char update_statement[]; + static const char erase_statement[]; + static const char query_statement[]; + static const char erase_query_statement[]; + + static const char table_name[]; + + static void + persist (database&, const object_type&); + + static pointer_type + find (database&, const id_type&); + + static bool + find (database&, const id_type&, object_type&); + + static bool + reload (database&, object_type&); + + static void + update (database&, const object_type&); + + static void + erase (database&, const id_type&); + + static void + erase (database&, const object_type&); + + static result + query (database&, const query_base_type&); + + static unsigned long long + erase_query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + + public: + static bool + find_ (statements_type&, + const id_type*); + + static void + load_ (statements_type&, + object_type&, + bool reload); + }; + + template <> + class access::object_traits_impl< ::bpkg::repository_fragment, id_common >: + public access::object_traits_impl< ::bpkg::repository_fragment, id_sqlite > + { + }; + + // repository_fragment_count + // + template <> + class access::view_traits_impl< ::bpkg::repository_fragment_count, id_sqlite >: + public access::view_traits< ::bpkg::repository_fragment_count > + { + public: + struct image_type + { + // result + // + long long result_value; + bool result_null; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + typedef sqlite::query_base query_base_type; + struct query_columns; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 1UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::repository_fragment_count, id_common >: + public access::view_traits_impl< ::bpkg::repository_fragment_count, id_sqlite > + { + }; + + // fragment_type + // + template <> + class access::composite_value_traits< ::bpkg::repository::fragment_type, id_sqlite > + { + public: + typedef ::bpkg::repository::fragment_type value_type; + + struct image_type + { + // friendly_name + // + details::buffer friendly_name_value; + std::size_t friendly_name_size; + bool friendly_name_null; + + // fragment + // + details::buffer fragment_value; + std::size_t fragment_size; + bool fragment_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 2UL; + }; + + // repository + // + template + struct query_columns< ::bpkg::repository, id_sqlite, A > + { + // name + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + name_type_; + + static const name_type_ name; + + // location + // + struct location_class_ + { + location_class_ () + { + } + + // url + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + url_type_; + + static const url_type_ url; + + // type + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + type_type_; + + static const type_type_ type; + }; + + static const location_class_ location; + + // certificate + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + certificate_type_; + + static const certificate_type_ certificate; + + // local + // + typedef + sqlite::query_column< + sqlite::value_traits< + bool, + sqlite::id_integer >::query_type, + sqlite::id_integer > + local_type_; + + static const local_type_ local; + }; + + template + const typename query_columns< ::bpkg::repository, id_sqlite, A >::name_type_ + query_columns< ::bpkg::repository, id_sqlite, A >:: + name (A::table_name, "\"name\"", 0); + + template + const typename query_columns< ::bpkg::repository, id_sqlite, A >::location_class_::url_type_ + query_columns< ::bpkg::repository, id_sqlite, A >::location_class_:: + url (A::table_name, "\"url\"", 0); + + template + const typename query_columns< ::bpkg::repository, id_sqlite, A >::location_class_::type_type_ + query_columns< ::bpkg::repository, id_sqlite, A >::location_class_:: + type (A::table_name, "\"type\"", 0); + + template + const typename query_columns< ::bpkg::repository, id_sqlite, A >::location_class_ + query_columns< ::bpkg::repository, id_sqlite, A >::location; + + template + const typename query_columns< ::bpkg::repository, id_sqlite, A >::certificate_type_ + query_columns< ::bpkg::repository, id_sqlite, A >:: + certificate (A::table_name, "\"certificate\"", 0); + + template + const typename query_columns< ::bpkg::repository, id_sqlite, A >::local_type_ + query_columns< ::bpkg::repository, id_sqlite, A >:: + local (A::table_name, "\"local\"", 0); + + template + struct pointer_query_columns< ::bpkg::repository, id_sqlite, A >: + query_columns< ::bpkg::repository, id_sqlite, A > + { + }; + + template <> + class access::object_traits_impl< ::bpkg::repository, id_sqlite >: + public access::object_traits< ::bpkg::repository > + { + public: + struct id_image_type + { + details::buffer id_value; + std::size_t id_size; + bool id_null; + + std::size_t version; + }; + + struct image_type + { + // name + // + details::buffer name_value; + std::size_t name_size; + bool name_null; + + // location + // + composite_value_traits< ::bpkg::_repository_location, id_sqlite >::image_type location_value; + + // certificate + // + details::buffer certificate_value; + std::size_t certificate_size; + bool certificate_null; + + // local + // + long long local_value; + bool local_null; + + std::size_t version; + }; + + struct extra_statement_cache_type; + + // fragments + // + struct fragments_traits + { + static const std::size_t id_column_count = 1UL; + static const std::size_t data_column_count = 4UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::bpkg::repository::fragments_type container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::index_type index_type; + typedef container_traits_type::value_type value_type; + + typedef ordered_functions functions_type; + typedef sqlite::container_statements< fragments_traits > statements_type; + + struct data_image_type + { + // index + // + long long index_value; + bool index_null; + + // value + // + composite_value_traits< value_type, id_sqlite >::image_type value_value; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + index_type*, + const value_type&); + + static void + init (index_type&, + value_type&, + const data_image_type&, + database*); + + static void + insert (index_type, const value_type&, void*); + + static bool + select (index_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + using object_traits::id; + + static id_type + id (const image_type&); + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static void + bind (sqlite::bind*, id_image_type&); + + static bool + init (image_type&, + const object_type&, + sqlite::statement_kind); + + static void + init (object_type&, + const image_type&, + database*); + + static void + init (id_image_type&, const id_type&); + + typedef sqlite::object_statements statements_type; + + typedef sqlite::query_base query_base_type; + + static const std::size_t column_count = 5UL; + static const std::size_t id_column_count = 1UL; + static const std::size_t inverse_column_count = 0UL; + static const std::size_t readonly_column_count = 0UL; + static const std::size_t managed_optimistic_column_count = 0UL; + + static const std::size_t separate_load_column_count = 0UL; + static const std::size_t separate_update_column_count = 0UL; + + static const bool versioned = false; + + static const char persist_statement[]; + static const char find_statement[]; + static const char update_statement[]; + static const char erase_statement[]; + static const char query_statement[]; + static const char erase_query_statement[]; + + static const char table_name[]; + + static void + persist (database&, const object_type&); + + static pointer_type + find (database&, const id_type&); + + static bool + find (database&, const id_type&, object_type&); + + static bool + reload (database&, object_type&); + + static void + update (database&, const object_type&); + + static void + erase (database&, const id_type&); + + static void + erase (database&, const object_type&); + + static result + query (database&, const query_base_type&); + + static unsigned long long + erase_query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + + public: + static bool + find_ (statements_type&, + const id_type*); + + static void + load_ (statements_type&, + object_type&, + bool reload); + }; + + template <> + class access::object_traits_impl< ::bpkg::repository, id_common >: + public access::object_traits_impl< ::bpkg::repository, id_sqlite > + { + }; + + // repository_count + // + template <> + class access::view_traits_impl< ::bpkg::repository_count, id_sqlite >: + public access::view_traits< ::bpkg::repository_count > + { + public: + struct image_type + { + // result + // + long long result_value; + bool result_null; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + typedef sqlite::query_base query_base_type; + struct query_columns; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 1UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::repository_count, id_common >: + public access::view_traits_impl< ::bpkg::repository_count, id_sqlite > + { + }; + + // package_location + // + template <> + class access::composite_value_traits< ::bpkg::package_location, id_sqlite > + { + public: + typedef ::bpkg::package_location value_type; + + struct image_type + { + // repository_fragment + // + details::buffer repository_fragment_value; + std::size_t repository_fragment_size; + bool repository_fragment_null; + + // location + // + details::buffer location_value; + std::size_t location_size; + bool location_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 2UL; + }; + + // dependency_alternatives_ex + // + template <> + class access::composite_value_traits< ::bpkg::dependency_alternatives_ex, id_sqlite > + { + public: + typedef ::bpkg::dependency_alternatives_ex value_type; + + struct image_type: composite_value_traits< ::bpkg::dependency_alternatives, id_sqlite >::image_type + { + // type + // + details::buffer type_value; + std::size_t type_size; + bool type_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 3UL; + }; + + // available_package_id + // + template <> + class access::composite_value_traits< ::bpkg::available_package_id, id_sqlite > + { + public: + typedef ::bpkg::available_package_id value_type; + + struct image_type + { + // name + // + details::buffer name_value; + std::size_t name_size; + bool name_null; + + // version + // + composite_value_traits< ::bpkg::canonical_version, id_sqlite >::image_type version_value; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 6UL; + }; + + // _dependency_alternative_key + // + template <> + class access::composite_value_traits< ::bpkg::available_package::_dependency_alternative_key, id_sqlite > + { + public: + typedef ::bpkg::available_package::_dependency_alternative_key value_type; + + struct image_type + { + // outer + // + long long outer_value; + bool outer_null; + + // inner + // + long long inner_value; + bool inner_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 2UL; + }; + + // _dependency_key + // + template <> + class access::composite_value_traits< ::bpkg::available_package::_dependency_key, id_sqlite > + { + public: + typedef ::bpkg::available_package::_dependency_key value_type; + + struct image_type + { + // outer + // + long long outer_value; + bool outer_null; + + // middle + // + long long middle_value; + bool middle_null; + + // inner + // + long long inner_value; + bool inner_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 3UL; + }; + + // available_package + // + template + struct query_columns< ::bpkg::available_package, id_sqlite, A > + { + // id + // + struct id_class_ + { + id_class_ () + { + } + + // name + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::bpkg::package_name, + sqlite::id_text >::query_type, + sqlite::id_text > + name_type_; + + static const name_type_ name; + + // version + // + struct version_class_1_ + { + version_class_1_ () + { + } + + // epoch + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::uint16_t, + sqlite::id_integer >::query_type, + sqlite::id_integer > + epoch_type_; + + static const epoch_type_ epoch; + + // canonical_upstream + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + canonical_upstream_type_; + + static const canonical_upstream_type_ canonical_upstream; + + // canonical_release + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + canonical_release_type_; + + static const canonical_release_type_ canonical_release; + + // revision + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::uint16_t, + sqlite::id_integer >::query_type, + sqlite::id_integer > + revision_type_; + + static const revision_type_ revision; + + // iteration + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::uint32_t, + sqlite::id_integer >::query_type, + sqlite::id_integer > + iteration_type_; + + static const iteration_type_ iteration; + }; + + static const version_class_1_ version; + }; + + static const id_class_ id; + + // version + // + struct version_class_ + { + version_class_ () + { + } + + // upstream + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + upstream_type_; + + static const upstream_type_ upstream; + + // release + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + release_type_; + + static const release_type_ release; + }; + + static const version_class_ version; + + // upstream_version + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + upstream_version_type_; + + static const upstream_version_type_ upstream_version; + + // type + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + type_type_; + + static const type_type_ type; + + // project + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::butl::project_name, + sqlite::id_text >::query_type, + sqlite::id_text > + project_type_; + + static const project_type_ project; + + // alt_naming + // + typedef + sqlite::query_column< + sqlite::value_traits< + bool, + sqlite::id_integer >::query_type, + sqlite::id_integer > + alt_naming_type_; + + static const alt_naming_type_ alt_naming; + + // bootstrap_build + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + bootstrap_build_type_; + + static const bootstrap_build_type_ bootstrap_build; + + // root_build + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + root_build_type_; + + static const root_build_type_ root_build; + + // sha256sum + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + sha256sum_type_; + + static const sha256sum_type_ sha256sum; + }; + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::name_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_:: + name (A::table_name, "\"name\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version_class_1_::epoch_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version_class_1_:: + epoch (A::table_name, "\"version_epoch\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version_class_1_::canonical_upstream_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version_class_1_:: + canonical_upstream (A::table_name, "\"version_canonical_upstream\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version_class_1_::canonical_release_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version_class_1_:: + canonical_release (A::table_name, "\"version_canonical_release\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version_class_1_::revision_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version_class_1_:: + revision (A::table_name, "\"version_revision\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version_class_1_::iteration_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version_class_1_:: + iteration (A::table_name, "\"version_iteration\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version_class_1_ + query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_::version; + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::id_class_ + query_columns< ::bpkg::available_package, id_sqlite, A >::id; + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::version_class_::upstream_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >::version_class_:: + upstream (A::table_name, "\"version_upstream\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::version_class_::release_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >::version_class_:: + release (A::table_name, "\"version_release\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::version_class_ + query_columns< ::bpkg::available_package, id_sqlite, A >::version; + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::upstream_version_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >:: + upstream_version (A::table_name, "\"upstream_version\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::type_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >:: + type (A::table_name, "\"type\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::project_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >:: + project (A::table_name, "\"project\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::alt_naming_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >:: + alt_naming (A::table_name, "\"alt_naming\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::bootstrap_build_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >:: + bootstrap_build (A::table_name, "\"bootstrap_build\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::root_build_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >:: + root_build (A::table_name, "\"root_build\"", 0); + + template + const typename query_columns< ::bpkg::available_package, id_sqlite, A >::sha256sum_type_ + query_columns< ::bpkg::available_package, id_sqlite, A >:: + sha256sum (A::table_name, "\"sha256sum\"", 0); + + template + struct pointer_query_columns< ::bpkg::available_package, id_sqlite, A >: + query_columns< ::bpkg::available_package, id_sqlite, A > + { + }; + + template <> + class access::object_traits_impl< ::bpkg::available_package, id_sqlite >: + public access::object_traits< ::bpkg::available_package > + { + public: + struct id_image_type + { + composite_value_traits< ::bpkg::available_package_id, id_sqlite >::image_type id_value; + + std::size_t version; + }; + + struct image_type + { + // id + // + composite_value_traits< ::bpkg::available_package_id, id_sqlite >::image_type id_value; + + // version + // + composite_value_traits< ::bpkg::available_package::upstream_version_type, id_sqlite >::image_type version_value; + + // upstream_version + // + details::buffer upstream_version_value; + std::size_t upstream_version_size; + bool upstream_version_null; + + // type + // + details::buffer type_value; + std::size_t type_size; + bool type_null; + + // project + // + details::buffer project_value; + std::size_t project_size; + bool project_null; + + // alt_naming + // + long long alt_naming_value; + bool alt_naming_null; + + // bootstrap_build + // + details::buffer bootstrap_build_value; + std::size_t bootstrap_build_size; + bool bootstrap_build_null; + + // root_build + // + details::buffer root_build_value; + std::size_t root_build_size; + bool root_build_null; + + // sha256sum + // + details::buffer sha256sum_value; + std::size_t sha256sum_size; + bool sha256sum_null; + + std::size_t version; + }; + + struct extra_statement_cache_type; + + // languages + // + struct languages_traits + { + static const std::size_t id_column_count = 6UL; + static const std::size_t data_column_count = 9UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::butl::small_vector< ::bpkg::language, 1 > container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::index_type index_type; + typedef container_traits_type::value_type value_type; + + typedef ordered_functions functions_type; + typedef sqlite::container_statements< languages_traits > statements_type; + + struct data_image_type + { + // index + // + long long index_value; + bool index_null; + + // value + // + composite_value_traits< value_type, id_sqlite >::image_type value_value; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + index_type*, + const value_type&); + + static void + init (index_type&, + value_type&, + const data_image_type&, + database*); + + static void + insert (index_type, const value_type&, void*); + + static bool + select (index_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // locations + // + struct locations_traits + { + static const std::size_t id_column_count = 6UL; + static const std::size_t data_column_count = 8UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::butl::small_vector< ::bpkg::package_location, 1 > container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::index_type index_type; + typedef container_traits_type::value_type value_type; + + typedef ordered_functions functions_type; + typedef sqlite::container_statements< locations_traits > statements_type; + + struct data_image_type + { + // value + // + composite_value_traits< value_type, id_sqlite >::image_type value_value; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + const value_type&); + + static void + init (value_type&, + const data_image_type&, + database*); + + static void + insert (index_type, const value_type&, void*); + + static bool + select (index_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // dependencies + // + struct dependencies_traits + { + static const std::size_t id_column_count = 6UL; + static const std::size_t data_column_count = 10UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::bpkg::available_package::dependencies_type container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::index_type index_type; + typedef container_traits_type::value_type value_type; + + typedef ordered_functions functions_type; + typedef sqlite::container_statements< dependencies_traits > statements_type; + + struct data_image_type + { + // index + // + long long index_value; + bool index_null; + + // value + // + composite_value_traits< value_type, id_sqlite >::image_type value_value; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + index_type*, + const value_type&); + + static void + init (index_type&, + value_type&, + const data_image_type&, + database*); + + static void + insert (index_type, const value_type&, void*); + + static bool + select (index_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // dependency_alternatives + // + struct dependency_alternatives_traits + { + static const std::size_t id_column_count = 6UL; + static const std::size_t data_column_count = 13UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::std::map< ::odb::nested_key< ::bpkg::dependency_alternatives_ex >, ::bpkg::dependency_alternative > container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::key_type key_type; + typedef container_traits_type::value_type value_type; + + typedef map_functions functions_type; + typedef sqlite::container_statements< dependency_alternatives_traits > statements_type; + + struct data_image_type + { + // key + // + composite_value_traits< key_type, id_sqlite >::image_type key_value; + + // value + // + composite_value_traits< value_type, id_sqlite >::image_type value_value; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + const key_type*, + const value_type&); + + static void + init (key_type&, + value_type&, + const data_image_type&, + database*); + + static void + insert (const key_type&, const value_type&, void*); + + static bool + select (key_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // dependency_alternative_dependencies + // + struct dependency_alternative_dependencies_traits + { + static const std::size_t id_column_count = 6UL; + static const std::size_t data_column_count = 26UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::std::map< ::odb::nested2_key< ::bpkg::dependency_alternatives_ex >, ::bpkg::dependency > container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::key_type key_type; + typedef container_traits_type::value_type value_type; + + typedef map_functions functions_type; + typedef sqlite::container_statements< dependency_alternative_dependencies_traits > statements_type; + + struct data_image_type + { + // key + // + composite_value_traits< key_type, id_sqlite >::image_type key_value; + + // value + // + composite_value_traits< value_type, id_sqlite >::image_type value_value; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + const key_type*, + const value_type&); + + static void + init (key_type&, + value_type&, + const data_image_type&, + database*); + + static void + insert (const key_type&, const value_type&, void*); + + static bool + select (key_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // tests + // + struct tests_traits + { + static const std::size_t id_column_count = 6UL; + static const std::size_t data_column_count = 28UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::butl::small_vector< ::bpkg::test_dependency, 1 > container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::index_type index_type; + typedef container_traits_type::value_type value_type; + + typedef ordered_functions functions_type; + typedef sqlite::container_statements< tests_traits > statements_type; + + struct data_image_type + { + // index + // + long long index_value; + bool index_null; + + // value + // + composite_value_traits< value_type, id_sqlite >::image_type value_value; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + index_type*, + const value_type&); + + static void + init (index_type&, + value_type&, + const data_image_type&, + database*); + + static void + insert (index_type, const value_type&, void*); + + static bool + select (index_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // buildfiles + // + struct buildfiles_traits + { + static const std::size_t id_column_count = 6UL; + static const std::size_t data_column_count = 9UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::std::vector< ::bpkg::buildfile > container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::index_type index_type; + typedef container_traits_type::value_type value_type; + + typedef ordered_functions functions_type; + typedef sqlite::container_statements< buildfiles_traits > statements_type; + + struct data_image_type + { + // index + // + long long index_value; + bool index_null; + + // value + // + composite_value_traits< value_type, id_sqlite >::image_type value_value; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + index_type*, + const value_type&); + + static void + init (index_type&, + value_type&, + const data_image_type&, + database*); + + static void + insert (index_type, const value_type&, void*); + + static bool + select (index_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // distribution_values + // + struct distribution_values_traits + { + static const std::size_t id_column_count = 6UL; + static const std::size_t data_column_count = 9UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::std::vector< ::bpkg::distribution_name_value > container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::index_type index_type; + typedef container_traits_type::value_type value_type; + + typedef ordered_functions functions_type; + typedef sqlite::container_statements< distribution_values_traits > statements_type; + + struct data_image_type + { + // index + // + long long index_value; + bool index_null; + + // value + // + composite_value_traits< value_type, id_sqlite >::image_type value_value; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + index_type*, + const value_type&); + + static void + init (index_type&, + value_type&, + const data_image_type&, + database*); + + static void + insert (index_type, const value_type&, void*); + + static bool + select (index_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // languages_section + // + struct languages_section_traits + { + typedef object_traits_impl::image_type image_type; + typedef object_traits_impl::id_image_type id_image_type; + + static const std::size_t id_column_count = 6UL; + static const std::size_t managed_optimistic_load_column_count = 0UL; + static const std::size_t load_column_count = 0UL; + static const std::size_t managed_optimistic_update_column_count = 0UL; + static const std::size_t update_column_count = 0UL; + + static const bool versioned = false; + + static void + load (extra_statement_cache_type&, object_type&); + + static void + update (extra_statement_cache_type&, const object_type&); + }; + + using object_traits::id; + + static id_type + id (const image_type&); + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static void + bind (sqlite::bind*, id_image_type&); + + static bool + init (image_type&, + const object_type&, + sqlite::statement_kind); + + static void + init (object_type&, + const image_type&, + database*); + + static void + init (id_image_type&, const id_type&); + + typedef sqlite::object_statements statements_type; + + typedef sqlite::query_base query_base_type; + + static const std::size_t column_count = 15UL; + static const std::size_t id_column_count = 6UL; + static const std::size_t inverse_column_count = 0UL; + static const std::size_t readonly_column_count = 0UL; + static const std::size_t managed_optimistic_column_count = 0UL; + + static const std::size_t separate_load_column_count = 0UL; + static const std::size_t separate_update_column_count = 0UL; + + static const bool versioned = false; + + static const char persist_statement[]; + static const char find_statement[]; + static const char update_statement[]; + static const char erase_statement[]; + static const char query_statement[]; + static const char erase_query_statement[]; + + static const char table_name[]; + + static void + persist (database&, const object_type&); + + static pointer_type + find (database&, const id_type&); + + static bool + find (database&, const id_type&, object_type&); + + static bool + reload (database&, object_type&); + + static void + update (database&, const object_type&); + + static void + erase (database&, const id_type&); + + static void + erase (database&, const object_type&); + + static bool + load (connection&, object_type&, section&); + + static bool + update (connection&, const object_type&, const section&); + + static result + query (database&, const query_base_type&); + + static unsigned long long + erase_query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + + public: + static bool + find_ (statements_type&, + const id_type*); + + static void + load_ (statements_type&, + object_type&, + bool reload); + }; + + template <> + class access::object_traits_impl< ::bpkg::available_package, id_common >: + public access::object_traits_impl< ::bpkg::available_package, id_sqlite > + { + }; + + // available_package_count + // + template <> + class access::view_traits_impl< ::bpkg::available_package_count, id_sqlite >: + public access::view_traits< ::bpkg::available_package_count > + { + public: + struct image_type + { + // result + // + long long result_value; + bool result_null; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + typedef sqlite::query_base query_base_type; + struct query_columns; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 1UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::available_package_count, id_common >: + public access::view_traits_impl< ::bpkg::available_package_count, id_sqlite > + { + }; + + // available_test + // + template <> + class access::view_traits_impl< ::bpkg::available_test, id_sqlite >: + public access::view_traits< ::bpkg::available_test > + { + public: + struct image_type + { + // package + // + object_traits_impl< ::bpkg::available_package, id_sqlite >::image_type package_value; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + struct package_tag; + + typedef sqlite::query_base query_base_type; + struct query_columns; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 15UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::available_test, id_common >: + public access::view_traits_impl< ::bpkg::available_test, id_sqlite > + { + }; + + // available_main + // + template <> + class access::view_traits_impl< ::bpkg::available_main, id_sqlite >: + public access::view_traits< ::bpkg::available_main > + { + public: + struct image_type + { + // package + // + object_traits_impl< ::bpkg::available_package, id_sqlite >::image_type package_value; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + struct package_tag; + + typedef sqlite::query_base query_base_type; + struct query_columns; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 15UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::available_main, id_common >: + public access::view_traits_impl< ::bpkg::available_main, id_sqlite > + { + }; + + // prerequisite_info + // + template <> + class access::composite_value_traits< ::bpkg::prerequisite_info, id_sqlite > + { + public: + typedef ::bpkg::prerequisite_info value_type; + + struct image_type + { + // constraint + // + composite_value_traits< ::bpkg::version_constraint, id_sqlite >::image_type constraint_value; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 16UL; + }; + + // _selected_package_ref + // + template <> + class access::composite_value_traits< ::bpkg::_selected_package_ref, id_sqlite > + { + public: + typedef ::bpkg::_selected_package_ref value_type; + + struct image_type + { + // configuration + // + details::buffer configuration_value; + std::size_t configuration_size; + bool configuration_null; + + // prerequisite + // + details::buffer prerequisite_value; + std::size_t prerequisite_size; + bool prerequisite_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 2UL; + }; + + // config_variable + // + template <> + class access::composite_value_traits< ::bpkg::config_variable, id_sqlite > + { + public: + typedef ::bpkg::config_variable value_type; + + struct image_type + { + // name + // + details::buffer name_value; + std::size_t name_size; + bool name_null; + + // source + // + details::buffer source_value; + std::size_t source_size; + bool source_null; + }; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static bool + init (image_type&, + const value_type&, + sqlite::statement_kind); + + static void + init (value_type&, + const image_type&, + database*); + + static bool + get_null (const image_type&); + + static void + set_null (image_type&, + sqlite::statement_kind); + + static const std::size_t column_count = 2UL; + }; + + // selected_package + // + template + struct query_columns< ::bpkg::selected_package, id_sqlite, A > + { + // name + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::bpkg::package_name, + sqlite::id_text >::query_type, + sqlite::id_text > + name_type_; + + static const name_type_ name; + + // version + // + struct version_class_ + { + version_class_ () + { + } + + // epoch + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::uint16_t, + sqlite::id_integer >::query_type, + sqlite::id_integer > + epoch_type_; + + static const epoch_type_ epoch; + + // canonical_upstream + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + canonical_upstream_type_; + + static const canonical_upstream_type_ canonical_upstream; + + // canonical_release + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + canonical_release_type_; + + static const canonical_release_type_ canonical_release; + + // revision + // + typedef + sqlite::query_column< + sqlite::value_traits< + short unsigned int, + sqlite::id_integer >::query_type, + sqlite::id_integer > + revision_type_; + + static const revision_type_ revision; + + // iteration + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::uint32_t, + sqlite::id_integer >::query_type, + sqlite::id_integer > + iteration_type_; + + static const iteration_type_ iteration; + + // upstream + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + upstream_type_; + + static const upstream_type_ upstream; + + // release + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + release_type_; + + static const release_type_ release; + }; + + static const version_class_ version; + + // state + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + state_type_; + + static const state_type_ state; + + // substate + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + substate_type_; + + static const substate_type_ substate; + + // hold_package + // + typedef + sqlite::query_column< + sqlite::value_traits< + bool, + sqlite::id_integer >::query_type, + sqlite::id_integer > + hold_package_type_; + + static const hold_package_type_ hold_package; + + // hold_version + // + typedef + sqlite::query_column< + sqlite::value_traits< + bool, + sqlite::id_integer >::query_type, + sqlite::id_integer > + hold_version_type_; + + static const hold_version_type_ hold_version; + + // repository_fragment + // + struct repository_fragment_class_ + { + repository_fragment_class_ () + { + } + + // url + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + url_type_; + + static const url_type_ url; + + // type + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + type_type_; + + static const type_type_ type; + }; + + static const repository_fragment_class_ repository_fragment; + + // archive + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + archive_type_; + + static const archive_type_ archive; + + // purge_archive + // + typedef + sqlite::query_column< + sqlite::value_traits< + bool, + sqlite::id_integer >::query_type, + sqlite::id_integer > + purge_archive_type_; + + static const purge_archive_type_ purge_archive; + + // src_root + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + src_root_type_; + + static const src_root_type_ src_root; + + // purge_src + // + typedef + sqlite::query_column< + sqlite::value_traits< + bool, + sqlite::id_integer >::query_type, + sqlite::id_integer > + purge_src_type_; + + static const purge_src_type_ purge_src; + + // manifest_checksum + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + manifest_checksum_type_; + + static const manifest_checksum_type_ manifest_checksum; + + // buildfiles_checksum + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + buildfiles_checksum_type_; + + static const buildfiles_checksum_type_ buildfiles_checksum; + + // out_root + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::basic_string< char >, + sqlite::id_text >::query_type, + sqlite::id_text > + out_root_type_; + + static const out_root_type_ out_root; + + // config_checksum + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + config_checksum_type_; + + static const config_checksum_type_ config_checksum; + }; + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::name_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + name (A::table_name, "\"name\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_::epoch_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_:: + epoch (A::table_name, "\"version_epoch\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_::canonical_upstream_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_:: + canonical_upstream (A::table_name, "\"version_canonical_upstream\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_::canonical_release_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_:: + canonical_release (A::table_name, "\"version_canonical_release\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_::revision_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_:: + revision (A::table_name, "\"version_revision\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_::iteration_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_:: + iteration (A::table_name, "\"version_iteration\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_::upstream_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_:: + upstream (A::table_name, "\"version_upstream\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_::release_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_:: + release (A::table_name, "\"version_release\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::version_class_ + query_columns< ::bpkg::selected_package, id_sqlite, A >::version; + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::state_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + state (A::table_name, "\"state\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::substate_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + substate (A::table_name, "\"substate\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::hold_package_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + hold_package (A::table_name, "\"hold_package\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::hold_version_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + hold_version (A::table_name, "\"hold_version\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::repository_fragment_class_::url_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >::repository_fragment_class_:: + url (A::table_name, "\"repository_fragment_url\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::repository_fragment_class_::type_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >::repository_fragment_class_:: + type (A::table_name, "\"repository_fragment_type\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::repository_fragment_class_ + query_columns< ::bpkg::selected_package, id_sqlite, A >::repository_fragment; + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::archive_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + archive (A::table_name, "\"archive\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::purge_archive_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + purge_archive (A::table_name, "\"purge_archive\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::src_root_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + src_root (A::table_name, "\"src_root\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::purge_src_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + purge_src (A::table_name, "\"purge_src\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::manifest_checksum_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + manifest_checksum (A::table_name, "\"manifest_checksum\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::buildfiles_checksum_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + buildfiles_checksum (A::table_name, "\"buildfiles_checksum\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::out_root_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + out_root (A::table_name, "\"out_root\"", 0); + + template + const typename query_columns< ::bpkg::selected_package, id_sqlite, A >::config_checksum_type_ + query_columns< ::bpkg::selected_package, id_sqlite, A >:: + config_checksum (A::table_name, "\"config_checksum\"", 0); + + template + struct pointer_query_columns< ::bpkg::selected_package, id_sqlite, A >: + query_columns< ::bpkg::selected_package, id_sqlite, A > + { + }; + + template <> + class access::object_traits_impl< ::bpkg::selected_package, id_sqlite >: + public access::object_traits< ::bpkg::selected_package > + { + public: + struct id_image_type + { + details::buffer id_value; + std::size_t id_size; + bool id_null; + + std::size_t version; + }; + + struct image_type + { + // name + // + details::buffer name_value; + std::size_t name_size; + bool name_null; + + // version + // + composite_value_traits< ::bpkg::_version, id_sqlite >::image_type version_value; + + // state + // + details::buffer state_value; + std::size_t state_size; + bool state_null; + + // substate + // + details::buffer substate_value; + std::size_t substate_size; + bool substate_null; + + // hold_package + // + long long hold_package_value; + bool hold_package_null; + + // hold_version + // + long long hold_version_value; + bool hold_version_null; + + // repository_fragment + // + composite_value_traits< ::bpkg::_repository_location, id_sqlite >::image_type repository_fragment_value; + + // archive + // + details::buffer archive_value; + std::size_t archive_size; + bool archive_null; + + // purge_archive + // + long long purge_archive_value; + bool purge_archive_null; + + // src_root + // + details::buffer src_root_value; + std::size_t src_root_size; + bool src_root_null; + + // purge_src + // + long long purge_src_value; + bool purge_src_null; + + // manifest_checksum + // + details::buffer manifest_checksum_value; + std::size_t manifest_checksum_size; + bool manifest_checksum_null; + + // buildfiles_checksum + // + details::buffer buildfiles_checksum_value; + std::size_t buildfiles_checksum_size; + bool buildfiles_checksum_null; + + // out_root + // + details::buffer out_root_value; + std::size_t out_root_size; + bool out_root_null; + + // config_checksum + // + details::buffer config_checksum_value; + std::size_t config_checksum_size; + bool config_checksum_null; + + std::size_t version; + }; + + struct extra_statement_cache_type; + + // prerequisites + // + struct prerequisites_traits + { + static const std::size_t id_column_count = 1UL; + static const std::size_t data_column_count = 19UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::bpkg::package_prerequisites container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::key_type key_type; + typedef container_traits_type::value_type value_type; + + typedef map_functions functions_type; + typedef sqlite::container_statements< prerequisites_traits > statements_type; + + struct data_image_type + { + // key + // + composite_value_traits< ::bpkg::_selected_package_ref, id_sqlite >::image_type key_value; + + // value + // + composite_value_traits< value_type, id_sqlite >::image_type value_value; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + const key_type*, + const value_type&); + + static void + init (key_type&, + value_type&, + const data_image_type&, + database*); + + static void + insert (const key_type&, const value_type&, void*); + + static bool + select (key_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // dependency_alternatives + // + struct dependency_alternatives_traits + { + static const std::size_t id_column_count = 1UL; + static const std::size_t data_column_count = 3UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::bpkg::selected_package::indexes_type container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::index_type index_type; + typedef container_traits_type::value_type value_type; + + typedef ordered_functions functions_type; + typedef sqlite::container_statements< dependency_alternatives_traits > statements_type; + + struct data_image_type + { + // index + // + long long index_value; + bool index_null; + + // value + // + long long value_value; + bool value_null; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + index_type*, + const value_type&); + + static void + init (index_type&, + value_type&, + const data_image_type&, + database*); + + static void + insert (index_type, const value_type&, void*); + + static bool + select (index_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // config_variables + // + struct config_variables_traits + { + static const std::size_t id_column_count = 1UL; + static const std::size_t data_column_count = 4UL; + + static const bool versioned = false; + + static const char insert_statement[]; + static const char select_statement[]; + static const char delete_statement[]; + + typedef ::std::vector< ::bpkg::config_variable > container_type; + typedef + odb::access::container_traits + container_traits_type; + typedef container_traits_type::index_type index_type; + typedef container_traits_type::value_type value_type; + + typedef ordered_functions functions_type; + typedef sqlite::container_statements< config_variables_traits > statements_type; + + struct data_image_type + { + // index + // + long long index_value; + bool index_null; + + // value + // + composite_value_traits< value_type, id_sqlite >::image_type value_value; + + std::size_t version; + }; + + static void + bind (sqlite::bind*, + const sqlite::bind* id, + std::size_t id_size, + data_image_type&); + + static void + grow (data_image_type&, + bool*); + + static void + init (data_image_type&, + index_type*, + const value_type&); + + static void + init (index_type&, + value_type&, + const data_image_type&, + database*); + + static void + insert (index_type, const value_type&, void*); + + static bool + select (index_type&, value_type&, void*); + + static void + delete_ (void*); + + static void + persist (const container_type&, + statements_type&); + + static void + load (container_type&, + statements_type&); + + static void + update (const container_type&, + statements_type&); + + static void + erase (statements_type&); + }; + + // dependency_alternatives_section + // + struct dependency_alternatives_section_traits + { + typedef object_traits_impl::image_type image_type; + typedef object_traits_impl::id_image_type id_image_type; + + static const std::size_t id_column_count = 1UL; + static const std::size_t managed_optimistic_load_column_count = 0UL; + static const std::size_t load_column_count = 0UL; + static const std::size_t managed_optimistic_update_column_count = 0UL; + static const std::size_t update_column_count = 0UL; + + static const bool versioned = false; + + static void + load (extra_statement_cache_type&, object_type&); + + static void + update (extra_statement_cache_type&, const object_type&); + }; + + using object_traits::id; + + static id_type + id (const image_type&); + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static void + bind (sqlite::bind*, id_image_type&); + + static bool + init (image_type&, + const object_type&, + sqlite::statement_kind); + + static void + init (object_type&, + const image_type&, + database*); + + static void + init (id_image_type&, const id_type&); + + typedef sqlite::object_statements statements_type; + + typedef sqlite::query_base query_base_type; + + static const std::size_t column_count = 22UL; + static const std::size_t id_column_count = 1UL; + static const std::size_t inverse_column_count = 0UL; + static const std::size_t readonly_column_count = 0UL; + static const std::size_t managed_optimistic_column_count = 0UL; + + static const std::size_t separate_load_column_count = 0UL; + static const std::size_t separate_update_column_count = 0UL; + + static const bool versioned = false; + + static const char persist_statement[]; + static const char find_statement[]; + static const char update_statement[]; + static const char erase_statement[]; + static const char query_statement[]; + static const char erase_query_statement[]; + + static const char table_name[]; + + static void + persist (database&, const object_type&); + + static pointer_type + find (database&, const id_type&); + + static bool + find (database&, const id_type&, object_type&); + + static bool + reload (database&, object_type&); + + static void + update (database&, const object_type&); + + static void + erase (database&, const id_type&); + + static void + erase (database&, const object_type&); + + static bool + load (connection&, object_type&, section&); + + static bool + update (connection&, const object_type&, const section&); + + static result + query (database&, const query_base_type&); + + static unsigned long long + erase_query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + + public: + static bool + find_ (statements_type&, + const id_type*); + + static void + load_ (statements_type&, + object_type&, + bool reload); + }; + + template <> + class access::object_traits_impl< ::bpkg::selected_package, id_common >: + public access::object_traits_impl< ::bpkg::selected_package, id_sqlite > + { + }; + + // certificate + // + template + struct query_columns< ::bpkg::certificate, id_sqlite, A > + { + // id + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + id_type_; + + static const id_type_ id; + + // fingerprint + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + fingerprint_type_; + + static const fingerprint_type_ fingerprint; + + // name + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + name_type_; + + static const name_type_ name; + + // organization + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + organization_type_; + + static const organization_type_ organization; + + // email + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::std::string, + sqlite::id_text >::query_type, + sqlite::id_text > + email_type_; + + static const email_type_ email; + + // start_date + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::uint64_t, + sqlite::id_integer >::query_type, + sqlite::id_integer > + start_date_type_; + + static const start_date_type_ start_date; + + // end_date + // + typedef + sqlite::query_column< + sqlite::value_traits< + ::uint64_t, + sqlite::id_integer >::query_type, + sqlite::id_integer > + end_date_type_; + + static const end_date_type_ end_date; + }; + + template + const typename query_columns< ::bpkg::certificate, id_sqlite, A >::id_type_ + query_columns< ::bpkg::certificate, id_sqlite, A >:: + id (A::table_name, "\"id\"", 0); + + template + const typename query_columns< ::bpkg::certificate, id_sqlite, A >::fingerprint_type_ + query_columns< ::bpkg::certificate, id_sqlite, A >:: + fingerprint (A::table_name, "\"fingerprint\"", 0); + + template + const typename query_columns< ::bpkg::certificate, id_sqlite, A >::name_type_ + query_columns< ::bpkg::certificate, id_sqlite, A >:: + name (A::table_name, "\"name\"", 0); + + template + const typename query_columns< ::bpkg::certificate, id_sqlite, A >::organization_type_ + query_columns< ::bpkg::certificate, id_sqlite, A >:: + organization (A::table_name, "\"organization\"", 0); + + template + const typename query_columns< ::bpkg::certificate, id_sqlite, A >::email_type_ + query_columns< ::bpkg::certificate, id_sqlite, A >:: + email (A::table_name, "\"email\"", 0); + + template + const typename query_columns< ::bpkg::certificate, id_sqlite, A >::start_date_type_ + query_columns< ::bpkg::certificate, id_sqlite, A >:: + start_date (A::table_name, "\"start_date\"", 0); + + template + const typename query_columns< ::bpkg::certificate, id_sqlite, A >::end_date_type_ + query_columns< ::bpkg::certificate, id_sqlite, A >:: + end_date (A::table_name, "\"end_date\"", 0); + + template + struct pointer_query_columns< ::bpkg::certificate, id_sqlite, A >: + query_columns< ::bpkg::certificate, id_sqlite, A > + { + }; + + template <> + class access::object_traits_impl< ::bpkg::certificate, id_sqlite >: + public access::object_traits< ::bpkg::certificate > + { + public: + struct id_image_type + { + details::buffer id_value; + std::size_t id_size; + bool id_null; + + std::size_t version; + }; + + struct image_type + { + // id + // + details::buffer id_value; + std::size_t id_size; + bool id_null; + + // fingerprint + // + details::buffer fingerprint_value; + std::size_t fingerprint_size; + bool fingerprint_null; + + // name + // + details::buffer name_value; + std::size_t name_size; + bool name_null; + + // organization + // + details::buffer organization_value; + std::size_t organization_size; + bool organization_null; + + // email + // + details::buffer email_value; + std::size_t email_size; + bool email_null; + + // start_date + // + long long start_date_value; + bool start_date_null; + + // end_date + // + long long end_date_value; + bool end_date_null; + + std::size_t version; + }; + + struct extra_statement_cache_type; + + using object_traits::id; + + static id_type + id (const image_type&); + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&, + sqlite::statement_kind); + + static void + bind (sqlite::bind*, id_image_type&); + + static bool + init (image_type&, + const object_type&, + sqlite::statement_kind); + + static void + init (object_type&, + const image_type&, + database*); + + static void + init (id_image_type&, const id_type&); + + typedef sqlite::object_statements statements_type; + + typedef sqlite::query_base query_base_type; + + static const std::size_t column_count = 7UL; + static const std::size_t id_column_count = 1UL; + static const std::size_t inverse_column_count = 0UL; + static const std::size_t readonly_column_count = 0UL; + static const std::size_t managed_optimistic_column_count = 0UL; + + static const std::size_t separate_load_column_count = 0UL; + static const std::size_t separate_update_column_count = 0UL; + + static const bool versioned = false; + + static const char persist_statement[]; + static const char find_statement[]; + static const char update_statement[]; + static const char erase_statement[]; + static const char query_statement[]; + static const char erase_query_statement[]; + + static const char table_name[]; + + static void + persist (database&, const object_type&); + + static pointer_type + find (database&, const id_type&); + + static bool + find (database&, const id_type&, object_type&); + + static bool + reload (database&, object_type&); + + static void + update (database&, const object_type&); + + static void + erase (database&, const id_type&); + + static void + erase (database&, const object_type&); + + static result + query (database&, const query_base_type&); + + static unsigned long long + erase_query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + + public: + static bool + find_ (statements_type&, + const id_type*); + + static void + load_ (statements_type&, + object_type&, + bool reload); + }; + + template <> + class access::object_traits_impl< ::bpkg::certificate, id_common >: + public access::object_traits_impl< ::bpkg::certificate, id_sqlite > + { + }; + + // package_dependent + // + template <> + class access::view_traits_impl< ::bpkg::package_dependent, id_sqlite >: + public access::view_traits< ::bpkg::package_dependent > + { + public: + struct image_type + { + // name + // + details::buffer name_value; + std::size_t name_size; + bool name_null; + + // constraint + // + composite_value_traits< ::bpkg::version_constraint, id_sqlite >::image_type constraint_value; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + typedef sqlite::query_base query_base_type; + struct query_columns + { + }; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 17UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::package_dependent, id_common >: + public access::view_traits_impl< ::bpkg::package_dependent, id_sqlite > + { + }; + + // fragment_repository_count + // + template <> + class access::view_traits_impl< ::bpkg::fragment_repository_count, id_sqlite >: + public access::view_traits< ::bpkg::fragment_repository_count > + { + public: + struct image_type + { + // result + // + long long result_value; + bool result_null; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + typedef sqlite::query_base query_base_type; + struct query_columns + { + }; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 1UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::fragment_repository_count, id_common >: + public access::view_traits_impl< ::bpkg::fragment_repository_count, id_sqlite > + { + }; + + // fragment_repository + // + template <> + class access::view_traits_impl< ::bpkg::fragment_repository, id_sqlite >: + public access::view_traits< ::bpkg::fragment_repository > + { + public: + struct image_type + { + // object + // + object_traits_impl< ::bpkg::repository, id_sqlite >::image_type object_value; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + typedef sqlite::query_base query_base_type; + struct query_columns; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 5UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::fragment_repository, id_common >: + public access::view_traits_impl< ::bpkg::fragment_repository, id_sqlite > + { + }; + + // repository_complement_dependent + // + template <> + class access::view_traits_impl< ::bpkg::repository_complement_dependent, id_sqlite >: + public access::view_traits< ::bpkg::repository_complement_dependent > + { + public: + struct image_type + { + // object + // + object_traits_impl< ::bpkg::repository_fragment, id_sqlite >::image_type object_value; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + struct complement_tag; + + typedef sqlite::query_base query_base_type; + struct query_columns; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 3UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::repository_complement_dependent, id_common >: + public access::view_traits_impl< ::bpkg::repository_complement_dependent, id_sqlite > + { + }; + + // repository_prerequisite_dependent + // + template <> + class access::view_traits_impl< ::bpkg::repository_prerequisite_dependent, id_sqlite >: + public access::view_traits< ::bpkg::repository_prerequisite_dependent > + { + public: + struct image_type + { + // object + // + object_traits_impl< ::bpkg::repository_fragment, id_sqlite >::image_type object_value; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + struct prerequisite_tag; + + typedef sqlite::query_base query_base_type; + struct query_columns; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 3UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::repository_prerequisite_dependent, id_common >: + public access::view_traits_impl< ::bpkg::repository_prerequisite_dependent, id_sqlite > + { + }; + + // repository_fragment_package + // + template <> + class access::view_traits_impl< ::bpkg::repository_fragment_package, id_sqlite >: + public access::view_traits< ::bpkg::repository_fragment_package > + { + public: + struct image_type + { + // package + // + object_traits_impl< ::bpkg::available_package, id_sqlite >::image_type package_value; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + struct package_tag; + + typedef sqlite::query_base query_base_type; + struct query_columns; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 15UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::repository_fragment_package, id_common >: + public access::view_traits_impl< ::bpkg::repository_fragment_package, id_sqlite > + { + }; + + // package_repository_fragment + // + template <> + class access::view_traits_impl< ::bpkg::package_repository_fragment, id_sqlite >: + public access::view_traits< ::bpkg::package_repository_fragment > + { + public: + struct image_type + { + // package_id + // + composite_value_traits< ::bpkg::available_package_id, id_sqlite >::image_type package_id_value; + + // repository_fragment + // + object_traits_impl< ::bpkg::repository_fragment, id_sqlite >::image_type repository_fragment_value; + + std::size_t version; + }; + + typedef sqlite::view_statements statements_type; + + struct package_tag; + + typedef sqlite::query_base query_base_type; + struct query_columns; + + static const bool versioned = false; + + static bool + grow (image_type&, + bool*); + + static void + bind (sqlite::bind*, + image_type&); + + static void + init (view_type&, + const image_type&, + database*); + + static const std::size_t column_count = 9UL; + + static query_base_type + query_statement (const query_base_type&); + + static result + query (database&, const query_base_type&); + + static odb::details::shared_ptr + prepare_query (connection&, const char*, const query_base_type&); + + static odb::details::shared_ptr + execute_query (prepared_query_impl&); + }; + + template <> + class access::view_traits_impl< ::bpkg::package_repository_fragment, id_common >: + public access::view_traits_impl< ::bpkg::package_repository_fragment, id_sqlite > + { + }; + + // configuration + // + // repository_fragment + // + // repository_fragment_count + // + struct access::view_traits_impl< ::bpkg::repository_fragment_count, id_sqlite >::query_columns: + odb::pointer_query_columns< + ::bpkg::repository_fragment, + id_sqlite, + odb::access::object_traits_impl< ::bpkg::repository_fragment, id_sqlite > > + { + }; + + // repository + // + // repository_count + // + struct access::view_traits_impl< ::bpkg::repository_count, id_sqlite >::query_columns: + odb::pointer_query_columns< + ::bpkg::repository, + id_sqlite, + odb::access::object_traits_impl< ::bpkg::repository, id_sqlite > > + { + }; + + // available_package + // + // available_package_count + // + struct access::view_traits_impl< ::bpkg::available_package_count, id_sqlite >::query_columns: + odb::pointer_query_columns< + ::bpkg::available_package, + id_sqlite, + odb::access::object_traits_impl< ::bpkg::available_package, id_sqlite > > + { + }; + + // available_test + // + template <> + struct alias_traits< + ::bpkg::available_package, + id_sqlite, + access::view_traits_impl< ::bpkg::available_test, id_sqlite >::package_tag> + { + static const char table_name[]; + }; + + struct access::view_traits_impl< ::bpkg::available_test, id_sqlite >::query_columns: + odb::pointer_query_columns< + ::bpkg::available_package, + id_sqlite, + odb::alias_traits< + ::bpkg::available_package, + id_sqlite, + access::view_traits_impl< ::bpkg::available_test, id_sqlite >::package_tag> > + { + }; + + // available_main + // + template <> + struct alias_traits< + ::bpkg::available_package, + id_sqlite, + access::view_traits_impl< ::bpkg::available_main, id_sqlite >::package_tag> + { + static const char table_name[]; + }; + + struct access::view_traits_impl< ::bpkg::available_main, id_sqlite >::query_columns: + odb::pointer_query_columns< + ::bpkg::available_package, + id_sqlite, + odb::alias_traits< + ::bpkg::available_package, + id_sqlite, + access::view_traits_impl< ::bpkg::available_main, id_sqlite >::package_tag> > + { + }; + + // selected_package + // + // certificate + // + // fragment_repository + // + struct access::view_traits_impl< ::bpkg::fragment_repository, id_sqlite >::query_columns + { + // repository + // + typedef + odb::pointer_query_columns< + ::bpkg::repository, + id_sqlite, + odb::access::object_traits_impl< ::bpkg::repository, id_sqlite > > + repository; + + // repository_fragment + // + typedef + odb::pointer_query_columns< + ::bpkg::repository_fragment, + id_sqlite, + odb::access::object_traits_impl< ::bpkg::repository_fragment, id_sqlite > > + repository_fragment; + }; + + // repository_complement_dependent + // + template <> + struct alias_traits< + ::bpkg::repository, + id_sqlite, + access::view_traits_impl< ::bpkg::repository_complement_dependent, id_sqlite >::complement_tag> + { + static const char table_name[]; + }; + + struct access::view_traits_impl< ::bpkg::repository_complement_dependent, id_sqlite >::query_columns + { + // complement + // + typedef + odb::pointer_query_columns< + ::bpkg::repository, + id_sqlite, + odb::alias_traits< ::bpkg::repository, + id_sqlite, + access::view_traits_impl< ::bpkg::repository_complement_dependent, id_sqlite >::complement_tag> > + complement; + + // repository_fragment + // + typedef + odb::pointer_query_columns< + ::bpkg::repository_fragment, + id_sqlite, + odb::access::object_traits_impl< ::bpkg::repository_fragment, id_sqlite > > + repository_fragment; + }; + + // repository_prerequisite_dependent + // + template <> + struct alias_traits< + ::bpkg::repository, + id_sqlite, + access::view_traits_impl< ::bpkg::repository_prerequisite_dependent, id_sqlite >::prerequisite_tag> + { + static const char table_name[]; + }; + + struct access::view_traits_impl< ::bpkg::repository_prerequisite_dependent, id_sqlite >::query_columns + { + // prerequisite + // + typedef + odb::pointer_query_columns< + ::bpkg::repository, + id_sqlite, + odb::alias_traits< ::bpkg::repository, + id_sqlite, + access::view_traits_impl< ::bpkg::repository_prerequisite_dependent, id_sqlite >::prerequisite_tag> > + prerequisite; + + // repository_fragment + // + typedef + odb::pointer_query_columns< + ::bpkg::repository_fragment, + id_sqlite, + odb::access::object_traits_impl< ::bpkg::repository_fragment, id_sqlite > > + repository_fragment; + }; + + // repository_fragment_package + // + template <> + struct alias_traits< + ::bpkg::available_package, + id_sqlite, + access::view_traits_impl< ::bpkg::repository_fragment_package, id_sqlite >::package_tag> + { + static const char table_name[]; + }; + + struct access::view_traits_impl< ::bpkg::repository_fragment_package, id_sqlite >::query_columns + { + // repository_fragment + // + typedef + odb::pointer_query_columns< + ::bpkg::repository_fragment, + id_sqlite, + odb::access::object_traits_impl< ::bpkg::repository_fragment, id_sqlite > > + repository_fragment; + + // package + // + typedef + odb::pointer_query_columns< + ::bpkg::available_package, + id_sqlite, + odb::alias_traits< ::bpkg::available_package, + id_sqlite, + access::view_traits_impl< ::bpkg::repository_fragment_package, id_sqlite >::package_tag> > + package; + }; + + // package_repository_fragment + // + template <> + struct alias_traits< + ::bpkg::available_package, + id_sqlite, + access::view_traits_impl< ::bpkg::package_repository_fragment, id_sqlite >::package_tag> + { + static const char table_name[]; + }; + + struct access::view_traits_impl< ::bpkg::package_repository_fragment, id_sqlite >::query_columns + { + // repository_fragment + // + typedef + odb::pointer_query_columns< + ::bpkg::repository_fragment, + id_sqlite, + odb::access::object_traits_impl< ::bpkg::repository_fragment, id_sqlite > > + repository_fragment; + + // package + // + typedef + odb::pointer_query_columns< + ::bpkg::available_package, + id_sqlite, + odb::alias_traits< ::bpkg::available_package, + id_sqlite, + access::view_traits_impl< ::bpkg::package_repository_fragment, id_sqlite >::package_tag> > + package; + }; +} + +#include + +#include + +#endif // BPKG_PACKAGE_ODB_HXX -- cgit v1.1