From 1e28c4336632edf6814e66ee5bb05406c0e8e560 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 20 Jun 2022 16:24:15 +0200 Subject: [PATCH] check error, if MissingIndexError return status code 400 with clear error message Signed-off-by: Emma Indal --- plugins/search-backend/src/service/router.ts | 24 ++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/plugins/search-backend/src/service/router.ts b/plugins/search-backend/src/service/router.ts index f54c2d388f..c85b3ed797 100644 --- a/plugins/search-backend/src/service/router.ts +++ b/plugins/search-backend/src/service/router.ts @@ -33,7 +33,10 @@ import { IndexableResultSet, SearchResultSet, } from '@backstage/plugin-search-common'; -import { SearchEngine } from '@backstage/plugin-search-backend-node'; +import { + SearchEngine, + MissingIndexError, +} from '@backstage/plugin-search-backend-node'; import { AuthorizedSearchEngine } from './AuthorizedSearchEngine'; const jsonObjectSchema: z.ZodSchema = z.lazy(() => { @@ -129,7 +132,10 @@ export async function createRouter( const router = Router(); router.get( '/query', - async (req: express.Request, res: express.Response) => { + async ( + req: express.Request, + res: express.Response, + ) => { const parseResult = requestSchema.safeParse(req.query); if (!parseResult.success) { @@ -154,9 +160,19 @@ export async function createRouter( const resultSet = await engine?.query(query, { token }); res.send(filterResultSet(toSearchResults(resultSet))); - } catch (err) { + } catch (error) { + if (error instanceof MissingIndexError) { + res + .status(400) + .send( + `\nNo index found for types: ${ + query.types ? query.types.join(',') : '' + }. This means there are no documents to search through.`, + ); + } + throw new Error( - `There was a problem performing the search query. ${err}`, + `There was a problem performing the search query. ${error}`, ); } },