mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
Get implementing 'reviewedByModerator' further
This commit is contained in:
parent
c0fb53c2b5
commit
a5689e2f67
@ -1,5 +1,6 @@
|
||||
import uuid from 'uuid/v4'
|
||||
import Resolver from './helpers/Resolver'
|
||||
import { queryReviewedByModerator } from './helpers/claimResource.js'
|
||||
|
||||
export default {
|
||||
Mutation: {
|
||||
@ -69,37 +70,10 @@ export default {
|
||||
hasOne: {
|
||||
author: '<-[:WROTE]-(related:User)',
|
||||
post: '-[:COMMENTS]->(related:Post)',
|
||||
// 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) => {
|
||||
// console.log('reviewedByModerator !!!')
|
||||
// console.log('reviewedByModerator !!!')
|
||||
// console.log('reviewedByModerator !!!')
|
||||
// console.log('reviewedByModerator !!!')
|
||||
// console.log('reviewedByModerator !!!')
|
||||
// if (typeof parent.reviewedByModerator !== 'undefined') return parent.reviewedByModerator
|
||||
// // const { id } = parent
|
||||
// // const statement = `
|
||||
// // MATCH (p:Post {id: $id})-[:TAGGED|CATEGORIZED]->(categoryOrTag)<-[:TAGGED|CATEGORIZED]-(post:Post)
|
||||
// // WHERE NOT post.deleted AND NOT post.disabled
|
||||
// // RETURN DISTINCT post
|
||||
// // LIMIT 10
|
||||
// // `
|
||||
// // let reviewedByModerator
|
||||
// // const session = context.driver.session()
|
||||
// // try {
|
||||
// // const result = await session.run(statement, { id })
|
||||
// // relatedContributions = result.records.map(r => r.get('post').properties)
|
||||
// // } finally {
|
||||
// // session.close()
|
||||
// // }
|
||||
// // return reviewedByModerator
|
||||
// return {
|
||||
// id: 'Hallo !!!'
|
||||
// }
|
||||
// },
|
||||
reviewedByModerator: async (parent, _params, context, _resolveInfo) => {
|
||||
return await queryReviewedByModerator('Comment', parent, context)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
21
backend/src/schema/resolvers/helpers/claimResource.js
Normal file
21
backend/src/schema/resolvers/helpers/claimResource.js
Normal file
@ -0,0 +1,21 @@
|
||||
export async function queryReviewedByModerator(label, parent, context) {
|
||||
if (typeof parent.reviewedByModerator !== 'undefined') return parent.reviewedByModerator
|
||||
const { id } = parent
|
||||
const statement = `
|
||||
MATCH (resource {id: $id})<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
|
||||
WHERE $label IN labels(resource)
|
||||
RETURN moderator
|
||||
ORDER BY caseFolder.updatedAt DESC, review.updatedAt DESC
|
||||
LIMIT 1
|
||||
`
|
||||
let reviewedByModerator
|
||||
const session = context.driver.session()
|
||||
try {
|
||||
const result = await session.run(statement, { label, id })
|
||||
const [firstElement] = result.records.map(r => r.get('moderator').properties)
|
||||
reviewedByModerator = firstElement
|
||||
} finally {
|
||||
session.close()
|
||||
}
|
||||
return reviewedByModerator
|
||||
}
|
||||
@ -5,6 +5,8 @@ import { getBlockedUsers, getBlockedByUsers } from './users.js'
|
||||
import { mergeWith, isArray, isEmpty } from 'lodash'
|
||||
import { UserInputError } from 'apollo-server'
|
||||
import Resolver from './helpers/Resolver'
|
||||
import { queryReviewedByModerator } from './helpers/claimResource.js'
|
||||
|
||||
const filterForBlockedUsers = async (params, context) => {
|
||||
if (!context.user) return params
|
||||
const [blockedUsers, blockedByUsers] = await Promise.all([
|
||||
@ -340,25 +342,8 @@ 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
|
||||
reviewedByModerator: async (parent, _params, context, _resolveInfo) => {
|
||||
return await queryReviewedByModerator('Post', parent, context)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ import fileUpload from './fileUpload'
|
||||
import { neode } from '../../bootstrap/neo4j'
|
||||
import { UserInputError, ForbiddenError } from 'apollo-server'
|
||||
import Resolver from './helpers/Resolver'
|
||||
import { queryReviewedByModerator } from './helpers/claimResource.js'
|
||||
|
||||
const instance = neode()
|
||||
|
||||
@ -200,9 +201,6 @@ export default {
|
||||
},
|
||||
hasOne: {
|
||||
invitedBy: '<-[:INVITED]-(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: {
|
||||
@ -217,5 +215,8 @@ export default {
|
||||
badges: '<-[:REWARDED]-(related:Badge)',
|
||||
},
|
||||
}),
|
||||
reviewedByModerator: async (parent, _params, context, _resolveInfo) => {
|
||||
return await queryReviewedByModerator('User', parent, context)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -19,16 +19,16 @@ type Comment {
|
||||
# """
|
||||
# )
|
||||
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
|
||||
"""
|
||||
)
|
||||
# Wolle @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
|
||||
# """
|
||||
# )
|
||||
}
|
||||
|
||||
type Mutation {
|
||||
|
||||
@ -43,16 +43,16 @@ type User {
|
||||
# """
|
||||
# )
|
||||
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
|
||||
"""
|
||||
)
|
||||
# Wolle @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
|
||||
# """
|
||||
# )
|
||||
role: UserGroup!
|
||||
publicKey: String
|
||||
invitedBy: User @relation(name: "INVITED", direction: "IN")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user