diff --git a/packages/backend-common/src/database/connection.ts b/packages/backend-common/src/database/connection.ts index 2f6d204839..2c2bba28ec 100644 --- a/packages/backend-common/src/database/connection.ts +++ b/packages/backend-common/src/database/connection.ts @@ -18,7 +18,7 @@ import { Config, JsonObject } from '@backstage/config'; import { InputError } from '@backstage/errors'; import knexFactory, { Knex } from 'knex'; import { mergeDatabaseConfig } from './config'; -import { DatabaseConnector } from './connector'; +import { DatabaseConnector } from './types'; import { mysqlConnector } from './mysql'; import { pgConnector } from './postgres'; diff --git a/packages/backend-common/src/database/connector.ts b/packages/backend-common/src/database/connector.ts deleted file mode 100644 index 0336510f19..0000000000 --- a/packages/backend-common/src/database/connector.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2021 Spotify AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Config } from '@backstage/config'; -import { Knex } from 'knex'; - -export interface DatabaseConnector { - createClient(dbConfig: Config, overrides?: Partial): Knex; - createNameOverride(name: string): Partial; - parseConnectionString( - connectionString: string, - client?: string, - ): Knex.StaticConnectionConfig; - ensureDatabaseExists?( - dbConfig: Config, - ...databases: Array - ): Promise; -} diff --git a/packages/backend-common/src/database/mysql.ts b/packages/backend-common/src/database/mysql.ts index beff5d9f82..0769ad64fc 100644 --- a/packages/backend-common/src/database/mysql.ts +++ b/packages/backend-common/src/database/mysql.ts @@ -18,7 +18,7 @@ import { Config } from '@backstage/config'; import { InputError } from '@backstage/errors'; import knexFactory, { Knex } from 'knex'; import { mergeDatabaseConfig } from './config'; -import { DatabaseConnector } from './connector'; +import { DatabaseConnector } from './types'; import yn from 'yn'; /** diff --git a/packages/backend-common/src/database/postgres.ts b/packages/backend-common/src/database/postgres.ts index 000b84460c..5662028113 100644 --- a/packages/backend-common/src/database/postgres.ts +++ b/packages/backend-common/src/database/postgres.ts @@ -17,7 +17,7 @@ import knexFactory, { Knex } from 'knex'; import { Config } from '@backstage/config'; import { mergeDatabaseConfig } from './config'; -import { DatabaseConnector } from './connector'; +import { DatabaseConnector } from './types'; /** * Creates a knex postgres database connection diff --git a/packages/backend-common/src/database/sqlite3.ts b/packages/backend-common/src/database/sqlite3.ts index 83f5f60699..2499415bef 100644 --- a/packages/backend-common/src/database/sqlite3.ts +++ b/packages/backend-common/src/database/sqlite3.ts @@ -19,7 +19,7 @@ import { ensureDirSync } from 'fs-extra'; import knexFactory, { Knex } from 'knex'; import path from 'path'; import { mergeDatabaseConfig } from './config'; -import { DatabaseConnector } from './connector'; +import { DatabaseConnector } from './types'; /** * Creates a knex sqlite3 database connection diff --git a/packages/backend-common/src/database/types.ts b/packages/backend-common/src/database/types.ts index bf3ceb2786..995f98f27d 100644 --- a/packages/backend-common/src/database/types.ts +++ b/packages/backend-common/src/database/types.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import { Config } from '@backstage/config'; import { Knex } from 'knex'; /** @@ -28,3 +29,37 @@ export interface PluginDatabaseManager { */ getClient(): Promise; } + +/** + * DatabaseConnector manages an underlying Knex database driver. + */ +export interface DatabaseConnector { + /** + * createClient provides an instance of a knex database connector. + */ + createClient(dbConfig: Config, overrides?: Partial): Knex; + /** + * createNameOverride provides a partial knex config sufficient to override a + * database name. + */ + createNameOverride(name: string): Partial; + /** + * parseConnectionString produces a knex connection config object representing + * a database connection string. + */ + parseConnectionString( + connectionString: string, + client?: string, + ): Knex.StaticConnectionConfig; + /** + * ensureDatabaseExists performs a side-effect to ensure database names passed in are + * present. + * + * Calling this function on databases which already exist should do nothing. + * Missing databases should be created if needed. + */ + ensureDatabaseExists?( + dbConfig: Config, + ...databases: Array + ): Promise; +}