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) => {
|
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 {
|
try {
|
||||||
const result = await session.run(statement, { label, id })
|
const result = await session.run(statement, { label, id })
|
||||||
const [firstElement] = result.records.map(r => r.get('moderator').properties)
|
const [firstElement] = result.records.map(r => r.get('moderator').properties)
|
||||||
reviewedByModerator = firstElement
|
reviewedByModerator = firstElement
|
||||||
} finally {
|
} finally {
|
||||||
session.close()
|
session.close()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,9 @@ export default {
|
|||||||
// Wolle console.log('params: ', params)
|
// Wolle console.log('params: ', params)
|
||||||
const { resourceId } = params
|
const { resourceId } = params
|
||||||
// Wolle console.log('resourceId: ', resourceId)
|
// 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)
|
// Wolle console.log('disable: ', disable)
|
||||||
const { user: moderator, driver } = context
|
const { user: moderator, driver } = context
|
||||||
|
|
||||||
@ -118,22 +120,38 @@ export default {
|
|||||||
MATCH (moderator:User {id: $moderatorId})
|
MATCH (moderator:User {id: $moderatorId})
|
||||||
MATCH (resource {id: $resourceId})
|
MATCH (resource {id: $resourceId})
|
||||||
WHERE resource:User OR resource:Post OR resource:Comment
|
WHERE resource:User OR resource:Post OR resource:Comment
|
||||||
|
// report exists?
|
||||||
//WHERE (caseFolder)<-[report:REPORTED]-(submitter:User)
|
//WHERE (caseFolder)<-[report:REPORTED]-(submitter:User)
|
||||||
|
|
||||||
// no open caseFolder, create one, update existing
|
// no open caseFolder, create one, update existing
|
||||||
MERGE (resource)<-[:FLAGGED]-(caseFolder:CaseFolder {closed: false})
|
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 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 = $createdAt, caseFolder.disable = $disable, caseFolder.closed = $closed
|
ON MATCH SET caseFolder.updatedAt = $dateTime
|
||||||
|
// caseFolder.disable and caseFolder.closed are set after setting them in review
|
||||||
|
|
||||||
// Create review on caseFolder
|
// Create review on caseFolder
|
||||||
WITH moderator, resource, 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 moderator, review, caseFolder {.id}, resource, labels(resource)[0] AS type
|
||||||
|
|
||||||
//RETURN decision, resource, moderator, labels(resource)[0] AS type
|
|
||||||
`
|
`
|
||||||
|
|
||||||
// Wolle console.log('cypher: ', cypher)
|
// Wolle console.log('cypher: ', cypher)
|
||||||
@ -159,7 +177,7 @@ export default {
|
|||||||
const mutateDecisionTransactionResponse = await txc.run(cypher, {
|
const mutateDecisionTransactionResponse = await txc.run(cypher, {
|
||||||
resourceId,
|
resourceId,
|
||||||
moderatorId: moderator.id,
|
moderatorId: moderator.id,
|
||||||
createdAt: new Date().toISOString(),
|
dateTime: new Date().toISOString(),
|
||||||
disable,
|
disable,
|
||||||
closed,
|
closed,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -343,7 +343,7 @@ export default {
|
|||||||
return relatedContributions
|
return relatedContributions
|
||||||
},
|
},
|
||||||
reviewedByModerator: async (parent, _params, context, _resolveInfo) => {
|
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
|
WHERE resource:User OR resource:Post OR resource:Comment
|
||||||
// no open caseFolder, create one
|
// no open caseFolder, create one
|
||||||
MERGE (resource)<-[:FLAGGED]-(caseFolder:CaseFolder {closed: false})
|
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
|
// Create report on caseFolder
|
||||||
WITH submitter, resource, caseFolder
|
WITH submitter, resource, caseFolder
|
||||||
CREATE (caseFolder)<-[report:REPORTED {createdAt: $createdAt, reasonCategory: $reasonCategory, reasonDescription: $reasonDescription}]-(submitter)
|
CREATE (caseFolder)<-[report:REPORTED {createdAt: $createdAt, reasonCategory: $reasonCategory, reasonDescription: $reasonDescription}]-(submitter)
|
||||||
|
|||||||
@ -216,7 +216,7 @@ export default {
|
|||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
reviewedByModerator: async (parent, _params, context, _resolveInfo) => {
|
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 {
|
enum CaseRule {
|
||||||
latestReviewUpdatedAt
|
latestReviewUpdatedAtRules
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,26 +9,15 @@ type Comment {
|
|||||||
updatedAt: String
|
updatedAt: String
|
||||||
deleted: Boolean
|
deleted: Boolean
|
||||||
disabled: 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
|
reviewedByModerator: User
|
||||||
# Wolle @cypher(
|
@cypher(
|
||||||
# statement: """
|
statement: """
|
||||||
# MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderators:User)
|
MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
|
||||||
# WITH caseFolder, review, moderators
|
RETURN moderator
|
||||||
# ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC
|
ORDER BY caseFolder.updatedAt DESC, review.updatedAt DESC
|
||||||
# WITH collect(moderators) AS orderedModerators
|
LIMIT 1
|
||||||
# WITH orderedModerators[0] AS moderator
|
"""
|
||||||
# RETURN moderator
|
)
|
||||||
# """
|
|
||||||
# )
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Mutation {
|
type Mutation {
|
||||||
|
|||||||
@ -122,25 +122,14 @@ type Post {
|
|||||||
deleted: Boolean
|
deleted: Boolean
|
||||||
disabled: Boolean
|
disabled: Boolean
|
||||||
reviewedByModerator: User
|
reviewedByModerator: User
|
||||||
# @cypher(
|
@cypher(
|
||||||
# statement: """
|
statement: """
|
||||||
# MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
|
MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
|
||||||
# RETURN moderator
|
RETURN moderator
|
||||||
# ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC
|
ORDER BY caseFolder.updatedAt DESC, review.updatedAt DESC
|
||||||
# LIMIT 1
|
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
|
pinned: Boolean
|
||||||
createdAt: String
|
createdAt: String
|
||||||
updatedAt: String
|
updatedAt: String
|
||||||
|
|||||||
@ -33,26 +33,15 @@ type User {
|
|||||||
coverImg: String
|
coverImg: String
|
||||||
deleted: Boolean
|
deleted: Boolean
|
||||||
disabled: 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
|
reviewedByModerator: User
|
||||||
# Wolle @cypher(
|
@cypher(
|
||||||
# statement: """
|
statement: """
|
||||||
# MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderators:User)
|
MATCH (this)<-[:FLAGGED]-(caseFolder:CaseFolder)<-[review:REVIEWED]-(moderator:User)
|
||||||
# WITH caseFolder, review, moderators
|
RETURN moderator
|
||||||
# ORDER BY caseFolder.updatedAt ASC, review.updatedAt ASC
|
ORDER BY caseFolder.updatedAt DESC, review.updatedAt DESC
|
||||||
# WITH collect(moderators) AS orderedModerators
|
LIMIT 1
|
||||||
# WITH orderedModerators[0] AS moderator
|
"""
|
||||||
# RETURN moderator
|
)
|
||||||
# """
|
|
||||||
# )
|
|
||||||
role: UserGroup!
|
role: UserGroup!
|
||||||
publicKey: String
|
publicKey: String
|
||||||
invitedBy: User @relation(name: "INVITED", direction: "IN")
|
invitedBy: User @relation(name: "INVITED", direction: "IN")
|
||||||
@ -63,8 +52,6 @@ type User {
|
|||||||
about: String
|
about: String
|
||||||
socialMedia: [SocialMedia]! @relation(name: "OWNED_BY", direction: "IN")
|
socialMedia: [SocialMedia]! @relation(name: "OWNED_BY", direction: "IN")
|
||||||
|
|
||||||
# createdAt: DateTime
|
|
||||||
# updatedAt: DateTime
|
|
||||||
createdAt: String
|
createdAt: String
|
||||||
updatedAt: String
|
updatedAt: String
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@ WHERE disabledResource:User OR disabledResource:Comment OR disabledResource:Post
|
|||||||
DELETE disabled
|
DELETE disabled
|
||||||
CREATE (moderator)-[review:REVIEWED]->(caseFolder:CaseFolder)-[:FLAGGED]->(disabledResource)
|
CREATE (moderator)-[review:REVIEWED]->(caseFolder:CaseFolder)-[:FLAGGED]->(disabledResource)
|
||||||
SET review.createdAt = toString(datetime()), review.updatedAt = review.createdAt, review.disable = true
|
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
|
// if disabledResource has no report, then create a moderators default report
|
||||||
WITH moderator, disabledResource, caseFolder
|
WITH moderator, disabledResource, caseFolder
|
||||||
@ -45,7 +45,7 @@ echo "
|
|||||||
MATCH (reporter:User)-[oldReport:REPORTED]->(notDisabledResource)
|
MATCH (reporter:User)-[oldReport:REPORTED]->(notDisabledResource)
|
||||||
WHERE notDisabledResource:User OR notDisabledResource:Comment OR notDisabledResource:Post
|
WHERE notDisabledResource:User OR notDisabledResource:Comment OR notDisabledResource:Post
|
||||||
MERGE (caseFolder:CaseFolder)-[:FLAGGED]->(notDisabledResource)
|
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)
|
CREATE (reporter)-[report:REPORTED]->(caseFolder)
|
||||||
SET report = oldReport
|
SET report = oldReport
|
||||||
DELETE oldReport
|
DELETE oldReport
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user