diff options
| author | LV-426 <lv-426@taproot.org.il> | 2014-10-20 19:21:59 +0200 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2014-10-20 19:21:59 +0200 |
| commit | 92668e664144b15797f83c2abd61addac8b3c43a (patch) | |
| tree | ff1238ce755b4467ac7821cdbf428e867b454714 /src-py/db_controller.py | |
| parent | bf3e34d7835aa75c5ff4d131d327143e611c4066 (diff) | |
DBO_attr_diff_commit - augment query generation
Diffstat (limited to 'src-py/db_controller.py')
| -rw-r--r-- | src-py/db_controller.py | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src-py/db_controller.py b/src-py/db_controller.py index 64e9b5eb..b282a38b 100644 --- a/src-py/db_controller.py +++ b/src-py/db_controller.py @@ -136,15 +136,25 @@ class DBO_attr_diff_commit(DB_op): for id_attr, n_attr_diff in attr_diff.items(): # TODO parameterize multiple attr removal - rm_attr_set = n_attr_diff['attr_remove'] - rm_attr_str = ', '.join(['n.' + attr for attr in rm_attr_set]) + r_attr_set = n_attr_diff['attr_remove'] + w_attr_set = n_attr_diff['attr_write'] - q = ("match (n {id: {id}}) " + - "set n += {attr_set} " + - "remove " + rm_attr_str + " " + - "return n.id, n") - q_param_set = {'id': id_attr, - 'attr_set': n_attr_diff['attr_write']} + assert len(r_attr_set) > 0 or len(w_attr_set) > 0 + + q_arr = ["match (n {id: {id}}) ", + "return n.id, n"] + q_param_set = {'id': id_attr} + + if len(r_attr_set) > 0: + stmt_attr_rm = "remove " + ', '.join(['n.' + attr for attr in r_attr_set]) + q_arr.insert(1, stmt_attr_rm) + + if len(w_attr_set) > 0: + stmt_attr_set = "set n += {attr_set}" + q_arr.insert(1, stmt_attr_set) + q_param_set['attr_set'] = w_attr_set + + q = " ".join(q_arr) self.add_statement(q, q_param_set) def on_completion(self, data): |
