mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
No new review if a reviewer changes their opinion
This commit is contained in:
parent
eaafac30c7
commit
a7aaee98c1
@ -73,7 +73,7 @@ export default {
|
||||
},
|
||||
}),
|
||||
reviewedByModerator: async (parent, _params, context, _resolveInfo) => {
|
||||
return await queryReviewedByModerator('Comment', parent, context)
|
||||
return queryReviewedByModerator('Comment', parent, context)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@ export async function queryReviewedByModerator(label, parent, context) {
|
||||
try {
|
||||
const result = await session.run(statement, { label, id })
|
||||
const [firstElement] = result.records.map(r => r.get('moderator').properties)
|
||||
reviewedByModerator = firstElement
|
||||
reviewedByModerator = firstElement
|
||||
} finally {
|
||||
session.close()
|
||||
}
|
||||
|
||||
@ -29,7 +29,9 @@ export default {
|
||||
// Wolle console.log('params: ', params)
|
||||
const { resourceId } = params
|
||||
// Wolle console.log('resourceId: ', resourceId)
|
||||
const { disable, closed } = params
|
||||
let { disable, closed } = params
|
||||
disable = disable === undefined ? null : disable
|
||||
closed = closed === undefined ? null : closed
|
||||
// Wolle console.log('disable: ', disable)
|
||||
const { user: moderator, driver } = context
|
||||
|
||||
@ -118,22 +120,38 @@ export default {
|
||||
MATCH (moderator:User {id: $moderatorId})
|
||||
MATCH (resource {id: $resourceId})
|
||||
WHERE resource:User OR resource:Post OR resource:Comment
|
||||
// report exists?
|
||||
//WHERE (caseFolder)<-[report:REPORTED]-(submitter:User)
|
||||
|
||||
// no open caseFolder, create one, update existing
|
||||
MERGE (resource)<-[:FLAGGED]-(caseFolder:CaseFolder {closed: false})
|
||||
ON CREATE SET caseFolder.id = randomUUID(), caseFolder.createdAt = $createdAt, caseFolder.updatedAt = caseFolder.createdAt, caseFolder.rule = 'latestReviewUpdatedAt', caseFolder.disable = $disable, caseFolder.closed = $closed
|
||||
ON MATCH SET caseFolder.updatedAt = $createdAt, caseFolder.disable = $disable, caseFolder.closed = $closed
|
||||
ON CREATE SET caseFolder.id = randomUUID(), caseFolder.createdAt = $dateTime, caseFolder.updatedAt = caseFolder.createdAt, caseFolder.rule = 'latestReviewUpdatedAtRules', caseFolder.disable = false, caseFolder.closed = false
|
||||
ON MATCH SET caseFolder.updatedAt = $dateTime
|
||||
// caseFolder.disable and caseFolder.closed are set after setting them in review
|
||||
|
||||
// Create review on caseFolder
|
||||
WITH moderator, resource, caseFolder
|
||||
CREATE (caseFolder)<-[review:REVIEWED {createdAt: $createdAt, updatedAt: $createdAt, disable: $disable, closed: $closed}]-(moderator)
|
||||
MERGE (caseFolder)<-[review:REVIEWED]-(moderator)
|
||||
ON CREATE SET review.createdAt = $dateTime, review.updatedAt = review.createdAt,
|
||||
review.disable = CASE WHEN $disable IS NULL
|
||||
THEN false
|
||||
ELSE $disable END,
|
||||
review.closed = CASE WHEN $closed IS NULL
|
||||
THEN false
|
||||
ELSE $closed END
|
||||
ON MATCH SET
|
||||
review.updatedAt = $dateTime,
|
||||
review.disable = CASE WHEN $disable IS NULL
|
||||
THEN review.disable
|
||||
ELSE $disable END,
|
||||
review.closed = CASE WHEN $closed IS NULL
|
||||
THEN review.closed
|
||||
ELSE $closed END
|
||||
|
||||
SET resource.disabled = $disable
|
||||
SET caseFolder.disable = review.disable, caseFolder.closed = review.closed
|
||||
SET resource.disabled = review.disable
|
||||
|
||||
RETURN moderator, review, caseFolder {.id}, resource, labels(resource)[0] AS type
|
||||
|
||||
//RETURN decision, resource, moderator, labels(resource)[0] AS type
|
||||
`
|
||||
|
||||
// Wolle console.log('cypher: ', cypher)
|
||||
@ -159,7 +177,7 @@ export default {
|
||||
const mutateDecisionTransactionResponse = await txc.run(cypher, {
|
||||
resourceId,
|
||||
moderatorId: moderator.id,
|
||||
createdAt: new Date().toISOString(),
|
||||
dateTime: new Date().toISOString(),
|
||||
disable,
|
||||
closed,
|
||||
})
|
||||
|
||||
@ -343,7 +343,7 @@ export default {
|
||||
return relatedContributions
|
||||
},
|
||||
reviewedByModerator: async (parent, _params, context, _resolveInfo) => {
|
||||
return await queryReviewedByModerator('Post', parent, context)
|
||||
return queryReviewedByModerator('Post', parent, context)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -15,7 +15,7 @@ export default {
|
||||
WHERE resource:User OR resource:Post OR resource:Comment
|
||||
// no open caseFolder, create one
|
||||
MERGE (resource)<-[:FLAGGED]-(caseFolder:CaseFolder {closed: false})
|
||||
ON CREATE SET caseFolder.id = randomUUID(), caseFolder.createdAt = $createdAt, caseFolder.updatedAt = caseFolder.createdAt, caseFolder.rule = 'latestReviewUpdatedAt', caseFolder.disable = false, caseFolder.closed = false
|
||||
ON CREATE SET caseFolder.id = randomUUID(), caseFolder.createdAt = $createdAt, caseFolder.updatedAt = caseFolder.createdAt, caseFolder.rule = 'latestReviewUpdatedAtRules', caseFolder.disable = false, caseFolder.closed = false
|
||||
// Create report on caseFolder
|
||||
WITH submitter, resource, caseFolder
|
||||
CREATE (caseFolder)<-[report:REPORTED {createdAt: $createdAt, reasonCategory: $reasonCategory, reasonDescription: $reasonDescription}]-(submitter)
|
||||
|
||||
@ -216,7 +216,7 @@ export default {
|
||||
},
|
||||
}),
|
||||
reviewedByModerator: async (parent, _params, context, _resolveInfo) => {
|
||||
return await queryReviewedByModerator('User', parent, context)
|
||||
return queryReviewedByModerator('User', parent, context)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -10,5 +10,5 @@ type CaseFolder {
|
||||
}
|
||||
|
||||
enum CaseRule {
|
||||
latestReviewUpdatedAt
|
||||
latestReviewUpdatedAtRules
|
||||
}
|
||||
|
||||
@ -9,26 +9,15 @@ type Comment {
|
||||
updatedAt: 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
|
||||
# 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
|
||||
# """
|
||||
# )
|
||||
@cypher(
|
||||
statement: """
|
||||
MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
|
||||
RETURN moderator
|
||||
ORDER BY caseFolder.updatedAt DESC, review.updatedAt DESC
|
||||
LIMIT 1
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
type Mutation {
|
||||
|
||||
@ -122,25 +122,14 @@ 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
|
||||
# """
|
||||
# )
|
||||
# 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
|
||||
# """
|
||||
# )
|
||||
@cypher(
|
||||
statement: """
|
||||
MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
|
||||
RETURN moderator
|
||||
ORDER BY caseFolder.updatedAt DESC, review.updatedAt DESC
|
||||
LIMIT 1
|
||||
"""
|
||||
)
|
||||
pinned: Boolean
|
||||
createdAt: String
|
||||
updatedAt: String
|
||||
|
||||
@ -33,26 +33,15 @@ 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
|
||||
# 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
|
||||
# """
|
||||
# )
|
||||
@cypher(
|
||||
statement: """
|
||||
MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
|
||||
RETURN moderator
|
||||
ORDER BY caseFolder.updatedAt DESC, review.updatedAt DESC
|
||||
LIMIT 1
|
||||
"""
|
||||
)
|
||||
role: UserGroup!
|
||||
publicKey: String
|
||||
invitedBy: User @relation(name: "INVITED", direction: "IN")
|
||||
@ -63,8 +52,6 @@ type User {
|
||||
about: String
|
||||
socialMedia: [SocialMedia]! @relation(name: "OWNED_BY", direction: "IN")
|
||||
|
||||
# createdAt: DateTime
|
||||
# updatedAt: DateTime
|
||||
createdAt: String
|
||||
updatedAt: String
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ WHERE disabledResource:User OR disabledResource:Comment OR disabledResource:Post
|
||||
DELETE disabled
|
||||
CREATE (moderator)-[review:REVIEWED]->(caseFolder:CaseFolder)-[:FLAGGED]->(disabledResource)
|
||||
SET review.createdAt = toString(datetime()), review.updatedAt = review.createdAt, review.disable = true
|
||||
SET caseFolder.id = randomUUID(), caseFolder.createdAt = toString(datetime()), caseFolder.updatedAt = caseFolder.createdAt, caseFolder.rule = 'latestReviewUpdatedAt', caseFolder.disable = true, caseFolder.closed = false
|
||||
SET caseFolder.id = randomUUID(), caseFolder.createdAt = toString(datetime()), caseFolder.updatedAt = caseFolder.createdAt, caseFolder.rule = 'latestReviewUpdatedAtRules', caseFolder.disable = true, caseFolder.closed = false
|
||||
|
||||
// if disabledResource has no report, then create a moderators default report
|
||||
WITH moderator, disabledResource, caseFolder
|
||||
@ -45,7 +45,7 @@ echo "
|
||||
MATCH (reporter:User)-[oldReport:REPORTED]->(notDisabledResource)
|
||||
WHERE notDisabledResource:User OR notDisabledResource:Comment OR notDisabledResource:Post
|
||||
MERGE (caseFolder:CaseFolder)-[:FLAGGED]->(notDisabledResource)
|
||||
ON CREATE SET caseFolder.id = randomUUID(), caseFolder.createdAt = toString(datetime()), caseFolder.updatedAt = caseFolder.createdAt, caseFolder.rule = 'latestReviewUpdatedAt', caseFolder.disable = false, caseFolder.closed = false
|
||||
ON CREATE SET caseFolder.id = randomUUID(), caseFolder.createdAt = toString(datetime()), caseFolder.updatedAt = caseFolder.createdAt, caseFolder.rule = 'latestReviewUpdatedAtRules', caseFolder.disable = false, caseFolder.closed = false
|
||||
CREATE (reporter)-[report:REPORTED]->(caseFolder)
|
||||
SET report = oldReport
|
||||
DELETE oldReport
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user