Catch workspace issues in backfill upgrade commands

This commit is contained in:
Weiko
2024-12-20 12:11:05 +01:00
parent 2e216e7a73
commit 52362812a5
2 changed files with 52 additions and 40 deletions

View File

@ -27,10 +27,16 @@ export class RecordPositionBackfillCommand extends ActiveWorkspacesCommandRunner
workspaceIds: string[], workspaceIds: string[],
): Promise<void> { ): Promise<void> {
for (const workspaceId of workspaceIds) { for (const workspaceId of workspaceIds) {
await this.recordPositionBackfillService.backfill( try {
workspaceId, await this.recordPositionBackfillService.backfill(
options.dryRun ?? false, workspaceId,
); options.dryRun ?? false,
);
} catch (error) {
this.logger.error(
`Error backfilling record position for workspace ${workspaceId}: ${error}`,
);
}
} }
} }
} }

View File

@ -34,47 +34,53 @@ export class ViewGroupNoValueBackfillCommand extends ActiveWorkspacesCommandRunn
workspaceIds: string[], workspaceIds: string[],
): Promise<void> { ): Promise<void> {
for (const workspaceId of workspaceIds) { for (const workspaceId of workspaceIds) {
const viewRepository = try {
await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewWorkspaceEntity>( const viewRepository =
workspaceId, await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewWorkspaceEntity>(
'view', workspaceId,
); 'view',
);
const viewGroupRepository = const viewGroupRepository =
await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewGroupWorkspaceEntity>( await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewGroupWorkspaceEntity>(
workspaceId, workspaceId,
'viewGroup', 'viewGroup',
); );
const views = await viewRepository.find({ const views = await viewRepository.find({
relations: ['viewGroups'], relations: ['viewGroups'],
});
for (const view of views) {
if (view.viewGroups.length === 0) {
continue;
}
// We're assuming for now that all viewGroups belonging to the same view have the same fieldMetadataId
const viewGroup = view.viewGroups?.[0];
const fieldMetadataId = viewGroup?.fieldMetadataId;
if (!fieldMetadataId || !viewGroup) {
continue;
}
const fieldMetadata = await this.fieldMetadataRepository.findOne({
where: { id: viewGroup.fieldMetadataId },
}); });
if (!fieldMetadata) { for (const view of views) {
continue; if (view.viewGroups.length === 0) {
} continue;
}
await this.fieldMetadataRelatedRecordsService.syncNoValueViewGroup( // We're assuming for now that all viewGroups belonging to the same view have the same fieldMetadataId
fieldMetadata, const viewGroup = view.viewGroups?.[0];
view, const fieldMetadataId = viewGroup?.fieldMetadataId;
viewGroupRepository,
if (!fieldMetadataId || !viewGroup) {
continue;
}
const fieldMetadata = await this.fieldMetadataRepository.findOne({
where: { id: viewGroup.fieldMetadataId },
});
if (!fieldMetadata) {
continue;
}
await this.fieldMetadataRelatedRecordsService.syncNoValueViewGroup(
fieldMetadata,
view,
viewGroupRepository,
);
}
} catch (error) {
this.logger.error(
`Error backfilling view group no value for workspace ${workspaceId}: ${error}`,
); );
} }
} }