diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-12-03 13:11:42 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-12-03 13:11:42 +0200 |
commit | b9714c9f9a878ab363b85dc4add9eb16fe123d67 (patch) | |
tree | 0d7343352fe907e5ecddef2ae14a706d146d19cf /odb/mysql/database.ixx | |
parent | bfe99354380c4a3a77a181cd8abaacab09a45fb5 (diff) |
Add support for executing common query using static interface
Diffstat (limited to 'odb/mysql/database.ixx')
-rw-r--r-- | odb/mysql/database.ixx | 51 |
1 files changed, 39 insertions, 12 deletions
diff --git a/odb/mysql/database.ixx b/odb/mysql/database.ixx index 5f3854a..9d12ddf 100644 --- a/odb/mysql/database.ixx +++ b/odb/mysql/database.ixx @@ -335,7 +335,7 @@ namespace odb { // T is always object_type. // - return erase_query<T> (mysql::query<T> ()); + return erase_query<T> (mysql::query_base ()); } template <typename T> @@ -344,7 +344,7 @@ namespace odb { // T is always object_type. // - return erase_query<T> (mysql::query<T> (q)); + return erase_query<T> (mysql::query_base (q)); } template <typename T> @@ -353,12 +353,12 @@ namespace odb { // T is always object_type. // - return erase_query<T> (mysql::query<T> (q)); + return erase_query<T> (mysql::query_base (q)); } template <typename T> inline unsigned long long database:: - erase_query (const mysql::query<T>& q) + erase_query (const mysql::query_base& q) { // T is always object_type. // @@ -366,29 +366,38 @@ namespace odb } template <typename T> + inline unsigned long long database:: + erase_query (const odb::query_base& q) + { + // Translate to native query. + // + return erase_query<T> (mysql::query_base (q)); + } + + template <typename T> inline result<T> database:: query (bool cache) { - return query<T> (mysql::query<T> (), cache); + return query<T> (mysql::query_base (), cache); } template <typename T> inline result<T> database:: query (const char* q, bool cache) { - return query<T> (mysql::query<T> (q), cache); + return query<T> (mysql::query_base (q), cache); } template <typename T> inline result<T> database:: query (const std::string& q, bool cache) { - return query<T> (mysql::query<T> (q), cache); + return query<T> (mysql::query_base (q), cache); } template <typename T> inline result<T> database:: - query (const mysql::query<T>& q, bool cache) + query (const mysql::query_base& q, bool cache) { // T is always object_type. We also don't need to check for transaction // here; object_traits::query () does this. @@ -402,27 +411,45 @@ namespace odb } template <typename T> + inline result<T> database:: + query (const odb::query_base& q, bool cache) + { + // Translate to native query. + // + return query<T> (mysql::query_base (q), cache); + } + + template <typename T> inline prepared_query<T> database:: prepare_query (const char* n, const char* q) { - return prepare_query<T> (n, mysql::query<T> (q)); + return prepare_query<T> (n, mysql::query_base (q)); } template <typename T> inline prepared_query<T> database:: prepare_query (const char* n, const std::string& q) { - return prepare_query<T> (n, mysql::query<T> (q)); + return prepare_query<T> (n, mysql::query_base (q)); } template <typename T> inline prepared_query<T> database:: - prepare_query (const char* n, const mysql::query<T>& q) + prepare_query (const char* n, const mysql::query_base& q) { // Throws if not in transaction. // mysql::connection& c (transaction::current ().connection ()); - return c.prepare_query (n, q); + return c.prepare_query<T> (n, q); + } + + template <typename T> + inline prepared_query<T> database:: + prepare_query (const char* n, const odb::query_base& q) + { + // Translate to native query. + // + return prepare_query<T> (n, mysql::query_base (q)); } } } |