2019-03-07 22:42:32 +01:00

63 lines
1.6 KiB
JavaScript

import uuid from 'uuid/v4'
export default {
Mutation: {
report: async (parent, { id, description }, { driver, req, user }, resolveInfo) => {
const reportId = uuid()
const session = driver.session()
const reportData = {
id: reportId,
createdAt: (new Date()).toISOString(),
description: description
}
const res = await session.run(`
MATCH (submitter:User {id: $userId})
MATCH (resource {id: $resourceId})
CREATE (report:Report $reportData)
MERGE (resource)<-[:REPORTED]-(report)
MERGE (report)<-[:REPORTED]-(submitter)
RETURN report, submitter, resource, labels(resource)[0] as type
`, {
resourceId: id,
userId: user.id,
reportData
}
)
session.close()
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
const { report, submitter, resource, type } = dbResponse
let response = {
...report.properties,
post: null,
comment: null,
user: null,
submitter: submitter.properties,
type
}
switch(type){
case "Post":
response.post = resource.properties
break;
case "Comment":
response.comment = resource.properties
break;
case "User":
response.user = resource.properties
break;
}
return response
}
}
}