add migration to remove the old tables, and some cleanup

Signed-off-by: Fredrik Adelöw <freben@gmail.com>
This commit is contained in:
Fredrik Adelöw
2022-01-16 14:54:05 +01:00
parent 200c31c100
commit 9f2a8dc423
6 changed files with 98 additions and 9 deletions
+56
View File
@@ -0,0 +1,56 @@
---
'@backstage/plugin-catalog-backend': minor
---
**BREAKING CHANGE**: Removed all remnants of the old catalog engine
implementation.
The old implementation has been deprecated for over half a year. To ensure that
you are not using the old implementation, check that your
`packages/backend/src/plugins/catalog.ts` creates the catalog builder using
`CatalogBuilder.create`. If you instead call `new CatalogBuilder`, you are on
the old implementation and will experience breakage if you upgrade to this
version. If you are still on the old version, see [the relevant change log
entry](https://github.com/backstage/backstage/blob/master/plugins/catalog-backend/CHANGELOG.md#patch-changes-27)
for migration instructions.
The following classes and interfaces have been removed:
- The `CatalogBuilder` constructor (see above; use `CatalogBuilder.create`
instead)
- `AddLocationResult`
- `CommonDatabase`
- `CreateDatabaseOptions`
- `createNextRouter` (use `createRouter` instead - or preferably, use the
`router` field returned for you by `catalogBuilder.build()`)
- `Database`
- `DatabaseEntitiesCatalog` (use `EntitiesCatalog` instead)
- `DatabaseLocationsCatalog` (use `LocationService` instead)
- `DatabaseLocationUpdateLogEvent`
- `DatabaseLocationUpdateLogStatus`
- `DatabaseManager`
- `DbEntitiesRequest`
- `DbEntitiesResponse`
- `DbEntityRequest`
- `DbEntityResponse`
- `DbLocationsRow`
- `DbLocationsRowWithStatus`
- `DbPageInfo`
- `HigherOrderOperation`
- `HigherOrderOperations`
- `LocationReader`
- `LocationReaders`
- `LocationResponse`
- `LocationsCatalog`
- `LocationUpdateLogEvent`
- `LocationUpdateStatus`
- `NextCatalogBuilder` (use `CatalogBuilder.create` instead)
- `NextRouterOptions` (use `RouterOptions` instead)
- `ReadLocationEntity`
- `ReadLocationError`
- `ReadLocationResult`
- `Transaction`
The `RouterOptions` interface has been un-deprecated, and has instead found use
for passing into `createRouter`. Its shape has been significantly changed to
accommodate the new router.
+2 -7
View File
@@ -238,7 +238,6 @@ export class BuiltinKindsEntityProcessor implements CatalogProcessor {
// @public
export class CatalogBuilder {
constructor(env: CatalogEnvironment);
addEntityPolicy(...policies: EntityPolicy[]): CatalogBuilder;
addEntityProvider(...providers: EntityProvider[]): CatalogBuilder;
addPermissionRules(
@@ -463,9 +462,7 @@ export function createRandomRefreshInterval(options: {
maxSeconds: number;
}): RefreshIntervalFunction;
// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
// @public
export function createRouter(options: RouterOptions): Promise<express.Router>;
// Warning: (ae-missing-release-tag) "DefaultCatalogCollator" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
@@ -1080,9 +1077,7 @@ declare namespace results {
}
export { results };
// Warning: (ae-missing-release-tag) "RouterOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
// @public
export interface RouterOptions {
// (undocumented)
config: Config;
@@ -0,0 +1,28 @@
/*
* Copyright 2021 The Backstage Authors
*
* 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.
*/
// @ts-check
/**
* @param {import('knex').Knex} knex
*/
exports.up = async function up(knex) {
await knex.schema.dropTable('entities_relations');
await knex.schema.dropTable('entities_search');
await knex.schema.dropTable('entities');
};
exports.down = async function down() {};
@@ -154,7 +154,7 @@ export class CatalogBuilder {
return new CatalogBuilder(env);
}
constructor(env: CatalogEnvironment) {
private constructor(env: CatalogEnvironment) {
this.env = env;
this.entityPolicies = [];
this.entityPoliciesReplace = false;
@@ -37,6 +37,11 @@ import {
import { disallowReadonlyMode, validateRequestBody } from './util';
import { RefreshOptions, LocationService, RefreshService } from './types';
/**
* Options used by {@link createRouter}.
*
* @public
*/
export interface RouterOptions {
entitiesCatalog?: EntitiesCatalog;
locationAnalyzer?: LocationAnalyzer;
@@ -47,6 +52,11 @@ export interface RouterOptions {
permissionIntegrationRouter?: express.Router;
}
/**
* Creates a catalog router.
*
* @public
*/
export async function createRouter(
options: RouterOptions,
): Promise<express.Router> {
@@ -62,7 +62,7 @@ export async function startStandaloneServer(
logger.debug('Creating application...');
await applyDatabaseMigrations(await database.getClient());
const builder = new CatalogBuilder({
const builder = CatalogBuilder.create({
logger,
database,
config,