diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2013-03-26 13:03:13 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2013-04-10 18:46:44 +0200 |
commit | e999b1e7295acd8cdb646c2db7db1f5059f10c7d (patch) | |
tree | acf67d764a65cdcd54d10585b927993eca64a15f /odb/semantics/relational/column.hxx | |
parent | 7cc50b230deb58703cd2d4df77fadcbb83fb14b3 (diff) |
Add changelog support for add, drop, and later column
Diffstat (limited to 'odb/semantics/relational/column.hxx')
-rw-r--r-- | odb/semantics/relational/column.hxx | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/odb/semantics/relational/column.hxx b/odb/semantics/relational/column.hxx index 07d61bf..7702a13 100644 --- a/odb/semantics/relational/column.hxx +++ b/odb/semantics/relational/column.hxx @@ -25,6 +25,9 @@ namespace semantics bool null () const {return null_;} + void + null (bool n) {null_ = n;} + string const& default_ () const {return default__;} @@ -88,6 +91,10 @@ namespace semantics virtual void serialize (xml::serializer&) const; + protected: + void + serialize_attributes (xml::serializer&) const; + private: string type_; bool null_; @@ -96,6 +103,80 @@ namespace semantics contained_list contained_; }; + + class add_column: public column + { + public: + add_column (string const& id, string const& type, bool null) + : column (id, type, null) {} + add_column (column const& c, uscope& s, graph& g): column (c, s, g) {} + add_column (xml::parser& p, uscope& s, graph& g): column (p, s, g) {} + + virtual add_column& + clone (uscope&, graph&) const; + + virtual string + kind () const {return "add column";} + + virtual void + serialize (xml::serializer&) const; + }; + + class drop_column: public unameable + { + public: + drop_column (string const& id): unameable (id) {} + drop_column (drop_column const& c, uscope&, graph& g) + : unameable (c, g) {} + drop_column (xml::parser&, uscope&, graph&); + + virtual drop_column& + clone (uscope&, graph&) const; + + virtual string + kind () const {return "drop column";} + + virtual void + serialize (xml::serializer&) const; + }; + + class alter_column: public unameable + { + public: + bool + null_altered () const {return null_altered_;} + + bool + null () const {return null_;} + + void + null (bool n) {null_ = n; null_altered_ = true;} + + public: + alter_column (string const& id) + : unameable (id), null_altered_ (false) + { + } + + alter_column (alter_column const&, uscope&, graph&); + alter_column (xml::parser&, uscope&, graph&); + + virtual alter_column& + clone (uscope&, graph&) const; + + virtual string + kind () const + { + return "alter column"; + } + + virtual void + serialize (xml::serializer&) const; + + private: + bool null_altered_; + bool null_; + }; } } |