diff options
Diffstat (limited to 'odb/relational')
-rw-r--r-- | odb/relational/generate.hxx | 11 | ||||
-rw-r--r-- | odb/relational/schema.cxx | 86 |
2 files changed, 53 insertions, 44 deletions
diff --git a/odb/relational/generate.hxx b/odb/relational/generate.hxx index fb29bf4..a895e91 100644 --- a/odb/relational/generate.hxx +++ b/odb/relational/generate.hxx @@ -44,7 +44,16 @@ namespace relational namespace schema { void - generate (); + generate_prologue (); + + void + generate_drop (); + + void + generate_create (); + + void + generate_epilogue (); } } diff --git a/odb/relational/schema.cxx b/odb/relational/schema.cxx index 3dd8507..5c0bdf9 100644 --- a/odb/relational/schema.cxx +++ b/odb/relational/schema.cxx @@ -21,70 +21,70 @@ namespace relational // schema_format cxx_object::format_embedded (schema_format::embedded); - static char const file_header[] = - "/* This file was generated by ODB, object-relational mapping (ORM)\n" - " * compiler for C++.\n" - " */\n\n"; - void - generate () + generate_prologue () { - context ctx; - ostream& os (ctx.os); - - os << file_header; - instance<sql_file> file; file->prologue (); + } + void + generate_epilogue () + { + instance<sql_file> file; + file->epilogue (); + } + + void + generate_drop () + { + context ctx; instance<sql_emitter> em; emitter_ostream emos (*em); schema_format f (schema_format::sql); - // Drop. + instance<drop_model> model (*em, emos, f); + instance<drop_table> table (*em, emos, f); + trav_rel::qnames names; + + model >> names >> table; + + // Pass 1 and 2. // + for (unsigned short pass (1); pass < 3; ++pass) { - instance<drop_model> model (*em, emos, f); - instance<drop_table> table (*em, emos, f); - trav_rel::qnames names; + model->pass (pass); + table->pass (pass); - model >> names >> table; + model->traverse (*ctx.model); + } + } - // Pass 1 and 2. - // - for (unsigned short pass (1); pass < 3; ++pass) - { - model->pass (pass); - table->pass (pass); + void + generate_create () + { + context ctx; + instance<sql_emitter> em; + emitter_ostream emos (*em); - model->traverse (*ctx.model); - } - } + schema_format f (schema_format::sql); - os << endl; + instance<create_model> model (*em, emos, f); + instance<create_table> table (*em, emos, f); + trav_rel::qnames names; - // Create. + model >> names >> table; + + // Pass 1 and 2. // + for (unsigned short pass (1); pass < 3; ++pass) { - instance<create_model> model (*em, emos, f); - instance<create_table> table (*em, emos, f); - trav_rel::qnames names; - - model >> names >> table; + model->pass (pass); + table->pass (pass); - // Pass 1 and 2. - // - for (unsigned short pass (1); pass < 3; ++pass) - { - model->pass (pass); - table->pass (pass); - - model->traverse (*ctx.model); - } + model->traverse (*ctx.model); } - - file->epilogue (); } } } |