summaryrefslogtreecommitdiff
path: root/odb/mysql/schema.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-10-27 17:36:59 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-10-27 17:36:59 +0200
commit7f6c64f2211d37db76a97fbc79a4b5492302ef2f (patch)
treef2e386644fcaab5c51e3f5ad0ac737ea5b4d5bd2 /odb/mysql/schema.cxx
parent5259b98c75f3754a0f713bcee4bddd0ed7ce35ef (diff)
Implement support for composite value types
New test: common/composite.
Diffstat (limited to 'odb/mysql/schema.cxx')
-rw-r--r--odb/mysql/schema.cxx27
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 << ")";