Add custom resolver, update factories

This commit is contained in:
Matt Rider 2019-04-16 19:48:59 -03:00
parent 674cdddfc3
commit dfef4fe05f
5 changed files with 38 additions and 9 deletions

View File

@ -9,6 +9,7 @@ import moderation from './resolvers/moderation.js'
import rewards from './resolvers/rewards.js'
import socialMedia from './resolvers/socialMedia.js'
import notifications from './resolvers/notifications'
import comments from './resolvers/comments'
export const typeDefs = fs
.readFileSync(
@ -29,6 +30,7 @@ export const resolvers = {
...moderation.Mutation,
...rewards.Mutation,
...socialMedia.Mutation,
...notifications.Mutation
...notifications.Mutation,
...comments.Mutation
}
}

View File

@ -0,0 +1,28 @@
import { neo4jgraphql } from 'neo4j-graphql-js'
export default {
Mutation: {
CreateComment: async (object, params, context, resolveInfo) => {
const { postId } = params
const result = await neo4jgraphql(object, params, context, resolveInfo, true)
const session = context.driver.session()
const transactionRes = await session.run(`
MATCH (post:Post {id: $postId}), (comment:Comment {id: $commentId})
MERGE (post)<-[:COMMENTS]-(comment)
RETURN comment {.id, .content}`, {
postId,
commentId: result.id
}
)
const [comment] = transactionRes.records.map(record => {
return record.get('comment')
})
session.close()
return comment
}
}
}

View File

@ -3,7 +3,7 @@ import { neo4jgraphql } from 'neo4j-graphql-js'
export default {
Mutation: {
CreateSocialMedia: async (object, params, context, resolveInfo) => {
const socialMedia = await neo4jgraphql(object, params, context, resolveInfo, true)
const socialMedia = await neo4jgraphql(object, params, context, resolveInfo, false)
const session = context.driver.session()
await session.run(
`MATCH (owner:User {id: $userId}), (socialMedia:SocialMedia {id: $socialMediaId})

View File

@ -27,6 +27,7 @@ type Mutation {
enable(id: ID!): ID
reward(fromBadgeId: ID!, toUserId: ID!): ID
unreward(fromBadgeId: ID!, toUserId: ID!): ID
CreateComment(id: ID!, postId: ID!, content: String!) : Comment
"Shout the given Type and ID"
shout(id: ID!, type: ShoutTypeEnum): Boolean! @cypher(statement: """
MATCH (n {id: $id})<-[:WROTE]-(wu:User), (u:User {id: $cypherParams.currentUserId})

View File

@ -4,22 +4,20 @@ import uuid from 'uuid/v4'
export default function (params) {
const {
id = uuid(),
postId = uuid(),
content = [
faker.lorem.sentence(),
faker.lorem.sentence()
].join('. '),
disabled = false,
deleted = false
].join('. ')
} = params
return `
mutation {
CreateComment(
id: "${id}",
content: "${content}",
disabled: ${disabled},
deleted: ${deleted}
) { id }
postId: "${postId}",
content: "${content}"
) { id, content }
}
`
}