diff options
Diffstat (limited to 'lib/field.h')
| -rw-r--r-- | lib/field.h | 18 |
1 files changed, 13 insertions, 5 deletions
| diff --git a/lib/field.h b/lib/field.h index f799900..93dab97 100644 --- a/lib/field.h +++ b/lib/field.h | |||
| @@ -85,7 +85,7 @@ namespace verbly { | |||
| 85 | object joinWith, | 85 | object joinWith, |
| 86 | bool nullable = false) | 86 | bool nullable = false) |
| 87 | { | 87 | { |
| 88 | return field(obj, type::join, name, nullable, 0, joinWith); | 88 | return field(obj, type::join, name, nullable, 0, joinWith, name); |
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | static field joinField( | 91 | static field joinField( |
| @@ -94,7 +94,7 @@ namespace verbly { | |||
| 94 | const char* table, | 94 | const char* table, |
| 95 | bool nullable = false) | 95 | bool nullable = false) |
| 96 | { | 96 | { |
| 97 | return field(obj, type::join, name, nullable, table); | 97 | return field(obj, type::join, name, nullable, table, obj, name); |
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | static field joinWhere( | 100 | static field joinWhere( |
| @@ -105,7 +105,7 @@ namespace verbly { | |||
| 105 | int conditionValue, | 105 | int conditionValue, |
| 106 | bool nullable = false) | 106 | bool nullable = false) |
| 107 | { | 107 | { |
| 108 | return field(obj, type::join_where, name, nullable, 0, joinWith, 0, 0, 0, conditionColumn, conditionValue); | 108 | return field(obj, type::join_where, name, nullable, 0, joinWith, name, 0, 0, conditionColumn, conditionValue); |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | static field joinThrough( | 111 | static field joinThrough( |
| @@ -153,6 +153,14 @@ namespace verbly { | |||
| 153 | return field(obj, type::join_through, name, true, joinTable, obj, name, joinColumn, foreignJoinColumn); | 153 | return field(obj, type::join_through, name, true, joinTable, obj, name, joinColumn, foreignJoinColumn); |
| 154 | } | 154 | } |
| 155 | 155 | ||
| 156 | static field selfJoin( | ||
| 157 | object obj, | ||
| 158 | const char* name, | ||
| 159 | const char* foreignColumn) | ||
| 160 | { | ||
| 161 | return field(obj, type::join, name, true, 0, obj, foreignColumn); | ||
| 162 | } | ||
| 163 | |||
| 156 | static field hierarchalSelfJoin( | 164 | static field hierarchalSelfJoin( |
| 157 | object obj, | 165 | object obj, |
| 158 | const char* name, | 166 | const char* name, |
| @@ -220,9 +228,9 @@ namespace verbly { | |||
| 220 | const char* getForeignColumn() const | 228 | const char* getForeignColumn() const |
| 221 | { | 229 | { |
| 222 | // We ignore hierarchal joins because they are always self joins. | 230 | // We ignore hierarchal joins because they are always self joins. |
| 223 | return ((type_ == type::join_through) || (type_ == type::join_through_where)) | 231 | return ((type_ == type::join) || (type_ == type::join_through) || (type_ == type::join_through_where)) |
| 224 | ? foreignColumn_ | 232 | ? foreignColumn_ |
| 225 | : throw std::domain_error("Only many-to-many join fields have a foreign column"); | 233 | : throw std::domain_error("Only join fields have a foreign column"); |
| 226 | } | 234 | } |
| 227 | 235 | ||
| 228 | const char* getJoinColumn() const | 236 | const char* getJoinColumn() const |
