Add backfill position job by workspace (#5725)

- Removing existing listener that was backfilling created records
without position
- Switch to a job that backfill all objects within workspace
- Adapting `FIND_BY_POSITION` so it can fetch objects without position.
Currently we needed to input a number
This commit is contained in:
Thomas Trompette
2024-06-04 14:10:58 +02:00
committed by GitHub
parent b1f12d7257
commit 25f4e44aec
9 changed files with 307 additions and 104 deletions

View File

@ -0,0 +1,57 @@
import { Inject } from '@nestjs/common';
import { Command, CommandRunner, Option } from 'nest-commander';
import {
RecordPositionBackfillJob,
RecordPositionBackfillJobData,
} from 'src/engine/api/graphql/workspace-query-runner/jobs/record-position-backfill.job';
import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants';
import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service';
export type RecordPositionBackfillCommandOptions = {
workspaceId: string;
dryRun?: boolean;
};
@Command({
name: 'migrate-0.20:backfill-record-position',
description: 'Backfill record position',
})
export class RecordPositionBackfillCommand extends CommandRunner {
constructor(
@Inject(MessageQueue.recordPositionBackfillQueue)
private readonly messageQueueService: MessageQueueService,
) {
super();
}
@Option({
flags: '-w, --workspace-id [workspace_id]',
description: 'workspace id',
required: true,
})
parseWorkspaceId(value: string): string {
return value;
}
@Option({
flags: '-d, --dry-run [dry run]',
description: 'Dry run: Log backfill actions.',
required: false,
})
dryRun(value: string): boolean {
return Boolean(value);
}
async run(
_passedParam: string[],
options: RecordPositionBackfillCommandOptions,
): Promise<void> {
this.messageQueueService.add<RecordPositionBackfillJobData>(
RecordPositionBackfillJob.name,
{ workspaceId: options.workspaceId, dryRun: options.dryRun ?? false },
{ retryLimit: 3 },
);
}
}