From 62346b79a7f44432be4334618f165bb30e6d9e18 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Tue, 27 Feb 2024 16:15:24 +0100 Subject: [PATCH] refactor: apply review suggestions Signed-off-by: Camila Belo --- .changeset/polite-parrots-clap.md | 5 ---- .changeset/six-grapes-sniff.md | 2 +- .../backend/src/plugins/search.ts.hbs | 1 - .../search-backend-node/api-report-alpha.md | 29 +------------------ plugins/search-backend-node/src/alpha.ts | 10 ++----- plugins/search-backend/api-report.md | 2 +- plugins/search-backend/src/service/router.ts | 17 +++++++++-- 7 files changed, 20 insertions(+), 46 deletions(-) delete mode 100644 .changeset/polite-parrots-clap.md diff --git a/.changeset/polite-parrots-clap.md b/.changeset/polite-parrots-clap.md deleted file mode 100644 index de485e0856..0000000000 --- a/.changeset/polite-parrots-clap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Update the search backend template to forward env discovery to the router. diff --git a/.changeset/six-grapes-sniff.md b/.changeset/six-grapes-sniff.md index 43e5ef04f6..095e96dd77 100644 --- a/.changeset/six-grapes-sniff.md +++ b/.changeset/six-grapes-sniff.md @@ -2,4 +2,4 @@ '@backstage/plugin-search-backend': patch --- -**BREAKING**: Update the router to use the new `auth` services. The router now requires a discovery service option to get credentials for the permission service. +Update the router to use the new `auth` services, it now accepts an optional discovery service option to get credentials for the permission service. diff --git a/packages/create-app/templates/default-app/packages/backend/src/plugins/search.ts.hbs b/packages/create-app/templates/default-app/packages/backend/src/plugins/search.ts.hbs index 4149f67193..467ac60a5a 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/plugins/search.ts.hbs +++ b/packages/create-app/templates/default-app/packages/backend/src/plugins/search.ts.hbs @@ -60,7 +60,6 @@ export default async function createPlugin( engine: indexBuilder.getSearchEngine(), types: indexBuilder.getDocumentTypes(), permissions: env.permissions, - discovery: env.discovery, config: env.config, logger: env.logger, }); diff --git a/plugins/search-backend-node/api-report-alpha.md b/plugins/search-backend-node/api-report-alpha.md index a7ac52a218..c8e5cbb65d 100644 --- a/plugins/search-backend-node/api-report-alpha.md +++ b/plugins/search-backend-node/api-report-alpha.md @@ -3,39 +3,12 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -/// - -import { BackstageCredentials } from '@backstage/backend-plugin-api'; import { DocumentTypeInfo } from '@backstage/plugin-search-common'; import { ExtensionPoint } from '@backstage/backend-plugin-api'; -import { IndexableResultSet } from '@backstage/plugin-search-common'; import { RegisterCollatorParameters } from '@backstage/plugin-search-backend-node'; import { RegisterDecoratorParameters } from '@backstage/plugin-search-backend-node'; -import { SearchQuery } from '@backstage/plugin-search-common'; +import { SearchEngine } from '@backstage/plugin-search-backend-node'; import { ServiceRef } from '@backstage/backend-plugin-api'; -import { Writable } from 'stream'; - -// @public -export type QueryRequestOptions = - | { - token?: string; - } - | { - credentials: BackstageCredentials; - }; - -// @public -export type QueryTranslator = (query: SearchQuery) => unknown; - -// @public -export interface SearchEngine { - getIndexer(type: string): Promise; - query( - query: SearchQuery, - options?: QueryRequestOptions, - ): Promise; - setTranslator(translator: QueryTranslator): void; -} // @alpha export interface SearchEngineRegistryExtensionPoint { diff --git a/plugins/search-backend-node/src/alpha.ts b/plugins/search-backend-node/src/alpha.ts index a491e158b4..272bef7f84 100644 --- a/plugins/search-backend-node/src/alpha.ts +++ b/plugins/search-backend-node/src/alpha.ts @@ -30,14 +30,10 @@ import { RegisterDecoratorParameters, } from '@backstage/plugin-search-backend-node'; -import { SearchEngine } from './types'; -import { IndexBuilder } from './IndexBuilder'; - -export type { +import { SearchEngine, - QueryRequestOptions, - QueryTranslator, -} from './types'; + IndexBuilder, +} from '@backstage/plugin-search-backend-node'; /** * @alpha diff --git a/plugins/search-backend/api-report.md b/plugins/search-backend/api-report.md index f868ed43a3..4f99632f28 100644 --- a/plugins/search-backend/api-report.md +++ b/plugins/search-backend/api-report.md @@ -21,7 +21,7 @@ export function createRouter(options: RouterOptions): Promise; export type RouterOptions = { engine: SearchEngine; types: Record; - discovery: DiscoveryService; + discovery?: DiscoveryService; permissions: PermissionEvaluator | PermissionAuthorizer; config: Config; logger: Logger; diff --git a/plugins/search-backend/src/service/router.ts b/plugins/search-backend/src/service/router.ts index 9f811d5d06..ae470ba40e 100644 --- a/plugins/search-backend/src/service/router.ts +++ b/plugins/search-backend/src/service/router.ts @@ -18,6 +18,7 @@ import express from 'express'; import { Logger } from 'winston'; import { z } from 'zod'; import { + HostDiscovery, createLegacyAuthAdapters, errorHandler, } from '@backstage/backend-common'; @@ -64,7 +65,7 @@ const jsonObjectSchema: z.ZodSchema = z.lazy(() => { export type RouterOptions = { engine: SearchEngine; types: Record; - discovery: DiscoveryService; + discovery?: DiscoveryService; permissions: PermissionEvaluator | PermissionAuthorizer; config: Config; logger: Logger; @@ -83,9 +84,19 @@ export async function createRouter( options: RouterOptions, ): Promise { const router = await createOpenApiRouter(); - const { engine: inputEngine, types, permissions, config, logger } = options; + const { + engine: inputEngine, + types, + permissions, + config, + logger, + discovery = HostDiscovery.fromConfig(config), + } = options; - const { auth, httpAuth } = createLegacyAuthAdapters(options); + const { auth, httpAuth } = createLegacyAuthAdapters({ + ...options, + discovery, + }); const maxPageLimit = config.getOptionalNumber('search.maxPageLimit') ?? defaultMaxPageLimit;