diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-01-20 13:06:28 +0200 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-01-20 14:02:10 +0200 |
| commit | 88ff9c171992dea974909b5aadf6405eda0aaacf (patch) | |
| tree | 9fcaffb7c08c4f3f63071fb78500735cb974f237 /src | |
| parent | 5d642cd0277879ed69e65a6bbc6e4fcd8a6ab020 (diff) | |
db_controller: adapt to kernel yield return style, proper composed_op handling
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/db_controller.py | 25 |
1 files changed, 13 insertions, 12 deletions
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 |
