diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-10-08 16:09:07 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-10-08 16:09:07 +0200 |
commit | be97326d67365e16175cc599e23348feaf80e0fe (patch) | |
tree | b38678104546ebd549824096683bd00f3f2be299 /odb/database.hxx | |
parent | 0b583b575ec00c544759cbf8d6481d35c34c5f63 (diff) |
Ground work for multi-database support
All generated code now includes database id. The database-specific
database class interface has been updated to include all the database
operations. The database-specific tests now use this interface.
Diffstat (limited to 'odb/database.hxx')
-rw-r--r-- | odb/database.hxx | 61 |
1 files changed, 54 insertions, 7 deletions
diff --git a/odb/database.hxx b/odb/database.hxx index 64f9d44..99205e7 100644 --- a/odb/database.hxx +++ b/odb/database.hxx @@ -63,7 +63,7 @@ namespace odb typename object_traits<T>::id_type persist (const typename object_traits<T>::pointer_type& obj_ptr); - // Throw object_not_persistent if not found. + // Load an object. Throw object_not_persistent if not found. // template <typename T> typename object_traits<T>::pointer_type @@ -73,6 +73,8 @@ namespace odb void load (const typename object_traits<T>::id_type& id, T& object); + // Reload an object. + // template <typename T> void reload (T& object); @@ -101,7 +103,7 @@ namespace odb void reload (const typename object_traits<T>::pointer_type& obj_ptr); - // Return NULL/false if not found. + // Loan an object if found. Return NULL/false if not found. // template <typename T> typename object_traits<T>::pointer_type @@ -250,8 +252,14 @@ namespace odb tracer_type* tracer () const; + // Database id. + // + public: + database_id + id () const; + protected: - database (); + database (database_id); private: database (const database&); @@ -264,22 +272,61 @@ namespace odb connection_ () = 0; protected: - template <typename T> + template <typename T, database_id DB> + typename object_traits<T>::id_type + persist_ (T&); + + template <typename T, database_id DB> typename object_traits<T>::id_type persist_ (const typename object_traits<T>::pointer_type&); - template <typename T> + template <typename T, database_id DB> + typename object_traits<T>::pointer_type + load_ (const typename object_traits<T>::id_type&); + + template <typename T, database_id DB> + void + load_ (const typename object_traits<T>::id_type&, T&); + + template <typename T, database_id DB> + void + reload_ (T&); + + template <typename T, database_id DB> + typename object_traits<T>::pointer_type + find_ (const typename object_traits<T>::id_type&); + + template <typename T, database_id DB> + bool + find_ (const typename object_traits<T>::id_type&, T&); + + template <typename T, database_id DB> + void + update_ (T&); + + template <typename T, database_id DB> void update_ (const typename object_traits<T>::pointer_type&); - template <typename T> + template <typename T, database_id DB> + void + erase_ (const typename object_traits<T>::id_type&); + + template <typename T, database_id DB> + void + erase_ (T&); + + template <typename T, database_id DB> void erase_ (const typename object_traits<T>::pointer_type&); - template <typename T, class_kind kind> + template <typename T, + database_id DB, + class_kind kind = class_traits<T>::kind> struct query_; protected: + database_id id_; tracer_type* tracer_; }; } |