Get frontend running by start implementing 'reviewedByModerator' right

This commit is contained in:
Wolfgang Huß 2019-11-21 09:05:54 +01:00
parent ef84e9991f
commit c0fb53c2b5
9 changed files with 77 additions and 73 deletions

View File

@ -20,6 +20,7 @@ export default makeAugmentedSchema({
'NOTIFIED',
'REPORTED',
'REVIEWED',
'CaseFolder',
'Donations',
],
},

View File

@ -69,7 +69,9 @@ export default {
hasOne: {
author: '<-[:WROTE]-(related:User)',
post: '-[:COMMENTS]->(related:Post)',
// Wolle reviewedByModerator: '<-[:DECIDED]-(related:User)',
// Wolle !!! Following statement is not correct, but the correct (see file 'backend/src/schema/types/type/Comment.gql') makes an error. Should be: '<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(related:User) RETURN related ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC LIMIT 1'
// Wolle reviewedByModerator: '<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(related:User)',
reviewedByModerator: '<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(related:User) WITH caseFolder, review, related ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC WITH collect(related) AS orderedRelated WITH orderedRelated[0] AS related',
},
}),
// Wolle reviewedByModerator: async (parent, params, context, resolveInfo) => {

View File

@ -1,7 +1,6 @@
import uuid from 'uuid/v4'
import { undefinedToNullResolver } from './helpers/Resolver'
// Wolle import { undefinedToNullResolver } from './helpers/Resolver'
// const queryOpenDecisionWriteTransaction = (session, resourceId) => {
// Wolle const queryOpenDecisionWriteTransaction = (session, resourceId) => {
// return session.writeTransaction(async txc => {
// const queryOpenDecisionTransactionResponse = await txc.run(
// `

View File

@ -307,7 +307,6 @@ export default {
},
hasOne: {
author: '<-[:WROTE]-(related:User)',
// Wolle reviewedByModerator: '<-[:DECIDED]-(related:User)',
pinnedBy: '<-[:PINNED]-(related:User)',
},
count: {
@ -341,5 +340,25 @@ export default {
}
return relatedContributions
},
reviewedByModerator: async (parent, params, context, resolveInfo) => {
if (typeof parent.reviewedByModerator !== 'undefined') return parent.reviewedByModerator
const { id } = parent
const statement = `
MATCH (p:Post {id: $id})<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
RETURN moderator
ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC
LIMIT 1
`
let reviewedByModerator
const session = context.driver.session()
try {
const result = await session.run(statement, { id })
const [firstElement] = result.records.map(r => r.get('moderator').properties)
reviewedByModerator = firstElement
} finally {
session.close()
}
return reviewedByModerator
},
},
}

View File

@ -1,4 +1,4 @@
import { undefinedToNullResolver } from './helpers/Resolver'
// Wolle import { undefinedToNullResolver } from './helpers/Resolver'
export default {
Mutation: {

View File

@ -200,7 +200,9 @@ export default {
},
hasOne: {
invitedBy: '<-[:INVITED]-(related:User)',
// Wolle reviewedByModerator: '<-[:DECIDED]-(related:User)',
// Wolle !!! Following statement is not correct, but the correct (see file 'backend/src/schema/types/type/User.gql') makes an error. Should be: '<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(related:User) RETURN related ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC LIMIT 1'
// Wolle reviewedByModerator: '<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(related:User)',
reviewedByModerator: '<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderators:User) WITH caseFolder, review, moderators ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC WITH collect(moderators) AS orderedModerators WITH orderedModerators AS related',
location: '-[:IS_IN]->(related:Location)',
},
hasMany: {

View File

@ -1,41 +1,3 @@
enum _CommentOrdering {
id_asc
id_desc
content_asc
content_desc
createdAt_asc
createdAt_desc
updatedAt_asc
updatedAt_desc
}
input _CommentFilter {
AND: [_CommentFilter!]
OR: [_CommentFilter!]
id: ID
id_not: ID
id_in: [ID!]
id_not_in: [ID!]
author: _UserFilter
author_not: _UserFilter
author_in: [_UserFilter!]
author_not_in: [_UserFilter!]
content: String
content_not: String
content_in: [String!]
content_not_in: [String!]
content_contains: String
content_not_contains: String
content_starts_with: String
content_not_starts_with: String
content_ends_with: String
content_not_ends_with: String
post: _PostFilter
post_not: _PostFilter
post_in: [_PostFilter!]
post_not_in: [_PostFilter!]
}
type Comment {
id: ID!
activityId: String
@ -47,31 +9,28 @@ type Comment {
updatedAt: String
deleted: Boolean
disabled: Boolean
# Wolle reviewedByModerator: User # Wolle @relation(name: "DECIDED", direction: "IN")
# Wolle reviewedByModerator: User
# @cypher(
# statement: """
# MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
# RETURN moderator
# ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC
# LIMIT 1
# """
# )
reviewedByModerator: User
@cypher(
statement: """
MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
RETURN moderator
MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderators:User)
WITH caseFolder, review, moderators
ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC
LIMIT 1
WITH collect(moderators) AS orderedModerators
WITH orderedModerators[0] AS moderator
RETURN moderator
"""
)
}
type Query {
Comment(
id: ID
content: String
createdAt: String
updatedAt: String
first: Int
offset: Int
orderBy: [_CommentOrdering]
filter: _CommentFilter
): [Comment]
}
type Mutation {
CreateComment(
id: ID

View File

@ -122,14 +122,25 @@ type Post {
deleted: Boolean
disabled: Boolean
reviewedByModerator: User
@cypher(
statement: """
MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
RETURN moderator
ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC
LIMIT 1
"""
)
# @cypher(
# statement: """
# MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
# RETURN moderator
# ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC
# LIMIT 1
# """
# )
# reviewedByModerator: User
# @cypher(
# statement: """
# MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderators:User)
# WITH caseFolder, review, moderators
# ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC
# WITH collect(moderators) AS orderedModerators
# WITH orderedModerators[0] AS moderator
# RETURN moderator
# """
# )
pinned: Boolean
createdAt: String
updatedAt: String

View File

@ -33,13 +33,24 @@ type User {
coverImg: String
deleted: Boolean
disabled: Boolean
# Wolle reviewedByModerator: User
# @cypher(
# statement: """
# MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
# RETURN moderator
# ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC
# LIMIT 1
# """
# )
reviewedByModerator: User
@cypher(
statement: """
MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
RETURN moderator
MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderators:User)
WITH caseFolder, review, moderators
ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC
LIMIT 1
WITH collect(moderators) AS orderedModerators
WITH orderedModerators[0] AS moderator
RETURN moderator
"""
)
role: UserGroup!