From 2f2bf571ed0964f7ef39b668c8ab9ae29e95f6a4 Mon Sep 17 00:00:00 2001 From: roschaefer Date: Fri, 6 Dec 2019 01:57:49 +0100 Subject: [PATCH] Eliminate database calls for filed and reviewed I learned map projections and list comprehensions in cypher tonight! :tada: So much wow! --- backend/src/schema/resolvers/reports.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/backend/src/schema/resolvers/reports.js b/backend/src/schema/resolvers/reports.js index fc93229ae..2b2cabd50 100644 --- a/backend/src/schema/resolvers/reports.js +++ b/backend/src/schema/resolvers/reports.js @@ -66,14 +66,17 @@ export default { const reportReadTxPromise = session.readTransaction(async tx => { const allReportsTransactionResponse = await tx.run( ` - MATCH (submitter:User)-[filed:FILED]->(report:Report)-[:BELONGS_TO]->(resource) + MATCH (report:Report)-[:BELONGS_TO]->(resource) WHERE resource:User OR resource:Post OR resource:Comment - RETURN DISTINCT report, resource, labels(resource)[0] as type + WITH report, resource, + [(submitter:User)-[filed:FILED]->(report) | filed {.*, submitter: properties(submitter)} ] as filed, + [(moderator:User)-[reviewed:REVIEWED]->(report) | reviewed {.*, moderator: properties(moderator)} ] as reviewed, + resource {.*, __typename: labels(resource)[0] } as resourceWithType + RETURN report {.*, resource: resourceWithType, filed: filed, reviewed: reviewed} ${orderByClause} `, - {}, ) - return allReportsTransactionResponse.records.map(transformReturnType) + return allReportsTransactionResponse.records.map(record => record.get('report')) }) try { const txResult = await reportReadTxPromise