mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
add search groups to resolvers
This commit is contained in:
parent
4f8ebebac3
commit
8a410cf6f5
@ -66,6 +66,21 @@ const searchHashtagsSetup = {
|
||||
limit: 'LIMIT $limit',
|
||||
}
|
||||
|
||||
const searchGroupsSetup = {
|
||||
fulltextIndex: 'group_fulltext_search',
|
||||
match: `MATCH (resource:Group)
|
||||
MATCH (user:User {id: $userId})
|
||||
OPTIONAL MATCH (user)-[membership:MEMBER_OF]->(resource)
|
||||
WITH user, resource, membership`,
|
||||
whereClause: `WHERE score >= 0.0
|
||||
AND NOT (resource.deleted = true OR resource.disabled = true)
|
||||
AND (resource.groupType IN ['public', 'closed']
|
||||
OR membership.role IN ['usual', 'admin', 'owner'])`,
|
||||
withClause: 'WITH resource',
|
||||
returnClause: 'resource { .*, __typename: labels(resource)[0] }',
|
||||
limit: 'LIMIT $limit',
|
||||
}
|
||||
|
||||
const countSetup = {
|
||||
returnClause: 'toString(size(collect(resource)))',
|
||||
limit: '',
|
||||
@ -84,6 +99,11 @@ const countHashtagsSetup = {
|
||||
...countSetup,
|
||||
}
|
||||
|
||||
const countGroupsSetup = {
|
||||
...searchGroupsSetup,
|
||||
...countSetup,
|
||||
}
|
||||
|
||||
const searchResultPromise = async (session, setup, params) => {
|
||||
return session.readTransaction(async (transaction) => {
|
||||
return transaction.run(cypherTemplate(setup), params)
|
||||
@ -113,6 +133,7 @@ const multiSearchMap = [
|
||||
{ symbol: '!', setup: searchPostsSetup, resultName: 'posts' },
|
||||
{ symbol: '@', setup: searchUsersSetup, resultName: 'users' },
|
||||
{ symbol: '#', setup: searchHashtagsSetup, resultName: 'hashtags' },
|
||||
{ symbol: '&', setup: searchGroupsSetup, resultName: 'groups' },
|
||||
]
|
||||
|
||||
export default {
|
||||
@ -178,6 +199,25 @@ export default {
|
||||
}),
|
||||
}
|
||||
},
|
||||
searchGroups: async (_parent, args, context, _resolveInfo) => {
|
||||
const { query, groupsOffset, firstGroups } = args
|
||||
return {
|
||||
groupCount: getSearchResults(
|
||||
context,
|
||||
countGroupsSetup,
|
||||
{
|
||||
query: queryString(query),
|
||||
skip: 0,
|
||||
},
|
||||
countResultCallback,
|
||||
),
|
||||
groups: getSearchResults(context, searchGroupsSetup, {
|
||||
query: queryString(query),
|
||||
skip: groupsOffset,
|
||||
limit: firstGroups,
|
||||
}),
|
||||
}
|
||||
},
|
||||
searchResults: async (_parent, args, context, _resolveInfo) => {
|
||||
const { query, limit } = args
|
||||
let userId = null
|
||||
@ -197,6 +237,7 @@ export default {
|
||||
return [
|
||||
...(await getSearchResults(context, searchPostsSetup, params)),
|
||||
...(await getSearchResults(context, searchUsersSetup, params)),
|
||||
...(await getSearchResults(context, searchGroupsSetup, params)),
|
||||
...(await getSearchResults(context, searchHashtagsSetup, params)),
|
||||
]
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user