summary refs log tree commit diff stats
path: root/lib/statement.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/statement.h')
-rw-r--r--lib/statement.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/statement.h b/lib/statement.h index 15c4ac3..2fadf05 100644 --- a/lib/statement.h +++ b/lib/statement.h
@@ -140,7 +140,7 @@ namespace verbly {
140 140
141 condition(std::string table, std::string column, bool isNull); 141 condition(std::string table, std::string column, bool isNull);
142 142
143 condition(std::string table, std::string column, comparison comp, binding value); 143 condition(std::string table, std::string column, comparison comp, binding value, object parentObject = object::undefined);
144 144
145 // Group 145 // Group
146 146
@@ -160,6 +160,8 @@ namespace verbly {
160 160
161 condition flatten() const; 161 condition flatten() const;
162 162
163 condition resolveCompareFields(object context, std::string tableName) const;
164
163 private: 165 private:
164 union { 166 union {
165 struct { 167 struct {
@@ -167,6 +169,7 @@ namespace verbly {
167 std::string column_; 169 std::string column_;
168 comparison comparison_; 170 comparison comparison_;
169 binding value_; 171 binding value_;
172 object parentObject_;
170 } singleton_; 173 } singleton_;
171 struct { 174 struct {
172 std::list<condition> children_; 175 std::list<condition> children_;
@@ -251,7 +254,6 @@ namespace verbly {
251 : (context == object::word) ? "words" 254 : (context == object::word) ? "words"
252 : (context == object::frame) ? "frames" 255 : (context == object::frame) ? "frames"
253 : (context == object::part) ? "parts" 256 : (context == object::part) ? "parts"
254 : (context == object::lemma) ? "lemmas_forms"
255 : (context == object::form) ? "forms" 257 : (context == object::form) ? "forms"
256 : (context == object::pronunciation) ? "pronunciations" 258 : (context == object::pronunciation) ? "pronunciations"
257 : throw std::domain_error("Provided context has no associated table"); 259 : throw std::domain_error("Provided context has no associated table");
@@ -259,7 +261,7 @@ namespace verbly {
259 261
260 static const std::list<field> getSelectForContext(object context); 262 static const std::list<field> getSelectForContext(object context);
261 263
262 statement(std::string tableName, filter clause, int nextTableId = 0, int nextWithId = 0); 264 statement(object context, std::string tableName, filter clause, int nextTableId = 0, int nextWithId = 0);
263 265
264 condition parseFilter(filter queryFilter); 266 condition parseFilter(filter queryFilter);
265 267
@@ -272,6 +274,7 @@ namespace verbly {
272 int nextTableId_; 274 int nextTableId_;
273 int nextWithId_; 275 int nextWithId_;
274 276
277 object context_;
275 std::map<std::string, std::string> tables_; 278 std::map<std::string, std::string> tables_;
276 std::string topTable_; 279 std::string topTable_;
277 std::list<join> joins_; 280 std::list<join> joins_;