From 30f268525f6f7289d8619b0742e3d04c9cc878db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 16 Oct 2019 13:32:45 +0200 Subject: [PATCH 1/2] Add Cypher statement for ordering - minor db manipulation text change --- backend/src/schema/resolvers/reports.js | 99 ++++++++++++--------- neo4j/change_report_node_to_relationship.sh | 2 +- 2 files changed, 58 insertions(+), 43 deletions(-) diff --git a/backend/src/schema/resolvers/reports.js b/backend/src/schema/resolvers/reports.js index 48677429a..426c35aea 100644 --- a/backend/src/schema/resolvers/reports.js +++ b/backend/src/schema/resolvers/reports.js @@ -1,8 +1,9 @@ export default { Mutation: { - report: async (_parent, params, { driver, user }, _resolveInfo) => { + report: async (_parent, params, context, _resolveInfo) => { let createdRelationshipWithNestedAttributes const { resourceId, reasonCategory, reasonDescription } = params + const { driver, user } = context const session = driver.session() const writeTxResultPromise = session.writeTransaction(async txc => { const reportRelationshipTransactionResponse = await txc.run( @@ -58,54 +59,68 @@ export default { }, }, Query: { - reports: async (_parent, _params, { driver }, _resolveInfo) => { + reports: async (_parent, params, context, _resolveInfo) => { + const { driver } = context const session = driver.session() - const res = await session.run( - ` + let response + let orderByClause + switch (params.orderBy) { + // case 'createdAt_asc': + // orderByClause = 'ORDER BY report.createdAt ASC' + // break + case 'createdAt_desc': + orderByClause = 'ORDER BY report.createdAt DESC' + break + default: + orderByClause = '' + } + try { + const cypher = ` MATCH (submitter:User)-[report:REPORTED]->(resource) WHERE resource:User OR resource:Comment OR resource:Post RETURN report, submitter, resource, labels(resource)[0] as type - `, - {}, - ) - session.close() + ${orderByClause} + ` + const result = await session.run(cypher, {}) + const dbResponse = result.records.map(r => { + return { + report: r.get('report'), + submitter: r.get('submitter'), + resource: r.get('resource'), + type: r.get('type'), + } + }) + if (!dbResponse) return null - const dbResponse = res.records.map(r => { - return { - report: r.get('report'), - submitter: r.get('submitter'), - resource: r.get('resource'), - type: r.get('type'), - } - }) - if (!dbResponse) return null + response = [] + dbResponse.forEach(ele => { + const { report, submitter, resource, type } = ele - const response = [] - dbResponse.forEach(ele => { - const { report, submitter, resource, type } = ele + const responseEle = { + ...report.properties, + post: null, + comment: null, + user: null, + submitter: submitter.properties, + type, + } - const responseEle = { - ...report.properties, - post: null, - comment: null, - user: null, - submitter: submitter.properties, - type, - } - - switch (type) { - case 'Post': - responseEle.post = resource.properties - break - case 'Comment': - responseEle.comment = resource.properties - break - case 'User': - responseEle.user = resource.properties - break - } - response.push(responseEle) - }) + switch (type) { + case 'Post': + responseEle.post = resource.properties + break + case 'Comment': + responseEle.comment = resource.properties + break + case 'User': + responseEle.user = resource.properties + break + } + response.push(responseEle) + }) + } finally { + session.close() + } return response }, diff --git a/neo4j/change_report_node_to_relationship.sh b/neo4j/change_report_node_to_relationship.sh index a17dc6fe0..f8dd639be 100755 --- a/neo4j/change_report_node_to_relationship.sh +++ b/neo4j/change_report_node_to_relationship.sh @@ -21,6 +21,6 @@ DETACH DELETE report CREATE (submitter)-[reported:REPORTED]->(resource) SET reported.createdAt = toString(datetime()) SET reported.reasonCategory = 'other' -SET reported.reasonDescription = '!!! Created automatically to ensure database consistency! createdAt is when the database manipulation happened.' +SET reported.reasonDescription = '!!! Created automatically to ensure database consistency! Creation date is when the database manipulation happened.' RETURN reported; " | cypher-shell From 72290e1c8a7035814c7c9293952d4e29806c4206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 17 Oct 2019 10:16:27 +0200 Subject: [PATCH 2/2] Add ascendant ordering as enum to `ReportOrdering` --- backend/src/schema/resolvers/reports.js | 6 +++--- backend/src/schema/types/type/REPORTED.gql | 1 + styleguide | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/src/schema/resolvers/reports.js b/backend/src/schema/resolvers/reports.js index 426c35aea..083c94362 100644 --- a/backend/src/schema/resolvers/reports.js +++ b/backend/src/schema/resolvers/reports.js @@ -65,9 +65,9 @@ export default { let response let orderByClause switch (params.orderBy) { - // case 'createdAt_asc': - // orderByClause = 'ORDER BY report.createdAt ASC' - // break + case 'createdAt_asc': + orderByClause = 'ORDER BY report.createdAt ASC' + break case 'createdAt_desc': orderByClause = 'ORDER BY report.createdAt DESC' break diff --git a/backend/src/schema/types/type/REPORTED.gql b/backend/src/schema/types/type/REPORTED.gql index 7455de8c7..5042672a7 100644 --- a/backend/src/schema/types/type/REPORTED.gql +++ b/backend/src/schema/types/type/REPORTED.gql @@ -30,6 +30,7 @@ enum ReasonCategory { # union ReportResource = User | Post | Comment enum ReportOrdering { + createdAt_asc createdAt_desc } diff --git a/styleguide b/styleguide index d46fc1570..808b3c5a9 160000 --- a/styleguide +++ b/styleguide @@ -1 +1 @@ -Subproject commit d46fc1570c6bcea328ae4cc3a4892745edea7319 +Subproject commit 808b3c5a9523505cb80b20b50348d29ba9932845