aboutsummaryrefslogtreecommitdiff
path: root/mapping/person.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-09-23 09:32:31 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-09-23 09:32:31 +0200
commit2f17222fd6b2f3cfa251e57daf67ee58d25d6e43 (patch)
tree3122acf600ad51dcab80e5f353f81f86d616fdff /mapping/person.hxx
parentc542a0841869618f82188bc193e21a6a6972f0ba (diff)
Add the mapping example
It shows how to map between C++ value types and SQL types
Diffstat (limited to 'mapping/person.hxx')
-rw-r--r--mapping/person.hxx114
1 files changed, 114 insertions, 0 deletions
diff --git a/mapping/person.hxx b/mapping/person.hxx
new file mode 100644
index 0000000..b091944
--- /dev/null
+++ b/mapping/person.hxx
@@ -0,0 +1,114 @@
+// file : mapping/person.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : not copyrighted - public domain
+
+#ifndef PERSON_HXX
+#define PERSON_HXX
+
+#include <string>
+#include <ostream>
+
+#include <odb/core.hxx>
+
+// In our database boolean values are stored as strings with valid
+// values being "true" and "false".
+//
+#pragma db value(bool) type("VARCHAR(5) NOT NULL")
+
+#pragma db value type("DATE NOT NULL")
+class date
+{
+public:
+ date (unsigned int year, unsigned int month, unsigned int day)
+ : year_ (year), month_ (month), day_ (day)
+ {
+ }
+
+ unsigned int
+ year () const
+ {
+ return year_;
+ }
+
+ unsigned int
+ month () const
+ {
+ return month_;
+ }
+
+ unsigned int
+ day () const
+ {
+ return day_;
+ }
+
+private:
+ unsigned int year_;
+ unsigned int month_;
+ unsigned int day_;
+};
+
+inline std::ostream&
+operator<< (std::ostream& os, const date& d)
+{
+ return os << d.year () << '-' << d.month () << '-' << d.day ();
+}
+
+#pragma db object
+class person
+{
+public:
+ person (const std::string& first,
+ const std::string& last,
+ const date& born,
+ bool married)
+ : first_ (first), last_ (last), born_ (born), married_ (married)
+ {
+ }
+
+ const std::string&
+ first () const
+ {
+ return first_;
+ }
+
+ const std::string&
+ last () const
+ {
+ return last_;
+ }
+
+ const date&
+ born () const
+ {
+ return born_;
+ }
+
+ bool
+ married () const
+ {
+ return married_;
+ }
+
+public:
+ unsigned long
+ id () const
+ {
+ return id_;
+ }
+
+private:
+ friend class odb::access;
+
+ person (): born_ (0, 0, 0) {}
+
+ #pragma db id auto
+ unsigned long id_;
+
+ std::string first_;
+ std::string last_;
+ date born_;
+ bool married_;
+};
+
+#endif // PERSON_HXX