fix(code-coverage-backend): Allow it to skip migrations
Signed-off-by: Daniel Dias Branco Arthaud <arthaud@gmail.com>
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import { Knex as KnexType } from 'knex';
|
||||
import { DatabaseManager } from '@backstage/backend-common';
|
||||
import { stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
@@ -95,12 +96,24 @@ const coverage: Array<JsonCodeCoverage> = [
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
function createDatabaseManager(
|
||||
client: KnexType,
|
||||
skipMigrations: boolean = false,
|
||||
) {
|
||||
return {
|
||||
getClient: async () => client,
|
||||
migrations: {
|
||||
skip: skipMigrations,
|
||||
},
|
||||
};
|
||||
}
|
||||
let database: CodeCoverageStore;
|
||||
describe('CodeCoverageDatabase', () => {
|
||||
beforeAll(async () => {
|
||||
const client = await db.getClient();
|
||||
database = await CodeCoverageDatabase.create(client);
|
||||
const databaseManager = createDatabaseManager(client);
|
||||
database = await CodeCoverageDatabase.create(databaseManager);
|
||||
|
||||
await database.insertCodeCoverage(coverage[0]);
|
||||
await database.insertCodeCoverage(coverage[1]);
|
||||
});
|
||||
|
||||
@@ -13,7 +13,10 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import { resolvePackagePath } from '@backstage/backend-common';
|
||||
import {
|
||||
PluginDatabaseManager,
|
||||
resolvePackagePath,
|
||||
} from '@backstage/backend-common';
|
||||
import { NotFoundError } from '@backstage/errors';
|
||||
import { parseEntityRef, stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import { Knex } from 'knex';
|
||||
@@ -41,10 +44,17 @@ const migrationsDir = resolvePackagePath(
|
||||
);
|
||||
|
||||
export class CodeCoverageDatabase implements CodeCoverageStore {
|
||||
static async create(knex: Knex): Promise<CodeCoverageStore> {
|
||||
await knex.migrate.latest({
|
||||
directory: migrationsDir,
|
||||
});
|
||||
static async create(
|
||||
database: PluginDatabaseManager,
|
||||
): Promise<CodeCoverageStore> {
|
||||
const knex = await database.getClient();
|
||||
|
||||
if (!database.migrations?.skip) {
|
||||
await knex.migrate.latest({
|
||||
directory: migrationsDir,
|
||||
});
|
||||
}
|
||||
|
||||
return new CodeCoverageDatabase(knex);
|
||||
}
|
||||
|
||||
|
||||
@@ -57,9 +57,7 @@ export const makeRouter = async (
|
||||
): Promise<express.Router> => {
|
||||
const { config, logger, discovery, database, urlReader } = options;
|
||||
|
||||
const codeCoverageDatabase = await CodeCoverageDatabase.create(
|
||||
await database.getClient(),
|
||||
);
|
||||
const codeCoverageDatabase = await CodeCoverageDatabase.create(database);
|
||||
const codecovUrl = await discovery.getExternalBaseUrl('code-coverage');
|
||||
const catalogApi: CatalogApi = new CatalogClient({ discoveryApi: discovery });
|
||||
const scm = ScmIntegrations.fromConfig(config);
|
||||
|
||||
Reference in New Issue
Block a user