diff options
| author | LV-426 <lv-426@taproot.org.il> | 2014-10-12 15:18:48 +0200 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2014-10-12 15:18:48 +0200 |
| commit | de70bef3e3be880b86e08aba810940d9481ce64b (patch) | |
| tree | 7d99fbab65a40505536b61fbfc3d04b386a2e328 | |
| parent | 8e20a72f5cd0464f673a374e5a3741a58932e770 (diff) | |
n=node:IndexName(Key={value})
DBO_add_link_set operation & test:
- use DB_op.__iter__ to compile on_completion() return value
- return id(link) values until we come up with a better link id scheme
| -rw-r--r-- | src-py/db_controller.py | 21 | ||||
| -rw-r--r-- | src-py/test_db_controller.py | 15 |
2 files changed, 36 insertions, 0 deletions
diff --git a/src-py/db_controller.py b/src-py/db_controller.py index 32d5a436..bff3a45b 100644 --- a/src-py/db_controller.py +++ b/src-py/db_controller.py @@ -114,6 +114,27 @@ class DBO_add_node_set(DB_op): log.debug('node-set added: ids: ' + str(id_set)) return id_set +class DBO_add_link_set(DB_op): + def __init__(self, link_map): + """ + @param link_map: is a link-type to link-set map - see model.link + """ + super(DBO_add_link_set, self).__init__() + for q, q_params in db_util.gen_query_create_from_link_map(link_map): + self.add_statement(q, q_params) + + def on_completion(self, data): + super(DBO_add_link_set, self).on_completion(data) + + id_set = [] + for s_id, s, r_set in self: + for row in r_set: + # [!] fragile - parse results + lid = row + id_set.append(lid) + + log.debug('link-set added: ids: ' + str(id_set)) + return id_set class DBO_load_node_set_by_DB_id(DB_op): def __init__(self, id_set): diff --git a/src-py/test_db_controller.py b/src-py/test_db_controller.py index 7d96954e..cfa8ee31 100644 --- a/src-py/test_db_controller.py +++ b/src-py/test_db_controller.py @@ -52,6 +52,21 @@ class TestDBController(unittest.TestCase): self.assertNotEqual(None, r) i = i + 1 + def test_add_link_set(self): + l_map = { 'Knows' : [{'__src': 'person_00', '__dst': 'skill_00'}, + {'__src': 'person_00', '__dst': 'skill_01'}] } + l_set = self.db_ctl.exec_op(dbc.DBO_add_link_set(l_map)) + self.assertEqual(len(l_set), 2) + + def test_load_node_set_by_type(self): + filter_type = 'Person' + n_set = self.db_ctl.exec_op(dbc.DBO_load_node_id_set(filter_type=filter_type)) + self.assertEqual(len(n_set), 2) + + filter_type = 'Nan_Type' + n_set = self.db_ctl.exec_op(dbc.DBO_load_node_id_set(filter_type=filter_type)) + self.assertEqual(len(n_set), 0) + def test_load_node_set_by_attribute(self): filter_map = { 'name': ['Bob', u'Judo'], 'age': [128] } |
