From f5d27a72c12b8beebf6ac34fe5fc1239b9c7c691 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Fri, 19 Apr 2024 21:12:56 +0300 Subject: Make changes required for CI --- bdep/database-views-odb.cxx | 233 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 bdep/database-views-odb.cxx (limited to 'bdep/database-views-odb.cxx') diff --git a/bdep/database-views-odb.cxx b/bdep/database-views-odb.cxx new file mode 100644 index 0000000..1f1ec4f --- /dev/null +++ b/bdep/database-views-odb.cxx @@ -0,0 +1,233 @@ +// -*- C++ -*- +// +// This file was generated by ODB, object-relational mapping (ORM) +// compiler for C++. +// + +#include + +#include + +#include +#include // std::memcpy + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace odb +{ + // sqlite_master + // + + bool access::view_traits_impl< ::bdep::sqlite_master, id_sqlite >:: + grow (image_type& i, + bool* t) + { + ODB_POTENTIALLY_UNUSED (i); + ODB_POTENTIALLY_UNUSED (t); + + bool grew (false); + + // type + // + if (t[0UL]) + { + i.type_value.capacity (i.type_size); + grew = true; + } + + // name + // + if (t[1UL]) + { + i.name_value.capacity (i.name_size); + grew = true; + } + + // sql + // + if (t[2UL]) + { + i.sql_value.capacity (i.sql_size); + grew = true; + } + + return grew; + } + + void access::view_traits_impl< ::bdep::sqlite_master, id_sqlite >:: + bind (sqlite::bind* b, + image_type& i) + { + using namespace sqlite; + + sqlite::statement_kind sk (statement_select); + ODB_POTENTIALLY_UNUSED (sk); + + std::size_t n (0); + + // type + // + b[n].type = sqlite::image_traits< + ::std::string, + sqlite::id_text>::bind_value; + b[n].buffer = i.type_value.data (); + b[n].size = &i.type_size; + b[n].capacity = i.type_value.capacity (); + b[n].is_null = &i.type_null; + n++; + + // name + // + b[n].type = sqlite::image_traits< + ::std::string, + sqlite::id_text>::bind_value; + b[n].buffer = i.name_value.data (); + b[n].size = &i.name_size; + b[n].capacity = i.name_value.capacity (); + b[n].is_null = &i.name_null; + n++; + + // sql + // + b[n].type = sqlite::image_traits< + ::std::string, + sqlite::id_text>::bind_value; + b[n].buffer = i.sql_value.data (); + b[n].size = &i.sql_size; + b[n].capacity = i.sql_value.capacity (); + b[n].is_null = &i.sql_null; + n++; + } + + void access::view_traits_impl< ::bdep::sqlite_master, id_sqlite >:: + init (view_type& o, + const image_type& i, + database* db) + { + ODB_POTENTIALLY_UNUSED (o); + ODB_POTENTIALLY_UNUSED (i); + ODB_POTENTIALLY_UNUSED (db); + + // type + // + { + ::std::string& v = + o.type; + + sqlite::value_traits< + ::std::string, + sqlite::id_text >::set_value ( + v, + i.type_value, + i.type_size, + i.type_null); + } + + // name + // + { + ::std::string& v = + o.name; + + sqlite::value_traits< + ::std::string, + sqlite::id_text >::set_value ( + v, + i.name_value, + i.name_size, + i.name_null); + } + + // sql + // + { + ::std::string& v = + o.sql; + + sqlite::value_traits< + ::std::string, + sqlite::id_text >::set_value ( + v, + i.sql_value, + i.sql_size, + i.sql_null); + } + } + + access::view_traits_impl< ::bdep::sqlite_master, id_sqlite >::query_base_type + access::view_traits_impl< ::bdep::sqlite_master, id_sqlite >:: + query_statement (const query_base_type& q) + { + query_base_type r ( + "SELECT " + "\"type\", " + "\"type\", " + "\"sql\" "); + + r += "FROM \"sqlite_master\""; + + if (!q.empty ()) + { + r += " "; + r += q.clause_prefix (); + r += q; + } + + return r; + } + + result< access::view_traits_impl< ::bdep::sqlite_master, id_sqlite >::view_type > + access::view_traits_impl< ::bdep::sqlite_master, id_sqlite >:: + query (database& db, const query_base_type& q) + { + using namespace sqlite; + using odb::details::shared; + using odb::details::shared_ptr; + + sqlite::connection& conn ( + sqlite::transaction::current ().connection (db)); + statements_type& sts ( + conn.statement_cache ().find_view ()); + + image_type& im (sts.image ()); + binding& imb (sts.image_binding ()); + + if (im.version != sts.image_version () || imb.version == 0) + { + bind (imb.bind, im); + sts.image_version (im.version); + imb.version++; + } + + const query_base_type& qs (query_statement (q)); + qs.init_parameters (); + shared_ptr st ( + new (shared) select_statement ( + conn, + qs.clause (), + false, + true, + qs.parameters_binding (), + imb)); + + st->execute (); + + shared_ptr< odb::view_result_impl > r ( + new (shared) sqlite::view_result_impl ( + qs, st, sts, 0)); + + return result (r); + } +} + +#include -- cgit v1.1