make SearchApi an interface

Signed-off-by: Eric Peterson <ericpeterson@spotify.com>
This commit is contained in:
Anders Näsman
2021-03-01 13:24:56 +01:00
committed by Eric Peterson
parent 5e70312d67
commit 6d4919a612
2 changed files with 15 additions and 12 deletions
+13 -10
View File
@@ -37,13 +37,18 @@ export type Result = {
export type SearchResults = Array<Result>;
export class SearchApi {
private catalogApi: CatalogApi;
private discoveryApi: DiscoveryApi;
export interface SearchApi {
getSearchResult(): Promise<SearchResults>;
_alphaPerformSearch(query: SearchQuery): Promise<SearchResultSet>;
}
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<SearchResults> {
getSearchResult(): Promise<SearchResults> {
return this.entities();
}
// TODO: Productionalize as we implement search milestones.
public async _alphaPerformSearch(
query: SearchQuery,
): Promise<SearchResultSet> {
async _alphaPerformSearch(query: SearchQuery): Promise<SearchResultSet> {
const queryString = qs.stringify(query);
const url = `${await this.discoveryApi.getBaseUrl(
'search/query',
+2 -2
View File
@@ -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 });
},
}),
],