From 85feae0a74a97ad7bc04e13b511601e14be5f234 Mon Sep 17 00:00:00 2001 From: LV-426 Date: Sun, 9 Nov 2014 12:09:12 +0200 Subject: DBO_rz_clone - reconstruct links from link tuples --- src-py/db_controller.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'src-py/db_controller.py') diff --git a/src-py/db_controller.py b/src-py/db_controller.py index 40038ed8..273686fd 100644 --- a/src-py/db_controller.py +++ b/src-py/db_controller.py @@ -370,7 +370,7 @@ class DBO_rz_clone(DB_op): 'order by n.id', 'skip %d' % (self.skip), 'limit %d' % (self.limit), - 'return n,collect([n.id, m.id, r])'] + 'return n,labels(n),collect([m.id, r, type(r)])'] q = ' '.join(q_arr) self.add_statement(q) @@ -380,17 +380,28 @@ class DBO_rz_clone(DB_op): ret_l_set = [] for _, _, row_set in self: for row in row_set: - itr = iter(row) - n = itr.next() + n, n_lbl_set, l_set = row.items() # see query return statement - l_set = itr.next() - for l in l_set: - assert 3 == len(l) # (n.id, m.id, r) tuples - if None == l[1]: + # reconstruct nodes + assert None != n['id'] + + n['__label_set'] = n_lbl_set + ret_n_set.append(n) + + # reconstruct links from link tuples + for l_tuple in l_set: + assert 3 == len(l_tuple) # see query return statement + + if None == l_tuple[0]: # check if link dst is None # as link matching is optional, collect may yield empty sets continue + + l = l_tuple[1] + l['__src'] = n['id'] + l['__dst'] = l_tuple[0] + l['__label_set'] = [l_tuple[2]] # box single value returned by type() + ret_l_set.append(l) - ret_n_set.append(n) return {'node_set': ret_n_set, 'link_set': ret_l_set } -- cgit v1.3.1