From 86e1fbde1d73d1c10fac5271c42a8b9097ca01e1 Mon Sep 17 00:00:00 2001 From: Marcus Eide Date: Wed, 1 Dec 2021 14:17:49 +0100 Subject: [PATCH] Add runMigrations argument to DatabaseManager Signed-off-by: Marcus Eide --- .../backend-common/src/database/DatabaseManager.ts | 12 +++++++++++- packages/backend-common/src/database/types.ts | 8 ++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/backend-common/src/database/DatabaseManager.ts b/packages/backend-common/src/database/DatabaseManager.ts index cf5e801d66..495dcfd303 100644 --- a/packages/backend-common/src/database/DatabaseManager.ts +++ b/packages/backend-common/src/database/DatabaseManager.ts @@ -47,19 +47,25 @@ export class DatabaseManager { * names if config is not provided. * * @param config - The loaded application configuration. + * @param runMigrations - Controls whether or not to perform database migrations. */ - static fromConfig(config: Config): DatabaseManager { + static fromConfig( + config: Config, + runMigrations?: boolean | (() => boolean), + ): DatabaseManager { const databaseConfig = config.getConfig('backend.database'); return new DatabaseManager( databaseConfig, databaseConfig.getOptionalString('prefix'), + runMigrations, ); } private constructor( private readonly config: Config, private readonly prefix: string = 'backstage_plugin_', + private readonly runMigrations: boolean | (() => boolean) = true, ) {} /** @@ -76,6 +82,10 @@ export class DatabaseManager { getClient(): Promise { return _this.getDatabase(pluginId); }, + runMigrations: + typeof _this.runMigrations === 'function' + ? _this.runMigrations() + : _this.runMigrations, }; } diff --git a/packages/backend-common/src/database/types.ts b/packages/backend-common/src/database/types.ts index e96f86980b..3dad57ff62 100644 --- a/packages/backend-common/src/database/types.ts +++ b/packages/backend-common/src/database/types.ts @@ -30,6 +30,14 @@ export interface PluginDatabaseManager { * stores so that plugins are discouraged from database integration. */ getClient(): Promise; + + /** + * runMigrations can be used to determine if database migrations + * should be performed. + * + * Useful if connecting to a read-only database. + */ + runMigrations: boolean; } /**