summaryrefslogtreecommitdiff
path: root/odb/semantics/relational/foreign-key.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2013-04-08 11:13:51 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2013-04-10 18:46:44 +0200
commita4f25daf17392c9c4b90de60b9d777290706f667 (patch)
treee3b4903ac35eb2ec4c44cfc7ce630f5d964c7b3d /odb/semantics/relational/foreign-key.hxx
parent2fa6a4d00945866e62d980270d5807f3abca75ab (diff)
Generate add/drop foreign key migration statements
Also add the --fkeys-deferrable-mode option. General schemas generation rework.
Diffstat (limited to 'odb/semantics/relational/foreign-key.hxx')
-rw-r--r--odb/semantics/relational/foreign-key.hxx23
1 files changed, 13 insertions, 10 deletions
diff --git a/odb/semantics/relational/foreign-key.hxx b/odb/semantics/relational/foreign-key.hxx
index 50a3fae..458683f 100644
--- a/odb/semantics/relational/foreign-key.hxx
+++ b/odb/semantics/relational/foreign-key.hxx
@@ -7,6 +7,7 @@
#include <iosfwd>
+#include <odb/semantics/relational/deferrable.hxx>
#include <odb/semantics/relational/elements.hxx>
#include <odb/semantics/relational/key.hxx>
@@ -38,10 +39,15 @@ namespace semantics
}
public:
+ typedef relational::deferrable deferrable_type;
+
+ deferrable_type
+ deferrable () const {return deferrable_;}
+
bool
- deferred () const
+ not_deferrable () const
{
- return deferred_;
+ return deferrable_ == deferrable_type::not_deferrable;
}
enum action_type
@@ -51,19 +57,16 @@ namespace semantics
};
action_type
- on_delete () const
- {
- return on_delete_;
- }
+ on_delete () const {return on_delete_;}
public:
foreign_key (string const& id,
qname const& referenced_table,
- bool deferred,
+ deferrable_type deferrable,
action_type on_delete = no_action)
: key (id),
referenced_table_ (referenced_table),
- deferred_ (deferred),
+ deferrable_ (deferrable),
on_delete_ (on_delete)
{
}
@@ -93,7 +96,7 @@ namespace semantics
private:
qname referenced_table_;
columns referenced_columns_;
- bool deferred_;
+ deferrable_type deferrable_;
action_type on_delete_;
};
@@ -108,7 +111,7 @@ namespace semantics
public:
add_foreign_key (string const& id,
qname const& rt,
- bool d,
+ deferrable_type d,
action_type od = no_action)
: foreign_key (id, rt, d, od) {}
add_foreign_key (foreign_key const& fk, uscope& s, graph& g)