aboutsummaryrefslogtreecommitdiff
path: root/common/view/test.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'common/view/test.hxx')
-rw-r--r--common/view/test.hxx114
1 files changed, 114 insertions, 0 deletions
diff --git a/common/view/test.hxx b/common/view/test.hxx
new file mode 100644
index 0000000..9ceed60
--- /dev/null
+++ b/common/view/test.hxx
@@ -0,0 +1,114 @@
+// file : common/view/test.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef TEST_HXX
+#define TEST_HXX
+
+#include <string>
+#include <memory>
+#include <cstddef> // std::size_t
+#include <iostream>
+
+#include <odb/core.hxx>
+
+#pragma db object
+struct country
+{
+ country (const std::string& c, std::string const& n)
+ : code (c), name (n)
+ {
+ }
+
+ country ()
+ {
+ }
+
+ #pragma db id
+ std::string code; // ISO 2-letter country code.
+
+ std::string name;
+};
+
+#pragma db object
+struct person
+{
+ person (unsigned long i,
+ const std::string& fn,
+ const std::string& ln,
+ unsigned short a,
+ country* l)
+ : id (i), first_name (fn), last_name (ln), age (a), location (l)
+ {
+ }
+
+ ~person ()
+ {
+ delete location;
+ }
+
+ person ()
+ {
+ }
+
+ #pragma db id
+ unsigned long id;
+
+ #pragma db column ("first")
+ std::string first_name;
+
+ #pragma db column ("last")
+ std::string last_name;
+
+ unsigned short age;
+
+ #pragma db not_null
+ country* location;
+};
+
+// General view with a custom query.
+//
+#pragma db view query("SELECT first, last, age FROM common_view_person")
+struct view1
+{
+ std::string first;
+ std::string last;
+ unsigned short age;
+};
+
+// Count view.
+//
+#pragma db view query("SELECT count(id) FROM common_view_person")
+struct view2
+{
+ std::size_t count;
+};
+
+// Aggregate view.
+//
+#pragma db view query("SELECT last, count(last) " \
+ "FROM common_view_person " \
+ "GROUP BY last")
+struct view3
+{
+ std::string last;
+ std::size_t count;
+ unsigned short age;
+};
+
+// JOIN view.
+//
+#pragma db view query("SELECT first, last, common_view_country.name " \
+ "FROM common_view_person " \
+ "LEFT JOIN common_view_country " \
+ "ON common_view_person.location = " \
+ "common_view_country.code")
+struct view4
+{
+ std::string first;
+ std::string last;
+ std::string location;
+};
+
+#endif // TEST_HXX