summaryrefslogtreecommitdiff
path: root/src-py
diff options
context:
space:
mode:
Diffstat (limited to 'src-py')
-rw-r--r--src-py/neo4j_util.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/src-py/neo4j_util.py b/src-py/neo4j_util.py
index 2d870fcc..bbd2a176 100644
--- a/src-py/neo4j_util.py
+++ b/src-py/neo4j_util.py
@@ -69,6 +69,48 @@ def where_clause_from_filter_attr_map(filter_attr_map, node_param_name="n"):
filter_str = "where {0}".format(' and '.join(filter_arr))
return filter_str
+def create_query_from_node_map(node_map, input_to_DB_property_map=lambda _: _):
+ """
+ generate a set of node create queries
+
+ @param node_map: is a node-type to node map
+ @input_to_DB_property_map: optional function which takes a map of input properties and returns a map of DB properties - use to map input schemas to DB schemas
+
+ @return: a (query, query_parameteres) set of create queries
+ """
+ ret = []
+ for n_type, n_set in node_map.items():
+ q = "create (n:{0} {{prop_dict}}) return id(n)".format(n_type)
+ for n_prop_set in n_set:
+ q_params = {'prop_dict' : input_to_DB_property_map(n_prop_set)}
+ ret.append((q, q_params))
+ return ret
+
+def create_query_from_link_map(link_map, input_to_DB_property_map=lambda _: _):
+ """
+ generate a set of link create queries
+
+ @param link_map: is a link-type to link map - see model.link
+ """
+ ret = []
+ for l_type, l_set in link_map.items():
+
+ for link in l_set:
+ __type_check_link(link)
+
+ n_src = link['__src']
+ n_dst = link['__dst']
+
+ # TODO: use object based link representation
+ prop_dict = link.copy()
+ del prop_dict['__dst']
+ del prop_dict['__src']
+
+ q = "create ({ns})-[:{lt} {{prop_dict}}]-({nd})".format(ns=n_src, lt=l_type, nd=n_dst)
+ q_params = {'prop_dict' : input_to_DB_property_map(prop_dict)}
+ ret.append((q, q_params))
+
+ return ret
def __type_check_link(link):
assert link.has_key('__src')
assert link.has_key('__dst')