diff --git a/src/app.py b/src/app.py index a50890e9..c699c760 100644 --- a/src/app.py +++ b/src/app.py @@ -999,6 +999,8 @@ def run_triggers_cached(entity_dict): } if raw.get("donor"): result["donor"] = run_triggers_cached(raw["donor"]) + if raw.get("donors"): + result["donors"] = [run_triggers_cached(e) for e in raw["donors"]] if raw.get("origin_samples"): result["origin_samples"] = [run_triggers_cached(e) for e in raw["origin_samples"]] if raw.get("source_samples"): diff --git a/src/app_neo4j_queries.py b/src/app_neo4j_queries.py index c56810b9..b1ba2012 100644 --- a/src/app_neo4j_queries.py +++ b/src/app_neo4j_queries.py @@ -225,13 +225,14 @@ def get_reindex_info_raw(neo4j_driver, uuid): } if entity_type.lower() in ['sample', 'dataset', 'publication']: - donor_record = session.run(""" - MATCH (e:Entity {uuid: $uuid}) - MATCH (e)<-[:ACTIVITY_INPUT|ACTIVITY_OUTPUT*]-(d:Entity {entity_type: 'Donor'}) - RETURN properties(d) AS donor - LIMIT 1 + donors_record = session.run(""" + MATCH (e:Entity {uuid: $uuid})<-[:ACTIVITY_INPUT|ACTIVITY_OUTPUT*]-(d:Donor) + RETURN apoc.coll.toSet(COLLECT(properties(d))) AS donors """, uuid=uuid).single() - donor = dict(donor_record["donor"]) if donor_record and donor_record["donor"] else None + donors = [dict(d) for d in (donors_record["donors"] or [])] + donor = donors[0] if donors else None + if donors is not None: + result['donors'] = donors if donor is not None: result['donor'] = donor