8643 fix sentry error (#8644)

- fixes missing data in event payload when adding a new workspaceMember
- add strong typing to database event emitters
This commit is contained in:
martmull
2024-11-21 17:09:36 +01:00
committed by GitHub
parent 395da91071
commit 39373b4a28
61 changed files with 460 additions and 311 deletions

View File

@ -0,0 +1,2 @@
export const WORKFLOW_VERSION_STATUS_UPDATED =
'workflow_version_status_updated';

View File

@ -5,7 +5,7 @@ import { ObjectRecordDeleteEvent } from 'src/engine/core-modules/event-emitter/t
import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/workspace-event.type';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/types/workspace-event.type';
import {
WorkflowVersionStatus,
WorkflowVersionWorkspaceEntity,
@ -16,8 +16,10 @@ import {
WorkflowVersionEventType,
WorkflowVersionStatusUpdate,
} from 'src/modules/workflow/workflow-status/jobs/workflow-statuses-update.job';
import { OnDatabaseEvent } from 'src/engine/api/graphql/graphql-query-runner/decorators/on-database-event.decorator';
import { OnDatabaseBatchEvent } from 'src/engine/api/graphql/graphql-query-runner/decorators/on-database-batch-event.decorator';
import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action';
import { WORKFLOW_VERSION_STATUS_UPDATED } from 'src/modules/workflow/workflow-status/constants/workflow-version-status-updated.constants';
import { OnCustomBatchEvent } from 'src/engine/api/graphql/graphql-query-runner/decorators/on-custom-batch-event.decorator';
@Injectable()
export class WorkflowVersionStatusListener {
@ -26,13 +28,13 @@ export class WorkflowVersionStatusListener {
private readonly messageQueueService: MessageQueueService,
) {}
@OnDatabaseEvent('workflowVersion', DatabaseEventAction.CREATED)
@OnDatabaseBatchEvent('workflowVersion', DatabaseEventAction.CREATED)
async handleWorkflowVersionCreated(
payload: WorkspaceEventBatch<
batchEvent: WorkspaceEventBatch<
ObjectRecordCreateEvent<WorkflowVersionWorkspaceEntity>
>,
): Promise<void> {
const workflowIds = payload.events
const workflowIds = batchEvent.events
.filter(
(event) =>
!event.properties.after.status ||
@ -48,33 +50,33 @@ export class WorkflowVersionStatusListener {
WorkflowStatusesUpdateJob.name,
{
type: WorkflowVersionEventType.CREATE,
workspaceId: payload.workspaceId,
workspaceId: batchEvent.workspaceId,
workflowIds,
},
);
}
@OnDatabaseEvent('workflowVersion', DatabaseEventAction.UPDATED)
@OnCustomBatchEvent(WORKFLOW_VERSION_STATUS_UPDATED)
async handleWorkflowVersionUpdated(
payload: WorkspaceEventBatch<WorkflowVersionStatusUpdate>,
batchEvent: WorkspaceEventBatch<WorkflowVersionStatusUpdate>,
): Promise<void> {
await this.messageQueueService.add<WorkflowVersionBatchEvent>(
WorkflowStatusesUpdateJob.name,
{
type: WorkflowVersionEventType.STATUS_UPDATE,
workspaceId: payload.workspaceId,
statusUpdates: payload.events,
workspaceId: batchEvent.workspaceId,
statusUpdates: batchEvent.events,
},
);
}
@OnDatabaseEvent('workflowVersion', DatabaseEventAction.DELETED)
@OnDatabaseBatchEvent('workflowVersion', DatabaseEventAction.DELETED)
async handleWorkflowVersionDeleted(
payload: WorkspaceEventBatch<
batchEvent: WorkspaceEventBatch<
ObjectRecordDeleteEvent<WorkflowVersionWorkspaceEntity>
>,
): Promise<void> {
const workflowIds = payload.events
const workflowIds = batchEvent.events
.filter(
(event) =>
event.properties.before.status === WorkflowVersionStatus.DRAFT,
@ -89,7 +91,7 @@ export class WorkflowVersionStatusListener {
WorkflowStatusesUpdateJob.name,
{
type: WorkflowVersionEventType.DELETE,
workspaceId: payload.workspaceId,
workspaceId: batchEvent.workspaceId,
workflowIds,
},
);