Respect PG selection in create-app for search.

Signed-off-by: Eric Peterson <ericpeterson@spotify.com>
This commit is contained in:
Eric Peterson
2022-03-04 11:27:43 +01:00
parent 0e39d0b4fe
commit c543fe3ff2
6 changed files with 32 additions and 3 deletions
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/create-app': patch
---
Postgres-based search is now installed when PG is chosen as the desired database for Backstage.
There is no need to make this change in an existing Backstage backend. See [supported search engines](https://backstage.io/docs/features/search/search-engines) for details about production-ready search engines.
+1
View File
@@ -86,6 +86,7 @@
"@backstage/plugin-scaffolder-backend": "",
"@backstage/plugin-search": "",
"@backstage/plugin-search-backend": "",
"@backstage/plugin-search-backend-module-pg": "",
"@backstage/plugin-search-backend-node": "",
"@backstage/plugin-tech-radar": "",
"@backstage/plugin-techdocs": "",
+2
View File
@@ -68,6 +68,7 @@ import { version as pluginScaffolder } from '../../../../plugins/scaffolder/pack
import { version as pluginScaffolderBackend } from '../../../../plugins/scaffolder-backend/package.json';
import { version as pluginSearch } from '../../../../plugins/search/package.json';
import { version as pluginSearchBackend } from '../../../../plugins/search-backend/package.json';
import { version as pluginSearchBackendModulePg } from '../../../../plugins/search-backend-module-pg/package.json';
import { version as pluginSearchBackendNode } from '../../../../plugins/search-backend-node/package.json';
import { version as pluginTechRadar } from '../../../../plugins/tech-radar/package.json';
import { version as pluginTechdocs } from '../../../../plugins/techdocs/package.json';
@@ -110,6 +111,7 @@ export const packageVersions = {
'@backstage/plugin-scaffolder-backend': pluginScaffolderBackend,
'@backstage/plugin-search': pluginSearch,
'@backstage/plugin-search-backend': pluginSearchBackend,
'@backstage/plugin-search-backend-module-pg': pluginSearchBackendModulePg,
'@backstage/plugin-search-backend-node': pluginSearchBackendNode,
'@backstage/plugin-tech-radar': pluginTechRadar,
'@backstage/plugin-techdocs': pluginTechdocs,
@@ -28,6 +28,9 @@
"@backstage/plugin-proxy-backend": "^{{version '@backstage/plugin-proxy-backend'}}",
"@backstage/plugin-scaffolder-backend": "^{{version '@backstage/plugin-scaffolder-backend'}}",
"@backstage/plugin-search-backend": "^{{version '@backstage/plugin-search-backend'}}",
{{#if dbTypePG}}
"@backstage/plugin-search-backend-module-pg": "^{{version '@backstage/plugin-search-backend-module-pg'}}",
{{/if}}
"@backstage/plugin-search-backend-node": "^{{version '@backstage/plugin-search-backend-node'}}",
"@backstage/plugin-techdocs-backend": "^{{version '@backstage/plugin-techdocs-backend'}}",
"@gitbeaker/node": "^34.6.0",
@@ -4,6 +4,9 @@ import {
IndexBuilder,
LunrSearchEngine,
} from '@backstage/plugin-search-backend-node';
{{#if dbTypePG}}
import { PgSearchEngine } from '@backstage/plugin-search-backend-module-pg';
{{/if}}
import { PluginEnvironment } from '../types';
import { DefaultCatalogCollatorFactory } from '@backstage/plugin-catalog-backend';
import { DefaultTechDocsCollatorFactory } from '@backstage/plugin-techdocs-backend';
@@ -16,7 +19,14 @@ export default async function createPlugin({
tokenManager,
}: PluginEnvironment) {
// Initialize a connection to a search engine.
{{#if dbTypeSqlite}}
const searchEngine = new LunrSearchEngine({ logger });
{{/if}}
{{#if dbTypePG}}
const searchEngine = (await PgSearchEngine.supported(database))
? await PgSearchEngine.from({ database })
: new LunrSearchEngine({ logger });
{{/if}}
const indexBuilder = new IndexBuilder({ logger, searchEngine });
// Collators are responsible for gathering documents known to plugins. This
+9 -3
View File
@@ -420,9 +420,15 @@ async function testBackendStart(appDir: string, isPostgres: boolean) {
if (isPostgres) {
print('Dropping old DBs');
await Promise.all(
['catalog', 'scaffolder', 'auth', 'identity', 'proxy', 'techdocs'].map(
name => dropDB(`backstage_plugin_${name}`),
),
[
'catalog',
'scaffolder',
'auth',
'identity',
'proxy',
'techdocs',
'search',
].map(name => dropDB(`backstage_plugin_${name}`)),
);
print('Created DBs');
}