feat: workspace:health nullable fix (#3882)

This commit is contained in:
Jérémy M
2024-02-08 18:22:29 +01:00
committed by GitHub
parent 2ba9a209e8
commit d3fe1b9e31
15 changed files with 265 additions and 131 deletions

View File

@ -0,0 +1,73 @@
import { Injectable } from '@nestjs/common';
import { WorkspaceSyncStorage } from 'src/workspace/workspace-sync-metadata/storage/workspace-sync.storage';
import { WorkspaceMigrationEntity } from 'src/metadata/workspace-migration/workspace-migration.entity';
import { CommandLogger } from 'src/commands/command-logger';
@Injectable()
export class SyncWorkspaceLoggerService {
private readonly commandLogger = new CommandLogger(
SyncWorkspaceLoggerService.name,
);
constructor() {}
async saveLogs(
storage: WorkspaceSyncStorage,
workspaceMigrations: WorkspaceMigrationEntity[],
) {
// Save workspace migrations
await this.commandLogger.writeLog(
'workspace-migrations',
workspaceMigrations,
);
// Save object metadata create collection
await this.commandLogger.writeLog(
'object-metadata-create-collection',
storage.objectMetadataCreateCollection,
);
// Save object metadata update collection
await this.commandLogger.writeLog(
'object-metadata-update-collection',
storage.objectMetadataUpdateCollection,
);
// Save object metadata delete collection
await this.commandLogger.writeLog(
'object-metadata-delete-collection',
storage.objectMetadataDeleteCollection,
);
// Save field metadata create collection
await this.commandLogger.writeLog(
'field-metadata-create-collection',
storage.fieldMetadataCreateCollection,
);
// Save field metadata update collection
await this.commandLogger.writeLog(
'field-metadata-update-collection',
storage.fieldMetadataUpdateCollection,
);
// Save field metadata delete collection
await this.commandLogger.writeLog(
'field-metadata-delete-collection',
storage.fieldMetadataDeleteCollection,
);
// Save relation metadata create collection
await this.commandLogger.writeLog(
'relation-metadata-create-collection',
storage.relationMetadataCreateCollection,
);
// Save relation metadata delete collection
await this.commandLogger.writeLog(
'relation-metadata-delete-collection',
storage.relationMetadataDeleteCollection,
);
}
}

View File

@ -3,6 +3,8 @@ import { Command, CommandRunner, Option } from 'nest-commander';
import { DataSourceService } from 'src/metadata/data-source/data-source.service';
import { WorkspaceSyncMetadataService } from 'src/workspace/workspace-sync-metadata/workspace-sync-metadata.service';
import { SyncWorkspaceLoggerService } from './services/sync-workspace-logger.service';
// TODO: implement dry-run
interface RunWorkspaceMigrationsOptions {
workspaceId: string;
@ -17,6 +19,7 @@ export class SyncWorkspaceMetadataCommand extends CommandRunner {
constructor(
private readonly workspaceSyncMetadataService: WorkspaceSyncMetadataService,
private readonly dataSourceService: DataSourceService,
private readonly syncWorkspaceLoggerService: SyncWorkspaceLoggerService,
) {
super();
}
@ -31,13 +34,21 @@ export class SyncWorkspaceMetadataCommand extends CommandRunner {
options.workspaceId,
);
await this.workspaceSyncMetadataService.syncStandardObjectsAndFieldsMetadata(
{
workspaceId: options.workspaceId,
dataSourceId: dataSourceMetadata.id,
},
{ dryRun: options.dryRun },
);
const { storage, workspaceMigrations } =
await this.workspaceSyncMetadataService.syncStandardObjectsAndFieldsMetadata(
{
workspaceId: options.workspaceId,
dataSourceId: dataSourceMetadata.id,
},
{ applyChanges: !options.dryRun },
);
if (options.dryRun) {
await this.syncWorkspaceLoggerService.saveLogs(
storage,
workspaceMigrations,
);
}
}
@Option({

View File

@ -5,8 +5,10 @@ import { WorkspaceSyncMetadataModule } from 'src/workspace/workspace-sync-metada
import { SyncWorkspaceMetadataCommand } from './sync-workspace-metadata.command';
import { SyncWorkspaceLoggerService } from './services/sync-workspace-logger.service';
@Module({
imports: [WorkspaceSyncMetadataModule, DataSourceModule],
providers: [SyncWorkspaceMetadataCommand],
providers: [SyncWorkspaceMetadataCommand, SyncWorkspaceLoggerService],
})
export class WorkspaceSyncMetadataCommandsModule {}