diff --git a/backend/src/middleware/index.js b/backend/src/middleware/index.js index 0ad8cb1ae..592e25a60 100644 --- a/backend/src/middleware/index.js +++ b/backend/src/middleware/index.js @@ -15,6 +15,7 @@ import hashtags from './hashtags/hashtagsMiddleware' import email from './email/emailMiddleware' import sentry from './sentryMiddleware' import languages from './languages/languages' +import userInteractions from './userInteractions' export default (schema) => { const middlewares = { @@ -32,6 +33,7 @@ export default (schema) => { includedFields, orderBy, languages, + userInteractions, } let order = [ @@ -40,6 +42,7 @@ export default (schema) => { 'xss', // 'activityPub', disabled temporarily 'validation', + 'userInteractions', 'sluggify', 'languages', 'excerpt', diff --git a/backend/src/middleware/userInteractions.js b/backend/src/middleware/userInteractions.js new file mode 100644 index 000000000..8455d05dd --- /dev/null +++ b/backend/src/middleware/userInteractions.js @@ -0,0 +1,14 @@ + + +const userClickedPost = async (resolve, root, args, context, info) => { + if (args.id) { + console.log('post clicked--', args.id) + } + return resolve(root, args, context, info) +} + +export default { + Query: { + Post: userClickedPost, + }, +} diff --git a/backend/src/schema/resolvers/posts.js b/backend/src/schema/resolvers/posts.js index 14e645730..a02eb599d 100644 --- a/backend/src/schema/resolvers/posts.js +++ b/backend/src/schema/resolvers/posts.js @@ -337,6 +337,7 @@ export default { shoutedCount: '<-[:SHOUTED]-(related:User) WHERE NOT related.deleted = true AND NOT related.disabled = true', emotionsCount: '<-[related:EMOTED]-(:User)', + clickedCount: '<-[related:CLICKED]-(:User)', }, boolean: { shoutedByCurrentUser: diff --git a/backend/src/schema/types/type/Post.gql b/backend/src/schema/types/type/Post.gql index 37f9dd176..f7f5aa69f 100644 --- a/backend/src/schema/types/type/Post.gql +++ b/backend/src/schema/types/type/Post.gql @@ -156,6 +156,10 @@ type Post { statement: "MATCH (this)<-[:SHOUTED]-(u:User {id: $cypherParams.currentUserId}) RETURN COUNT(u) >= 1" ) + clickedCount: Int! + @cypher( + statement: "MATCH (this)<-[:CLICKED]-(r:User) WHERE NOT r.deleted = true AND NOT r.disabled = true RETURN COUNT(DISTINCT r)" + ) emotions: [EMOTED] emotionsCount: Int! @cypher(statement: "MATCH (this)<-[emoted:EMOTED]-(:User) RETURN COUNT(DISTINCT emoted)")