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