5 #ifndef ODB_DATABASE_HXX
6 #define ODB_DATABASE_HXX
10 #include <odb/details/config.hxx>
18 # include <functional>
30 #include <odb/details/export.hxx>
31 #include <odb/details/mutex.hxx>
32 #include <odb/details/c-string.hxx>
36 class transaction_impl;
58 template <
typename T,
template <
typename>
class P>
60 persist (
const P<T>& obj_ptr);
62 template <
typename T,
typename A1,
template <
typename,
typename>
class P>
64 persist (
const P<T, A1>& obj_ptr);
66 template <
typename T,
template <
typename>
class P>
68 persist (P<T>& obj_ptr);
70 template <
typename T,
typename A1,
template <
typename,
typename>
class P>
72 persist (P<T, A1>& obj_ptr);
100 template <
typename T>
104 template <
typename T,
template <
typename>
class P>
106 reload (
const P<T>& obj_ptr);
108 template <
typename T,
typename A1,
template <
typename,
typename>
class P>
110 reload (
const P<T, A1>& obj_ptr);
112 template <
typename T,
template <
typename>
class P>
114 reload (P<T>& obj_ptr);
116 template <
typename T,
typename A1,
template <
typename,
typename>
class P>
118 reload (P<T, A1>& obj_ptr);
120 template <
typename T>
126 template <
typename T>
130 template <
typename T>
136 template <
typename T>
140 template <
typename T>
144 template <
typename T,
template <
typename>
class P>
146 update (
const P<T>& obj_ptr);
148 template <
typename T,
typename A1,
template <
typename,
typename>
class P>
150 update (
const P<T, A1>& obj_ptr);
152 template <
typename T,
template <
typename>
class P>
154 update (P<T>& obj_ptr);
156 template <
typename T,
typename A1,
template <
typename,
typename>
class P>
158 update (P<T, A1>& obj_ptr);
160 template <
typename T>
168 template <
typename T>
170 update (
const T&
object,
const section&);
175 template <
typename T>
179 template <
typename T>
183 template <
typename T>
187 template <
typename T,
template <
typename>
class P>
189 erase (
const P<T>& obj_ptr);
191 template <
typename T,
typename A1,
template <
typename,
typename>
class P>
193 erase (
const P<T, A1>& obj_ptr);
195 template <
typename T,
template <
typename>
class P>
197 erase (P<T>& obj_ptr);
199 template <
typename T,
typename A1,
template <
typename,
typename>
class P>
201 erase (P<T, A1>& obj_ptr);
203 template <
typename T>
209 template <
typename T>
213 template <
typename T>
215 erase_query (
const char*);
217 template <
typename T>
219 erase_query (
const std::string&);
221 template <
typename T>
227 template <
typename T>
229 query (
bool cache =
true);
231 template <
typename T>
233 query (
const char*,
bool cache =
true);
235 template <
typename T>
237 query (
const std::string&,
bool cache =
true);
239 template <
typename T>
245 template <
typename T>
247 prepare_query (
const char* name,
const char*);
249 template <
typename T>
251 prepare_query (
const char* name,
const std::string&);
253 template <
typename T>
257 template <
typename T>
261 template <
typename T,
typename P>
266 template <
typename T,
typename P>
271 template <
typename T>
273 lookup_query (
const char* name)
const;
275 template <
typename T,
typename P>
277 lookup_query (
const char* name, P*& params)
const;
286 std::function<void (const char*, connection_type&)>
293 query_factory (
const char* name, query_factory_type);
296 lookup_query_factory (
const char* name)
const;
308 execute (
const char*
statement, std::size_t length);
346 schema_migration (
const std::string& schema_name =
"")
const;
364 const std::string& schema_name =
"");
368 const std::string& schema_name =
"");
374 schema_version_table (
const std::string& table_name);
379 schema_version_table (
const std::string& table_name,
380 const std::string& schema_name);
387 schema_version_sequence ()
const;
396 load_schema_version (
const std::string& schema_name)
const = 0;
400 schema_version_migration_ (
const std::string& schema_name)
const;
420 template <
typename T, database_
id DB>
424 template <
typename T, database_
id DB>
428 template <
typename T, database_
id DB>
432 template <
typename T, database_
id DB>
436 template <
typename T, database_
id DB>
440 template <
typename T, database_
id DB>
444 template <
typename T, database_
id DB>
448 template <
typename T, database_
id DB>
452 template <
typename T, database_
id DB>
456 template <
typename T, database_
id DB>
460 template <
typename T, database_
id DB>
462 update_ (
const T&,
const section&);
464 template <
typename T, database_
id DB>
468 template <
typename T, database_
id DB>
472 template <
typename T, database_
id DB>
476 template <
typename T,
483 std::map<const char*, query_factory_type, details::c_string_comparator>
499 #include <odb/database.ixx>
500 #include <odb/database.txx>
504 #endif // ODB_DATABASE_HXX
Definition: statement.hxx:20
Definition: database.hxx:390
Definition: database.hxx:479
details::shared_ptr< connection > connection_ptr
Definition: connection.hxx:30
odb::tracer tracer_type
Definition: database.hxx:325
odb::schema_version_migration schema_version_migration_type
Definition: database.hxx:340
odb::schema_version schema_version_type
Definition: database.hxx:339
schema_version_map schema_version_map_
Definition: database.hxx:493
std::map< const char *, query_factory_type, details::c_string_comparator > query_factory_map
Definition: database.hxx:479
tracer_type * tracer_
Definition: database.hxx:489
query_factory_map query_factory_map_
Definition: database.hxx:490
std::string schema_version_table_
Definition: database.hxx:494
class_kind
Definition: traits.hxx:77
database_id id_
Definition: database.hxx:488
Definition: query.hxx:110
Definition: forward.hxx:123
Definition: prepared-query.hxx:55
odb::connection connection_type
Definition: database.hxx:282
std::string version_table
Definition: database.hxx:392
Definition: transaction.hxx:216
details::mutex mutex_
Definition: database.hxx:492
unsigned long long schema_version
Definition: forward.hxx:30
Definition: database.hxx:38
Definition: connection.hxx:33
Definition: tracer.hxx:15
database_id
Definition: forward.hxx:74
Definition: schema-version.hxx:15
Definition: section.hxx:15
Definition: result.hxx:75
unsigned int schema_version_seq_
Definition: database.hxx:495
access::object_traits< T >::pointer_type pointer_type
Definition: traits.hxx:116
std::map< std::string, schema_version_info > schema_version_map
Definition: database.hxx:486
Definition: traits.hxx:85