From 130677b50cfec051638eb32cbf463a3e08d718f6 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 20 Apr 2023 10:00:56 +0800 Subject: [PATCH] Add contentReader to the typeAheadSearchResult --- packages/api/src/elastic/pages.ts | 2 +- packages/api/src/generated/graphql.ts | 2 ++ packages/api/src/generated/schema.graphql | 1 + packages/api/src/resolvers/article/index.ts | 9 ++++++++- packages/api/src/resolvers/function_resolvers.ts | 1 - packages/api/src/schema.ts | 1 + packages/api/test/resolvers/article.test.ts | 8 +++++--- 7 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/api/src/elastic/pages.ts b/packages/api/src/elastic/pages.ts index 85850e288..06bf472bb 100644 --- a/packages/api/src/elastic/pages.ts +++ b/packages/api/src/elastic/pages.ts @@ -635,7 +635,7 @@ export const searchAsYouType = async ( ], }, }, - _source: ['title', 'slug', 'siteName'], + _source: ['title', 'slug', 'siteName', 'pageType'], size, }, }) diff --git a/packages/api/src/generated/graphql.ts b/packages/api/src/generated/graphql.ts index bb36edab4..1860ef85a 100644 --- a/packages/api/src/generated/graphql.ts +++ b/packages/api/src/generated/graphql.ts @@ -2723,6 +2723,7 @@ export enum TypeaheadSearchErrorCode { export type TypeaheadSearchItem = { __typename?: 'TypeaheadSearchItem'; + contentReader: ContentReader; id: Scalars['ID']; siteName?: Maybe; slug: Scalars['String']; @@ -5720,6 +5721,7 @@ export type TypeaheadSearchErrorResolvers = { + contentReader?: Resolver; id?: Resolver; siteName?: Resolver, ParentType, ContextType>; slug?: Resolver; diff --git a/packages/api/src/generated/schema.graphql b/packages/api/src/generated/schema.graphql index 420960b75..285acdae4 100644 --- a/packages/api/src/generated/schema.graphql +++ b/packages/api/src/generated/schema.graphql @@ -2080,6 +2080,7 @@ enum TypeaheadSearchErrorCode { } type TypeaheadSearchItem { + contentReader: ContentReader! id: ID! siteName: String slug: String! diff --git a/packages/api/src/resolvers/article/index.ts b/packages/api/src/resolvers/article/index.ts index c8596909b..965d4c9cc 100644 --- a/packages/api/src/resolvers/article/index.ts +++ b/packages/api/src/resolvers/article/index.ts @@ -65,6 +65,7 @@ import { SortParams, TypeaheadSearchError, TypeaheadSearchErrorCode, + TypeaheadSearchItem, TypeaheadSearchSuccess, UpdateReason, UpdatesSinceError, @@ -993,7 +994,13 @@ export const typeaheadSearchResolver = authorized< }, }) - return { items: await searchAsYouType(claims.uid, query, first || undefined) } + const results = await searchAsYouType(claims.uid, query, first || undefined) + const items: TypeaheadSearchItem[] = results.map((r) => ({ + ...r, + contentReader: contentReaderForPageType(r.pageType), + })) + + return { items } }) export const updatesSinceResolver = authorized< diff --git a/packages/api/src/resolvers/function_resolvers.ts b/packages/api/src/resolvers/function_resolvers.ts index c7ba7a305..be95f5d15 100644 --- a/packages/api/src/resolvers/function_resolvers.ts +++ b/packages/api/src/resolvers/function_resolvers.ts @@ -8,7 +8,6 @@ import { getPageByParam } from '../elastic/pages' import { Article, ArticleHighlightsInput, - ContentReader, Highlight, HighlightType, LinkShareInfo, diff --git a/packages/api/src/schema.ts b/packages/api/src/schema.ts index 898633232..f88a71d54 100755 --- a/packages/api/src/schema.ts +++ b/packages/api/src/schema.ts @@ -1854,6 +1854,7 @@ const schema = gql` title: String! slug: String! siteName: String + contentReader: ContentReader! } union UpdatesSinceResult = UpdatesSinceSuccess | UpdatesSinceError diff --git a/packages/api/test/resolvers/article.test.ts b/packages/api/test/resolvers/article.test.ts index 88671648d..604aa6faa 100644 --- a/packages/api/test/resolvers/article.test.ts +++ b/packages/api/test/resolvers/article.test.ts @@ -2,6 +2,7 @@ import * as chai from 'chai' import { expect } from 'chai' import chaiString from 'chai-string' import 'mocha' +import sinon from 'sinon' import { createPubSubClient } from '../../src/datalayer/pubsub' import { refreshIndex } from '../../src/elastic' import { addHighlightToPage } from '../../src/elastic/highlights' @@ -30,6 +31,8 @@ import { UpdateReason, UploadFileStatus, } from '../../src/generated/graphql' +import * as createTask from '../../src/utils/createTask' +import * as uploads from '../../src/utils/uploads' import { createTestUser, deleteTestUser } from '../db' import { createTestElasticPage, @@ -37,9 +40,6 @@ import { graphqlRequest, request, } from '../util' -import sinon from 'sinon' -import * as createTask from '../../src/utils/createTask' -import * as uploads from '../../src/utils/uploads' chai.use(chaiString) @@ -362,6 +362,7 @@ const typeaheadSearchQuery = (keyword: string) => { id slug title + contentReader } } ... on TypeaheadSearchError { @@ -1105,6 +1106,7 @@ describe('Article API', () => { expect(res.body.data.typeaheadSearch.items[2].id).to.eq(pages[2].id) expect(res.body.data.typeaheadSearch.items[3].id).to.eq(pages[3].id) expect(res.body.data.typeaheadSearch.items[4].id).to.eq(pages[4].id) + expect(res.body.data.typeaheadSearch.items[0].contentReader).to.eq('WEB') }) })