add typeahead api implementation
This commit is contained in:
committed by
Jackson Harper
parent
dc9523e522
commit
3a1f38a6f7
@ -1354,6 +1354,7 @@ export type QuerySubscriptionsArgs = {
|
||||
|
||||
export type QueryTypeaheadArgs = {
|
||||
query: Scalars['String'];
|
||||
size?: InputMaybe<Scalars['Int']>;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -924,7 +924,7 @@ type Query {
|
||||
sendInstallInstructions: SendInstallInstructionsResult!
|
||||
sharedArticle(selectedHighlightId: String, slug: String!, username: String!): SharedArticleResult!
|
||||
subscriptions(sort: SortParams): SubscriptionsResult!
|
||||
typeahead(query: String!): TypeaheadResult!
|
||||
typeahead(query: String!, size: Int): TypeaheadResult!
|
||||
user(userId: ID, username: String): UserResult!
|
||||
users: UsersResult!
|
||||
validateUsername(username: String!): Boolean!
|
||||
|
||||
@ -22,6 +22,7 @@ import {
|
||||
QueryArticleArgs,
|
||||
QueryArticlesArgs,
|
||||
QuerySearchArgs,
|
||||
QueryTypeaheadArgs,
|
||||
ResolverFn,
|
||||
SaveArticleReadingProgressError,
|
||||
SaveArticleReadingProgressErrorCode,
|
||||
@ -35,6 +36,9 @@ import {
|
||||
SetShareArticleError,
|
||||
SetShareArticleErrorCode,
|
||||
SetShareArticleSuccess,
|
||||
TypeaheadError,
|
||||
TypeaheadErrorCode,
|
||||
TypeaheadSuccess,
|
||||
} from '../../generated/graphql'
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import { Merge } from '../../util'
|
||||
@ -82,6 +86,7 @@ import {
|
||||
deletePage,
|
||||
getPageById,
|
||||
getPageByParam,
|
||||
searchAsYouType,
|
||||
searchPages,
|
||||
updatePage,
|
||||
} from '../../elastic/pages'
|
||||
@ -889,3 +894,25 @@ export const searchResolver = authorized<
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
export const typeaheadResolver = authorized<
|
||||
TypeaheadSuccess,
|
||||
TypeaheadError,
|
||||
QueryTypeaheadArgs
|
||||
>(async (_obj, { query, size }, { claims }) => {
|
||||
if (!claims?.uid) {
|
||||
return { errorCodes: [TypeaheadErrorCode.Unauthorized] }
|
||||
}
|
||||
|
||||
analytics.track({
|
||||
userId: claims.uid,
|
||||
event: 'typeahead',
|
||||
properties: {
|
||||
env: env.server.apiEnv,
|
||||
query,
|
||||
size,
|
||||
},
|
||||
})
|
||||
|
||||
return { items: await searchAsYouType(claims.uid, query, size || undefined) }
|
||||
})
|
||||
|
||||
@ -76,6 +76,7 @@ import {
|
||||
signupResolver,
|
||||
subscribeResolver,
|
||||
subscriptionsResolver,
|
||||
typeaheadResolver,
|
||||
unsubscribeResolver,
|
||||
updateHighlightResolver,
|
||||
updateLabelResolver,
|
||||
@ -188,6 +189,7 @@ export const functionResolvers = {
|
||||
webhooks: webhooksResolver,
|
||||
webhook: webhookResolver,
|
||||
apiKeys: apiKeysResolver,
|
||||
typeahead: typeaheadResolver,
|
||||
},
|
||||
User: {
|
||||
async sharedArticles(
|
||||
@ -589,4 +591,5 @@ export const functionResolvers = {
|
||||
...resultResolveTypeResolver('ApiKeys'),
|
||||
...resultResolveTypeResolver('RevokeApiKey'),
|
||||
...resultResolveTypeResolver('DeleteAccount'),
|
||||
...resultResolveTypeResolver('Typeahead'),
|
||||
}
|
||||
|
||||
@ -1896,7 +1896,7 @@ const schema = gql`
|
||||
webhooks: WebhooksResult!
|
||||
webhook(id: ID!): WebhookResult!
|
||||
apiKeys: ApiKeysResult!
|
||||
typeahead(query: String!): TypeaheadResult!
|
||||
typeahead(query: String!, size: Int): TypeaheadResult!
|
||||
}
|
||||
`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user