diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-10-27 17:36:59 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-10-27 17:36:59 +0200 |
commit | 7f6c64f2211d37db76a97fbc79a4b5492302ef2f (patch) | |
tree | f2e386644fcaab5c51e3f5ad0ac737ea5b4d5bd2 /odb/mysql/schema.cxx | |
parent | 5259b98c75f3754a0f713bcee4bddd0ed7ce35ef (diff) |
Implement support for composite value types
New test: common/composite.
Diffstat (limited to 'odb/mysql/schema.cxx')
-rw-r--r-- | odb/mysql/schema.cxx | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/odb/mysql/schema.cxx b/odb/mysql/schema.cxx index 59a6900..3ef412b 100644 --- a/odb/mysql/schema.cxx +++ b/odb/mysql/schema.cxx @@ -4,38 +4,32 @@ // license : GNU GPL v3; see accompanying LICENSE file #include <set> + +#include <odb/mysql/common.hxx> #include <odb/mysql/schema.hxx> namespace mysql { namespace { - struct data_member: traversal::data_member, context + struct object_columns: object_columns_base, context { - data_member (context& c) - : context (c), first_ (true) + object_columns (context& c) + : object_columns_base (c), context (c) { } virtual void - traverse (type& m) + column (semantics::data_member& m, string const& name, bool first) { - if (m.count ("transient")) - return; - - if (first_) - first_ = false; - else + if (!first) os << "," << endl; - os << " `" << column_name (m) << "` " << column_type (m); + os << " `" << name << "` " << column_type (m); if (m.count ("id")) os << " PRIMARY KEY"; } - - private: - bool first_; }; struct class_create: traversal::class_, context @@ -65,9 +59,8 @@ namespace mysql os << "CREATE TABLE `" << name << "` (" << endl; { - data_member m (*this); - traversal::names n (m); - names (c, n); + object_columns t (*this); + t.traverse (c); } os << ")"; |