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[],
): Promise<void> {
for (const workspaceId of workspaceIds) {
await this.recordPositionBackfillService.backfill(
workspaceId,
options.dryRun ?? false,
);
try {
await this.recordPositionBackfillService.backfill(
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[],
): Promise<void> {
for (const workspaceId of workspaceIds) {
const viewRepository =
await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewWorkspaceEntity>(
workspaceId,
'view',
);
try {
const viewRepository =
await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewWorkspaceEntity>(
workspaceId,
'view',
);
const viewGroupRepository =
await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewGroupWorkspaceEntity>(
workspaceId,
'viewGroup',
);
const viewGroupRepository =
await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewGroupWorkspaceEntity>(
workspaceId,
'viewGroup',
);
const views = await viewRepository.find({
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 },
const views = await viewRepository.find({
relations: ['viewGroups'],
});
if (!fieldMetadata) {
continue;
}
for (const view of views) {
if (view.viewGroups.length === 0) {
continue;
}
await this.fieldMetadataRelatedRecordsService.syncNoValueViewGroup(
fieldMetadata,
view,
viewGroupRepository,
// 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) {
continue;
}
await this.fieldMetadataRelatedRecordsService.syncNoValueViewGroup(
fieldMetadata,
view,
viewGroupRepository,
);
}
} catch (error) {
this.logger.error(
`Error backfilling view group no value for workspace ${workspaceId}: ${error}`,
);
}
}