Feat/workspace health core fix (#3863)
* feat: add deletion support on sync metadata command * fix: remove debug * feat: wip workspace health command add --fix option fix: remove test * feat: core of --fix option for workspace-health
This commit is contained in:
@ -5,6 +5,7 @@ import { EntityManager } from 'typeorm';
|
||||
import { WorkspaceSyncContext } from 'src/workspace/workspace-sync-metadata/interfaces/workspace-sync-context.interface';
|
||||
import { ComparatorAction } from 'src/workspace/workspace-sync-metadata/interfaces/comparator.interface';
|
||||
import { FeatureFlagMap } from 'src/core/feature-flag/interfaces/feature-flag-map.interface';
|
||||
import { WorkspaceMigrationBuilderAction } from 'src/workspace/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface';
|
||||
|
||||
import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity';
|
||||
import { mapObjectMetadataByUniqueIdentifier } from 'src/workspace/workspace-sync-metadata/utils/sync-metadata.util';
|
||||
@ -14,8 +15,8 @@ import { WorkspaceObjectComparator } from 'src/workspace/workspace-sync-metadata
|
||||
import { WorkspaceFieldComparator } from 'src/workspace/workspace-sync-metadata/comparators/workspace-field.comparator';
|
||||
import { WorkspaceMetadataUpdaterService } from 'src/workspace/workspace-sync-metadata/services/workspace-metadata-updater.service';
|
||||
import { WorkspaceSyncStorage } from 'src/workspace/workspace-sync-metadata/storage/workspace-sync.storage';
|
||||
import { ObjectWorkspaceMigrationFactory } from 'src/workspace/workspace-sync-metadata/factories/object-workspace-migration.factory';
|
||||
import { FieldWorkspaceMigrationFactory } from 'src/workspace/workspace-sync-metadata/factories/field-workspace-migration.factory';
|
||||
import { WorkspaceMigrationObjectFactory } from 'src/workspace/workspace-migration-builder/factories/workspace-migration-object.factory';
|
||||
import { WorkspaceMigrationFieldFactory } from 'src/workspace/workspace-migration-builder/factories/workspace-migration-field.factory';
|
||||
|
||||
@Injectable()
|
||||
export class WorkspaceSyncObjectMetadataService {
|
||||
@ -26,8 +27,8 @@ export class WorkspaceSyncObjectMetadataService {
|
||||
private readonly workspaceObjectComparator: WorkspaceObjectComparator,
|
||||
private readonly workspaceFieldComparator: WorkspaceFieldComparator,
|
||||
private readonly workspaceMetadataUpdaterService: WorkspaceMetadataUpdaterService,
|
||||
private readonly objectWorkspaceMigrationFactory: ObjectWorkspaceMigrationFactory,
|
||||
private readonly fieldWorkspaceMigrationFactory: FieldWorkspaceMigrationFactory,
|
||||
private readonly workspaceMigrationObjectFactory: WorkspaceMigrationObjectFactory,
|
||||
private readonly workspaceMigrationFieldFactory: WorkspaceMigrationFieldFactory,
|
||||
) {}
|
||||
|
||||
async synchronize(
|
||||
@ -140,21 +141,39 @@ export class WorkspaceSyncObjectMetadataService {
|
||||
this.logger.log('Generating migrations');
|
||||
|
||||
// Create migrations
|
||||
const objectWorkspaceMigrations =
|
||||
await this.objectWorkspaceMigrationFactory.create(
|
||||
const createObjectWorkspaceMigrations =
|
||||
await this.workspaceMigrationObjectFactory.create(
|
||||
metadataObjectUpdaterResult.createdObjectMetadataCollection,
|
||||
storage.objectMetadataDeleteCollection,
|
||||
WorkspaceMigrationBuilderAction.CREATE,
|
||||
);
|
||||
|
||||
const fieldWorkspaceMigrations =
|
||||
await this.fieldWorkspaceMigrationFactory.create(
|
||||
const deleteObjectWorkspaceMigrations =
|
||||
await this.workspaceMigrationObjectFactory.create(
|
||||
storage.objectMetadataDeleteCollection,
|
||||
WorkspaceMigrationBuilderAction.DELETE,
|
||||
);
|
||||
|
||||
const createFieldWorkspaceMigrations =
|
||||
await this.workspaceMigrationFieldFactory.create(
|
||||
originalObjectMetadataCollection,
|
||||
metadataFieldUpdaterResult.createdFieldMetadataCollection,
|
||||
WorkspaceMigrationBuilderAction.CREATE,
|
||||
);
|
||||
|
||||
const deleteFieldWorkspaceMigrations =
|
||||
await this.workspaceMigrationFieldFactory.create(
|
||||
originalObjectMetadataCollection,
|
||||
storage.fieldMetadataDeleteCollection,
|
||||
WorkspaceMigrationBuilderAction.DELETE,
|
||||
);
|
||||
|
||||
this.logger.log('Saving migrations');
|
||||
|
||||
return [...objectWorkspaceMigrations, ...fieldWorkspaceMigrations];
|
||||
return [
|
||||
...createObjectWorkspaceMigrations,
|
||||
...deleteObjectWorkspaceMigrations,
|
||||
...createFieldWorkspaceMigrations,
|
||||
...deleteFieldWorkspaceMigrations,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import { EntityManager } from 'typeorm';
|
||||
import { WorkspaceSyncContext } from 'src/workspace/workspace-sync-metadata/interfaces/workspace-sync-context.interface';
|
||||
import { FeatureFlagMap } from 'src/core/feature-flag/interfaces/feature-flag-map.interface';
|
||||
import { ComparatorAction } from 'src/workspace/workspace-sync-metadata/interfaces/comparator.interface';
|
||||
import { WorkspaceMigrationBuilderAction } from 'src/workspace/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface';
|
||||
|
||||
import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity';
|
||||
import { RelationMetadataEntity } from 'src/metadata/relation-metadata/relation-metadata.entity';
|
||||
@ -14,7 +15,7 @@ import { WorkspaceRelationComparator } from 'src/workspace/workspace-sync-metada
|
||||
import { WorkspaceMetadataUpdaterService } from 'src/workspace/workspace-sync-metadata/services/workspace-metadata-updater.service';
|
||||
import { WorkspaceMigrationEntity } from 'src/metadata/workspace-migration/workspace-migration.entity';
|
||||
import { WorkspaceSyncStorage } from 'src/workspace/workspace-sync-metadata/storage/workspace-sync.storage';
|
||||
import { RelationWorkspaceMigrationFactory } from 'src/workspace/workspace-sync-metadata/factories/relation-workspace-migration.factory';
|
||||
import { WorkspaceMigrationRelationFactory } from 'src/workspace/workspace-migration-builder/factories/workspace-migration-relation.factory';
|
||||
|
||||
@Injectable()
|
||||
export class WorkspaceSyncRelationMetadataService {
|
||||
@ -26,7 +27,7 @@ export class WorkspaceSyncRelationMetadataService {
|
||||
private readonly standardRelationFactory: StandardRelationFactory,
|
||||
private readonly workspaceRelationComparator: WorkspaceRelationComparator,
|
||||
private readonly workspaceMetadataUpdaterService: WorkspaceMetadataUpdaterService,
|
||||
private readonly relationWorkspaceMigrationFactory: RelationWorkspaceMigrationFactory,
|
||||
private readonly workspaceMigrationRelationFactory: WorkspaceMigrationRelationFactory,
|
||||
) {}
|
||||
|
||||
async synchronize(
|
||||
@ -95,12 +96,13 @@ export class WorkspaceSyncRelationMetadataService {
|
||||
);
|
||||
|
||||
// Create migrations
|
||||
const workspaceRelationMigrations =
|
||||
await this.relationWorkspaceMigrationFactory.create(
|
||||
const createRelationWorkspaceMigrations =
|
||||
await this.workspaceMigrationRelationFactory.create(
|
||||
originalObjectMetadataCollection,
|
||||
metadataRelationUpdaterResult.createdRelationMetadataCollection,
|
||||
WorkspaceMigrationBuilderAction.CREATE,
|
||||
);
|
||||
|
||||
return workspaceRelationMigrations;
|
||||
return createRelationWorkspaceMigrations;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user