summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2014-10-12 19:10:38 +0200
committerLV-426 <lv-426@taproot.org.il>2014-10-12 19:10:38 +0200
commita9abe5a017b01c40615e23a279d46bb33c240e3f (patch)
treea7b5167eb059f2e21ce78749ffd1060e12ff4c10
parent1d8d5646897ca05f97bb33be5ced2b8643ae4a23 (diff)
DBO_load_link_id_set & test
-rw-r--r--src-py/db_controller.py18
-rw-r--r--src-py/test_db_controller.py9
2 files changed, 23 insertions, 4 deletions
diff --git a/src-py/db_controller.py b/src-py/db_controller.py
index 96de855d..1e80ff84 100644
--- a/src-py/db_controller.py
+++ b/src-py/db_controller.py
@@ -198,17 +198,27 @@ class DBO_load_link_set_by_src_or_dst_id_attributes(DB_op):
return self.parse_single_query_response_data(data)
class DBO_load_link_id_set(DB_op):
- def __init__(self, filter_type=None, filter_attr_map=None):
+ def __init__(self, filter_type=None, filter_attr_map={}):
"""
- load a set of link ids
+ load an id-set of links
@param filter_type: link type filter
@param filter_attr_map: is a filter_key to filter_value_set map of
attributes to match link properties against
@return: a set of loaded link ids
"""
- filter_str = dbu.where_clause_from_filter_attr_map()
-
+ super(DBO_load_link_id_set, self).__init__()
+
+ q = "match ()-[r{filter_type} {filter_attr}]->() return id(r)"
+ q = cfmt(q, filter_type="" if not filter_type else ":" + filter_type)
+ q = cfmt(q, filter_attr=db_util.gen_clause_attr_filter_from_filter_attr_map(filter_attr_map))
+ q_params = {k: v[0] for (k, v) in filter_attr_map.items()} # pass on only first value from each value set
+
+ self.add_statement(q, q_params)
+
+ def on_completion(self, data):
+ log.debug('loaded id-set: ' + str(data))
+ return self.parse_single_query_response_data(data)
class DB_Driver_Base():
pass
diff --git a/src-py/test_db_controller.py b/src-py/test_db_controller.py
index 446d9288..176fce4b 100644
--- a/src-py/test_db_controller.py
+++ b/src-py/test_db_controller.py
@@ -94,6 +94,15 @@ class TestDBController(unittest.TestCase):
n_set = self.db_ctl.exec_op(dbc.DBO_load_node_set_by_id_attribute(['skill_00', 'person_01']))
self.assertEqual(len(n_set), 2)
+ def test_load_link_set_by_type(self):
+ op = dbc.DBO_load_link_id_set(filter_type='Knows')
+ id_set = self.db_ctl.exec_op(op)
+ self.assertEqual(len(id_set), 2)
+
+ op = dbc.DBO_load_link_id_set(filter_type='Nan_Type')
+ id_set = self.db_ctl.exec_op(op)
+ self.assertEqual(len(id_set), 0)
+
def test_load_link_set_by_src_or_dst_id_attributes(self):
op = dbc.DBO_load_link_set_by_src_or_dst_id_attributes(src_id='person_00', dst_id='skill_00')
n_set = self.db_ctl.exec_op(op)