In the search field, if the first charater is '!', '@' or '#' it only shows results for posts, users or hastags with a limit of 15 in the dropdown

This commit is contained in:
Moriz Wahl 2020-04-15 09:58:23 +02:00
parent 2544edcb29
commit e03d209c45

View File

@ -41,8 +41,6 @@ const searchPostsSetup = {
shoutedCount: toString(size(shouter))
}`,
limit: 'LIMIT $limit',
countKeyName: 'postCount',
resultKeyName: 'posts',
}
const searchUsersSetup = {
@ -52,8 +50,6 @@ const searchUsersSetup = {
withClause: '',
returnClause: 'resource {.*, __typename: labels(resource)[0]}',
limit: 'LIMIT $limit',
countKeyName: 'userCount',
resultKeyName: 'users',
}
const searchHashtagsSetup = {
@ -63,8 +59,6 @@ const searchHashtagsSetup = {
withClause: '',
returnClause: 'resource {.*, __typename: labels(resource)[0]}',
limit: 'LIMIT $limit',
countKeyName: 'hashtagCount',
resultKeyName: 'hashtags',
}
const countSetup = {
@ -110,12 +104,11 @@ const getSearchResults = async (context, setup, params, resultCallback = searchR
}
}
/*
const multiSearchMap = [
{ symbol: '!', setup: searchPostsSetup, resultName: 'posts' },
{ symbol: '@', setup: searchUsersSetup, resultName: 'users' },
{ symbol: '#', setup: searchHashtagsSetup, resultName: 'hashtags' },
] */
]
export default {
Query: {
@ -184,35 +177,26 @@ export default {
const { query, limit } = args
const { id: userId } = context.user
// const searchType = query.replace(/^([!@#]?).*$/, '$1')
// const searchString = query.replace(/^([!@#])/, '')
const searchType = query.replace(/^([!@#]?).*$/, '$1')
const searchString = query.replace(/^([!@#])/, '')
/*
const params = {
query: queryString(searchString),
skip: 0,
limit,
userId,
} */
}
if (searchType === '')
return [
...(await getSearchResults(context, searchPostsSetup, {
query: queryString(query),
skip: 0,
limit,
userId,
})),
...(await getSearchResults(context, searchUsersSetup, {
query: queryString(query),
skip: 0,
limit,
})),
...(await getSearchResults(context, searchHashtagsSetup, {
query: queryString(query),
skip: 0,
limit,
})),
...(await getSearchResults(context, searchPostsSetup, params)),
...(await getSearchResults(context, searchUsersSetup, params)),
...(await getSearchResults(context, searchHashtagsSetup, params)),
]
params.limit = 15
const type = multiSearchMap.find((obj) => obj.symbol === searchType)
return getSearchResults(context, type.setup, params)
},
},
}