From 88ff9c171992dea974909b5aadf6405eda0aaacf Mon Sep 17 00:00:00 2001 From: LV-426 Date: Tue, 20 Jan 2015 13:06:28 +0200 Subject: db_controller: adapt to kernel yield return style, proper composed_op handling --- src/server/db_controller.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/server/db_controller.py b/src/server/db_controller.py index 1dbdc27b..30c8450e 100644 --- a/src/server/db_controller.py +++ b/src/server/db_controller.py @@ -27,21 +27,22 @@ class DB_Controller: """ execute operation within a DB transaction """ - if isinstance(op, DB_composed_op): - # construct a list comprehension composed of all sup_op statements - for s_op in op: - self.exec_op(s_op) - return op.process_result_set() - try: - self.db_driver.begin_tx(op) - self.db_driver.exec_statement_set(op) - self.db_driver.commit_tx(op) - ret = op.process_result_set() + if not isinstance(op, DB_composed_op): # non composed DB op + self.db_driver.begin_tx(op) + self.db_driver.exec_statement_set(op) + self.db_driver.commit_tx(op) + + op_ret = op.process_result_set() + log.debug('exec_op:' + op.name + ': return value: ' + str(op_ret)) + yield op, op_ret + + else: # composed DB op + for sub_op in op: + sub_op, sub_op_ret = self.exec_op(sub_op).next() # recursive call + yield sub_op, sub_op_ret - log.debug('exec_op:' + op.name + ': return value: ' + str(ret)) - return ret except Neo4JException as e: log.exception(e) # Neo4JException may be composed of several sub errors, defer to class __str__ raise e -- cgit v1.3.1