From 92668e664144b15797f83c2abd61addac8b3c43a Mon Sep 17 00:00:00 2001 From: LV-426 Date: Mon, 20 Oct 2014 19:21:59 +0200 Subject: DBO_attr_diff_commit - augment query generation --- src-py/db_controller.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'src-py/db_controller.py') 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]) - - 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']} + r_attr_set = n_attr_diff['attr_remove'] + w_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): -- cgit v1.3.1