From 4264bb2af7be7092b097e5145dfb6d72b829b503 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 9 Dec 2019 09:06:28 +0100 Subject: [PATCH] Trying to get the backend working --- .../src/middleware/permissionsMiddleware.js | 4 ++- backend/src/schema/resolvers/#searches.js# | 31 +++++++++++++++++++ backend/src/schema/resolvers/posts.js | 6 ++-- backend/src/schema/resolvers/searches.js | 30 ++++++++++++++++++ backend/src/schema/resolvers/users.js | 7 +++++ backend/src/schema/types/schema.gql | 20 ------------ backend/src/schema/types/type/Post.gql | 16 ++++++++++ backend/src/schema/types/type/Search.gql | 5 +++ backend/src/schema/types/type/User.gql | 12 ++++++- 9 files changed, 107 insertions(+), 24 deletions(-) create mode 100644 backend/src/schema/resolvers/#searches.js# create mode 100644 backend/src/schema/resolvers/searches.js create mode 100644 backend/src/schema/types/type/Search.gql diff --git a/backend/src/middleware/permissionsMiddleware.js b/backend/src/middleware/permissionsMiddleware.js index 8e4569a52..520093757 100644 --- a/backend/src/middleware/permissionsMiddleware.js +++ b/backend/src/middleware/permissionsMiddleware.js @@ -83,7 +83,9 @@ export default shield( { Query: { '*': deny, - findPosts: allow, + findPosts: allow, + findUsers: allow, + findAnything: allow, embed: allow, Category: allow, Tag: allow, diff --git a/backend/src/schema/resolvers/#searches.js# b/backend/src/schema/resolvers/#searches.js# new file mode 100644 index 000000000..7d4f94fc9 --- /dev/null +++ b/backend/src/schema/resolvers/#searches.js# @@ -0,0 +1,31 @@ +import { neo4jgraphql } from 'neo4j-graphql-js' +import posts from './posts.js' +import users from './users.js' + +const postArgs = (args, query) => { + args.query = query.replace(/\s/g, '~ ') + '~' + args.filter = {} + return args +} + +const userArgs = (args, query) => { + args.query = new RegExp('(?i).*BOB.*')//(?i).*' + query + '.* + args.filter = {} + return args +} + +export default { + Query: { + findAnything: async (_parent, args, context, _resolveInfo) => { + const query = args.query + console.log('postArgs', postArgs(args, query)) + const postResults = await posts.Query.findPosts(_parent, postArgs(args, query), context, _resolveInfo) + console.log('Posts', postResults) + //console.log('userArgs', userArgs(args, query)) + //const userResults = await users.Query.findUsers(_parent, userArgs(args, query), context, _resolveInfo) + //console.log('Users', userResults) + return true + } + } +} + diff --git a/backend/src/schema/resolvers/posts.js b/backend/src/schema/resolvers/posts.js index b37a4abd5..a4a37197d 100644 --- a/backend/src/schema/resolvers/posts.js +++ b/backend/src/schema/resolvers/posts.js @@ -47,8 +47,10 @@ export default { return neo4jgraphql(object, params, context, resolveInfo) }, findPosts: async (object, params, context, resolveInfo) => { - params = await filterForBlockedUsers(params, context) - return neo4jgraphql(object, params, context, resolveInfo) + params = await filterForBlockedUsers(params, context) + const debug = await neo4jgraphql(object, params, context, resolveInfo, true) + console.log('debug', debug) + return debug }, profilePagePosts: async (object, params, context, resolveInfo) => { params = await filterForBlockedUsers(params, context) diff --git a/backend/src/schema/resolvers/searches.js b/backend/src/schema/resolvers/searches.js new file mode 100644 index 000000000..6ac1d03fd --- /dev/null +++ b/backend/src/schema/resolvers/searches.js @@ -0,0 +1,30 @@ +import posts from './posts.js' +import users from './users.js' + +const postArgs = (args, query) => { + args.query = query.replace(/\s/g, '~ ') + '~' + args.filter = {} + return args +} + +const userArgs = (args, query) => { + args.query = new RegExp('(?i).*BOB.*')//(?i).*' + query + '.* + args.filter = {} + return args +} + +export default { + Query: { + findAnything: async (_parent, args, context, _resolveInfo) => { + const query = args.query + console.log('postArgs', postArgs(args, query)) + const postResults = await posts.Query.findPosts(_parent, postArgs(args, query), context, _resolveInfo) + console.log('Posts', postResults) + //console.log('userArgs', userArgs(args, query)) + //const userResults = await users.Query.findUsers(_parent, userArgs(args, query), context, _resolveInfo) + //console.log('Users', userResults) + return true + } + } +} + diff --git a/backend/src/schema/resolvers/users.js b/backend/src/schema/resolvers/users.js index c44e3f44b..838790185 100644 --- a/backend/src/schema/resolvers/users.js +++ b/backend/src/schema/resolvers/users.js @@ -45,6 +45,13 @@ export default { } catch (e) { throw new UserInputError(e.message) } + }, + findUsers: async (object, params, context, resolveInfo) => { + console.log('params', params) + //const blockedUsers = await getBlockedUsers(context) + const debug = await neo4jgraphql(object, params, context, resolveInfo, true) + console.log('debug', debug) + return debug }, User: async (object, args, context, resolveInfo) => { const { email } = args diff --git a/backend/src/schema/types/schema.gql b/backend/src/schema/types/schema.gql index 35998b935..23c2ded4d 100644 --- a/backend/src/schema/types/schema.gql +++ b/backend/src/schema/types/schema.gql @@ -1,23 +1,3 @@ -type Query { - isLoggedIn: Boolean! - # Get the currently logged in User based on the given JWT Token - currentUser: User - findPosts(query: String!, limit: Int = 10, filter: _PostFilter): [Post]! - @cypher( - statement: """ - CALL db.index.fulltext.queryNodes('full_text_search', $query) - YIELD node as post, score - MATCH (post)<-[:WROTE]-(user:User) - WHERE score >= 0.2 - AND NOT user.deleted = true AND NOT user.disabled = true - AND NOT post.deleted = true AND NOT post.disabled = true - AND NOT user.id in COALESCE($filter.author_not.id_in, []) - RETURN post - LIMIT $limit - """ - ) -} - type Mutation { # Get a JWT Token for the given Email and password login(email: String!, password: String!): String! diff --git a/backend/src/schema/types/type/Post.gql b/backend/src/schema/types/type/Post.gql index 0f1817971..fdee7c5e0 100644 --- a/backend/src/schema/types/type/Post.gql +++ b/backend/src/schema/types/type/Post.gql @@ -226,4 +226,20 @@ type Query { PostsEmotionsCountByEmotion(postId: ID!, data: _EMOTEDInput!): Int! PostsEmotionsByCurrentUser(postId: ID!): [String] profilePagePosts(filter: _PostFilter, first: Int, offset: Int, orderBy: [_PostOrdering]): [Post] + isLoggedIn: Boolean! + currentUser: User + findPosts(query: String!, limit: Int = 10, filter: _PostFilter): [Post]! + @cypher( + statement: """ + CALL db.index.fulltext.queryNodes('full_text_search', $query) + YIELD node as post, score + MATCH (post)<-[:WROTE]-(user:User) + WHERE score >= 0.2 + AND NOT user.deleted = true AND NOT user.disabled = true + AND NOT post.deleted = true AND NOT post.disabled = true + AND NOT user.id in COALESCE($filter.author_not.id_in, []) + RETURN post + LIMIT $limit + """ + ) } diff --git a/backend/src/schema/types/type/Search.gql b/backend/src/schema/types/type/Search.gql new file mode 100644 index 000000000..03a1c7690 --- /dev/null +++ b/backend/src/schema/types/type/Search.gql @@ -0,0 +1,5 @@ +union SearchResult = Post | User + +type Query { + findAnything(query: String!, limit: Int = 10): [Post] +} diff --git a/backend/src/schema/types/type/User.gql b/backend/src/schema/types/type/User.gql index 243f45322..d55737e0c 100644 --- a/backend/src/schema/types/type/User.gql +++ b/backend/src/schema/types/type/User.gql @@ -161,7 +161,17 @@ type Query { ): [User] blockedUsers: [User] - currentUser: User + currentUser: User + findUsers(query: String!,limit: Int = 10, filter: _UserFilter): [User]! + @cypher( + statement: """ + MATCH (user:User) + WHERE (user.name =~ $query OR user.slug =~ $query) + AND NOT user.deleted = true AND NOT user.disabled = true + RETURN user + LIMIT $limit + """ + ) } type Mutation {