working pinGroupPost mutation (permissions not included)

This commit is contained in:
Ulf Gebhardt 2025-12-10 23:21:26 +01:00
parent ccb8727a09
commit 825d3dff80
Signed by: ulfgebhardt
GPG Key ID: DA6B843E748679C9
3 changed files with 10 additions and 9 deletions

View File

@ -485,7 +485,7 @@ export default {
const result = await context.database.query({ const result = await context.database.query({
query: ` query: `
MATCH (:User)-[pinned:GROUP_PINNED]->(pinnedPosts:Post)-[:IN]->(:Group {id: $group.id}) MATCH (:User)-[pinned:GROUP_PINNED]->(pinnedPosts:Post)-[:IN]->(:Group {id: $group.id})
RETURN count(pinnedPosts) as count`, RETURN toString(count(pinnedPosts)) as count`,
variables: { group: parent }, variables: { group: parent },
}) })
return result.records[0].get('count') return result.records[0].get('count')

View File

@ -467,11 +467,10 @@ export default {
if (config.MAX_PINNED_POSTS === 1) { if (config.MAX_PINNED_POSTS === 1) {
await context.database.write({ await context.database.write({
query: ` query: `
MATCH (post:Post {id: $postId})-[:IN]->(group:Group) MATCH (post:Post {id: $params.id})-[:IN]->(group:Group)
MATCH (:User)-[pinned:GROUP_PINNED]->(:Post)-[:IN]->(:Group {id: group.id}) MATCH (:User)-[pinned:GROUP_PINNED]->(:Post)-[:IN]->(:Group {id: group.id})
DELETE pinned DELETE pinned`,
RETURN post`, variables: { user: context.user, params },
variables: { user: context.user, postId: params.id },
}) })
// If MAX_PINNED_POSTS !== 1 -> Check if max is reached // If MAX_PINNED_POSTS !== 1 -> Check if max is reached
} else { } else {
@ -479,8 +478,8 @@ export default {
query: ` query: `
MATCH (post:Post {id: $params.id})-[:IN]->(group:Group) MATCH (post:Post {id: $params.id})-[:IN]->(group:Group)
MATCH (:User)-[pinned:GROUP_PINNED]->(pinnedPosts:Post)-[:IN]->(:Group {id: group.id}) MATCH (:User)-[pinned:GROUP_PINNED]->(pinnedPosts:Post)-[:IN]->(:Group {id: group.id})
RETURN count(pinnedPosts) as count`, RETURN toString(count(pinnedPosts)) as count`,
variables: { user: context.user }, variables: { user: context.user, params },
}) })
if (result.records[0].get('count') >= config.MAX_PINNED_POSTS) { if (result.records[0].get('count') >= config.MAX_PINNED_POSTS) {
throw new Error('Reached maxed pinned posts already. Unpin a post first-') throw new Error('Reached maxed pinned posts already. Unpin a post first-')
@ -493,8 +492,8 @@ export default {
MATCH (user:User {id: $user.id}) MATCH (user:User {id: $user.id})
MATCH (post:Post {id: $params.id})-[:IN]->(group:Group) MATCH (post:Post {id: $params.id})-[:IN]->(group:Group)
MERGE (user)-[pinned:GROUP_PINNED{createdAt: toString(datetime())}]->(post) MERGE (user)-[pinned:GROUP_PINNED{createdAt: toString(datetime())}]->(post)
RETURN post, pinned.createdAt as pinnedAt`, RETURN post {.*, pinnedAt: pinned.createdAt}`,
variables: { user: context.user }, variables: { user: context.user, params },
}) })
// Return post // Return post

View File

@ -485,6 +485,8 @@ export default shield(
VerifyEmailAddress: isAuthenticated, VerifyEmailAddress: isAuthenticated,
pinPost: isAdmin, pinPost: isAdmin,
unpinPost: isAdmin, unpinPost: isAdmin,
pinGroupPost: isAuthenticated, // TODO: permissions
unpinGroupPost: isAuthenticated, // TODO: permissions
pushPost: isAdmin, pushPost: isAdmin,
unpushPost: isAdmin, unpushPost: isAdmin,
UpdateDonations: isAdmin, UpdateDonations: isAdmin,