From 6d4919a61204ceb255d0c69cd964cf8b5d7ac3c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20N=C3=A4sman?= Date: Mon, 1 Mar 2021 13:24:56 +0100 Subject: [PATCH] make SearchApi an interface Signed-off-by: Eric Peterson --- plugins/search/src/apis.ts | 23 +++++++++++++---------- plugins/search/src/plugin.ts | 4 ++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/plugins/search/src/apis.ts b/plugins/search/src/apis.ts index dc6c12e249..b15be349cf 100644 --- a/plugins/search/src/apis.ts +++ b/plugins/search/src/apis.ts @@ -37,13 +37,18 @@ export type Result = { export type SearchResults = Array; -export class SearchApi { - private catalogApi: CatalogApi; - private discoveryApi: DiscoveryApi; +export interface SearchApi { + getSearchResult(): Promise; + _alphaPerformSearch(query: SearchQuery): Promise; +} - constructor(catalogApi: CatalogApi, discoveryApi: DiscoveryApi) { - this.catalogApi = catalogApi; - this.discoveryApi = discoveryApi; +export class SearchClient implements SearchApi { + private readonly catalogApi: CatalogApi; + private readonly discoveryApi: DiscoveryApi; + + constructor(options: { catalogApi: CatalogApi; discoveryApi: DiscoveryApi }) { + this.catalogApi = options.catalogApi; + this.discoveryApi = options.discoveryApi; } private async entities() { @@ -64,14 +69,12 @@ export class SearchApi { })); } - public getSearchResult(): Promise { + getSearchResult(): Promise { return this.entities(); } // TODO: Productionalize as we implement search milestones. - public async _alphaPerformSearch( - query: SearchQuery, - ): Promise { + async _alphaPerformSearch(query: SearchQuery): Promise { const queryString = qs.stringify(query); const url = `${await this.discoveryApi.getBaseUrl( 'search/query', diff --git a/plugins/search/src/plugin.ts b/plugins/search/src/plugin.ts index c94602868e..e21ad934a0 100644 --- a/plugins/search/src/plugin.ts +++ b/plugins/search/src/plugin.ts @@ -20,7 +20,7 @@ import { createRoutableExtension, discoveryApiRef, } from '@backstage/core'; -import { SearchApi, searchApiRef } from './apis'; +import { SearchClient, searchApiRef } from './apis'; import { catalogApiRef } from '@backstage/plugin-catalog-react'; import { SearchPage as SearchPageComponent } from './components/SearchPage'; @@ -36,7 +36,7 @@ export const searchPlugin = createPlugin({ api: searchApiRef, deps: { catalogApi: catalogApiRef, discoveryApi: discoveryApiRef }, factory: ({ catalogApi, discoveryApi }) => { - return new SearchApi(catalogApi, discoveryApi); + return new SearchClient({ catalogApi, discoveryApi }); }, }), ],