diff --git a/src/schema/schema_neo4j_queries.py b/src/schema/schema_neo4j_queries.py index a91408ca..6ba3ff43 100644 --- a/src/schema/schema_neo4j_queries.py +++ b/src/schema/schema_neo4j_queries.py @@ -178,7 +178,7 @@ def get_children(neo4j_driver, uuid, property_key = None): f"WHERE e.uuid='{uuid}' AND e.entity_type <> 'Lab' " # COLLECT() returns a list # apoc.coll.toSet() reruns a set containing unique nodes - f"RETURN apoc.coll.toSet(COLLECT(child)) AS {record_field_name}") + f"RETURN apoc.coll.toSet(COLLECT(apoc.create.vNode(labels(child), apoc.map.removeKeys(properties(child), {fields_to_omit})))) AS {record_field_name}") logger.info("======get_children() query======") logger.info(query) @@ -193,10 +193,7 @@ def get_children(neo4j_driver, uuid, property_key = None): else: # Convert the list of nodes to a list of dicts results = nodes_to_dicts(record[record_field_name]) - if fields_to_omit: - for node_dict in results: - for field in fields_to_omit: - node_dict.pop(field, None) + return results @@ -233,7 +230,7 @@ def get_parents(neo4j_driver, uuid, property_key = None): f"WHERE e.uuid='{uuid}' AND parent.entity_type <> 'Lab' " # COLLECT() returns a list # apoc.coll.toSet() reruns a set containing unique nodes - f"RETURN apoc.coll.toSet(COLLECT(parent)) AS {record_field_name}") + f"RETURN apoc.coll.toSet(COLLECT(apoc.create.vNode(labels(parent), apoc.map.removeKeys(properties(parent), {fields_to_omit})))) AS {record_field_name}") logger.info("======get_parents() query======") logger.info(query) @@ -248,10 +245,6 @@ def get_parents(neo4j_driver, uuid, property_key = None): else: # Convert the list of nodes to a list of dicts results = nodes_to_dicts(record[record_field_name]) - if fields_to_omit: - for node_dict in results: - for field in fields_to_omit: - node_dict.pop(field, None) return results @@ -401,7 +394,7 @@ def get_ancestors(neo4j_driver, uuid, property_key = None): f"WHERE e.uuid='{uuid}' AND ancestor.entity_type <> 'Lab' " # COLLECT() returns a list # apoc.coll.toSet() reruns a set containing unique nodes - f"RETURN apoc.coll.toSet(COLLECT(ancestor)) AS {record_field_name}") + f"RETURN apoc.coll.toSet(COLLECT(apoc.create.vNode(labels(ancestor), apoc.map.removeKeys(properties(ancestor), {fields_to_omit})))) AS {record_field_name}") logger.info("======get_ancestors() query======") logger.info(query) @@ -417,11 +410,6 @@ def get_ancestors(neo4j_driver, uuid, property_key = None): # Convert the list of nodes to a list of dicts results = nodes_to_dicts(record[record_field_name]) - if fields_to_omit: - for node_dict in results: - for field in fields_to_omit: - node_dict.pop(field, None) - return results """ @@ -457,7 +445,7 @@ def get_descendants(neo4j_driver, uuid, property_key = None): f"WHERE e.uuid='{uuid}' AND e.entity_type <> 'Lab' " # COLLECT() returns a list # apoc.coll.toSet() reruns a set containing unique nodes - f"RETURN apoc.coll.toSet(COLLECT(descendant)) AS {record_field_name}") + f"RETURN apoc.coll.toSet(COLLECT(apoc.create.vNode(labels(descendant), apoc.map.removeKeys(properties(descendant), {fields_to_omit})))) AS {record_field_name}") logger.info("======get_descendants() query======") logger.info(query) @@ -472,10 +460,7 @@ def get_descendants(neo4j_driver, uuid, property_key = None): else: # Convert the list of nodes to a list of dicts results = nodes_to_dicts(record[record_field_name]) - if fields_to_omit: - for node_dict in results: - for field in fields_to_omit: - node_dict.pop(field, None) + return results