diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2013-04-03 11:22:42 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2013-04-10 18:46:44 +0200 |
commit | b0391e168b489811708ca7ba5f71a0eb67b46ffe (patch) | |
tree | ce15fb5ce0998ec27696152054609bb5dd4f45c3 /odb/relational/schema.cxx | |
parent | e356a9112750e836197a8545bcf6cedad0c1ebe1 (diff) |
Generate add/drop table migration statements
Diffstat (limited to 'odb/relational/schema.cxx')
-rw-r--r-- | odb/relational/schema.cxx | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/odb/relational/schema.cxx b/odb/relational/schema.cxx index 492c3b7..e764790 100644 --- a/odb/relational/schema.cxx +++ b/odb/relational/schema.cxx @@ -86,5 +86,57 @@ namespace relational model->traverse (*ctx.model); } } + + void + generate_migrate_pre (sema_rel::changeset& cs) + { + context ctx; + instance<sql_emitter> em; + emitter_ostream emos (*em); + + schema_format f (schema_format::sql); + + instance<migrate_pre_changeset> changeset (*em, emos, f); + instance<create_table> ctable (*em, emos, f); + trav_rel::qnames names; + + changeset >> names >> ctable; + + // Pass 1 and 2. + // + for (unsigned short pass (1); pass < 3; ++pass) + { + changeset->pass (pass); + ctable->pass (pass); + + changeset->traverse (cs); + } + } + + void + generate_migrate_post (sema_rel::changeset& cs) + { + context ctx; + instance<sql_emitter> em; + emitter_ostream emos (*em); + + schema_format f (schema_format::sql); + + instance<migrate_post_changeset> changeset (*em, emos, f); + instance<drop_table> dtable (*em, emos, f); + trav_rel::qnames names; + + changeset >> names >> dtable; + + // Pass 1 and 2. + // + for (unsigned short pass (1); pass < 3; ++pass) + { + changeset->pass (pass); + dtable->pass (pass); + + changeset->traverse (cs); + } + } } } |