aboutsummaryrefslogtreecommitdiff
path: root/odb/query.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/query.hxx')
-rw-r--r--odb/query.hxx32
1 files changed, 30 insertions, 2 deletions
diff --git a/odb/query.hxx b/odb/query.hxx
index 5cdeb6f..780ae39 100644
--- a/odb/query.hxx
+++ b/odb/query.hxx
@@ -12,8 +12,36 @@
namespace odb
{
- template <typename T,
- typename Q = typename object_traits<T>::query_base_type>
+ template <typename T, class_kind kind = class_traits<T>::kind>
+ struct query_selector;
+
+ template <typename T>
+ struct query_selector<T, class_object>
+ {
+ typedef typename object_traits<T>::query_base_type base_type;
+ typedef typename object_traits<T>::query_type type;
+
+ static const char*
+ table_name ()
+ {
+ return object_traits<T>::table_name;
+ }
+ };
+
+ template <typename T>
+ struct query_selector<T, class_view>
+ {
+ typedef typename view_traits<T>::query_base_type base_type;
+ typedef typename view_traits<T>::query_type type;
+
+ static const char*
+ table_name ()
+ {
+ return "";
+ }
+ };
+
+ template <typename T, typename Q = typename query_selector<T>::base_type>
class query;
namespace core