Skip to content

Commit 374f6df

Browse files
committed
fix: DATA-80 optimize structures query for users with large structures number
1 parent 18e3556 commit 374f6df

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

src/main/java/fr/wseduc/stats/services/StructureService.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,12 @@ public void getClassesForUser(String userId, Handler<Either<String, JsonArray>>
4444

4545
public void getStructuresHierarchyAndClasses(String userId, Handler<Either<String, JsonArray>> handler) {
4646
final String query =
47-
"MATCH (u:User {id: {userId}})-[:IN]->(pg)-[:DEPENDS]->(s:Structure)" +
47+
"MATCH (:User {id: {userId}})-[:IN]->(pg)-[:DEPENDS]->(s:Structure)" +
4848
" WHERE (pg:ProfileGroup OR pg:FunctionGroup) " +
49-
" OPTIONAL MATCH (s)-[:HAS_ATTACHMENT]->(ps:Structure)<-[:DEPENDS]-(g)<-[:IN]-(u)" +
49+
" OPTIONAL MATCH (s)-[:HAS_ATTACHMENT]->(ps:Structure)<-[:DEPENDS]-(g)<-[:IN]-(:User {id: {userId}})" +
5050
" WHERE (g:ProfileGroup OR g:FunctionGroup) " +
51-
" WITH u, s, COLLECT(distinct {id: ps.id, name: ps.name}) as parents" +
52-
" OPTIONAL MATCH (u)-[:IN]->(pg:ProfileGroup)-[:DEPENDS]->(c:Class)-[:BELONGS]->(s)" +
53-
" WITH u, s, parents, COLLECT(distinct {id: c.id, name: c.name}) as classes" +
51+
" OPTIONAL MATCH (:User {id: {userId}})-[:IN]->(pg:ProfileGroup)-[:DEPENDS]->(c:Class)-[:BELONGS]->(s)" +
52+
" WITH s, COLLECT(distinct {id: ps.id, name: ps.name}) as parents, COLLECT(distinct {id: c.id, name: c.name}) as classes" +
5453
" WITH DISTINCT s, CASE WHEN any(p in parents where p <> {id: null, name: null}) THEN parents END as parents," +
5554
" CASE WHEN any(c in classes where c <> {id: null, name: null}) THEN classes END as classes " +
5655
" RETURN DISTINCT s.id as id, s.name as name, parents, classes, length(coalesce(parents,[])) > 0 as notroot " +

0 commit comments

Comments
 (0)