From be97326d67365e16175cc599e23348feaf80e0fe Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 8 Oct 2012 16:09:07 +0200 Subject: 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. --- odb/database.hxx | 61 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 54 insertions(+), 7 deletions(-) (limited to 'odb/database.hxx') 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::id_type persist (const typename object_traits::pointer_type& obj_ptr); - // Throw object_not_persistent if not found. + // Load an object. Throw object_not_persistent if not found. // template typename object_traits::pointer_type @@ -73,6 +73,8 @@ namespace odb void load (const typename object_traits::id_type& id, T& object); + // Reload an object. + // template void reload (T& object); @@ -101,7 +103,7 @@ namespace odb void reload (const typename object_traits::pointer_type& obj_ptr); - // Return NULL/false if not found. + // Loan an object if found. Return NULL/false if not found. // template typename object_traits::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 + template + typename object_traits::id_type + persist_ (T&); + + template typename object_traits::id_type persist_ (const typename object_traits::pointer_type&); - template + template + typename object_traits::pointer_type + load_ (const typename object_traits::id_type&); + + template + void + load_ (const typename object_traits::id_type&, T&); + + template + void + reload_ (T&); + + template + typename object_traits::pointer_type + find_ (const typename object_traits::id_type&); + + template + bool + find_ (const typename object_traits::id_type&, T&); + + template + void + update_ (T&); + + template void update_ (const typename object_traits::pointer_type&); - template + template + void + erase_ (const typename object_traits::id_type&); + + template + void + erase_ (T&); + + template void erase_ (const typename object_traits::pointer_type&); - template + template ::kind> struct query_; protected: + database_id id_; tracer_type* tracer_; }; } -- cgit v1.1