Add event when creating draft from previous version (#9910)
We create draft without emitting creation event. So workflow statuses are not properly updated This service needs a refacto. Will do it once we get out from fast follows rush
This commit is contained in:
@ -4,11 +4,13 @@ import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action';
|
||||
import { BASE_TYPESCRIPT_PROJECT_INPUT_SCHEMA } from 'src/engine/core-modules/serverless/drivers/constants/base-typescript-project-input-schema';
|
||||
import { WorkflowActionDTO } from 'src/engine/core-modules/workflow/dtos/workflow-step.dto';
|
||||
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
||||
import { ServerlessFunctionService } from 'src/engine/metadata-modules/serverless-function/serverless-function.service';
|
||||
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
|
||||
import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter';
|
||||
import {
|
||||
WorkflowVersionStepException,
|
||||
WorkflowVersionStepExceptionCode,
|
||||
@ -51,6 +53,7 @@ export class WorkflowVersionStepWorkspaceService {
|
||||
private readonly serverlessFunctionService: ServerlessFunctionService,
|
||||
@InjectRepository(ObjectMetadataEntity, 'metadata')
|
||||
private readonly objectMetadataRepository: Repository<ObjectMetadataEntity>,
|
||||
private readonly workspaceEventEmitter: WorkspaceEventEmitter,
|
||||
) {}
|
||||
|
||||
private async getStepDefaultDefinition({
|
||||
@ -459,6 +462,11 @@ export class WorkflowVersionStepWorkspaceService {
|
||||
name: `v${workflowVersionsCount + 1}`,
|
||||
status: WorkflowVersionStatus.DRAFT,
|
||||
});
|
||||
|
||||
await this.emitWorkflowVersionCreationEvent({
|
||||
workflowVersion: draftWorkflowVersion,
|
||||
workspaceId,
|
||||
});
|
||||
}
|
||||
|
||||
assertWorkflowVersionIsDraft(draftWorkflowVersion);
|
||||
@ -506,4 +514,41 @@ export class WorkflowVersionStepWorkspaceService {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async emitWorkflowVersionCreationEvent({
|
||||
workflowVersion,
|
||||
workspaceId,
|
||||
}: {
|
||||
workflowVersion: WorkflowVersionWorkspaceEntity;
|
||||
workspaceId: string;
|
||||
}) {
|
||||
const objectMetadata = await this.objectMetadataRepository.findOne({
|
||||
where: {
|
||||
nameSingular: 'workflowVersion',
|
||||
workspaceId,
|
||||
},
|
||||
});
|
||||
|
||||
if (!objectMetadata) {
|
||||
throw new WorkflowVersionStepException(
|
||||
'Object metadata not found',
|
||||
WorkflowVersionStepExceptionCode.FAILURE,
|
||||
);
|
||||
}
|
||||
|
||||
this.workspaceEventEmitter.emitDatabaseBatchEvent({
|
||||
objectMetadataNameSingular: 'workflowVersion',
|
||||
action: DatabaseEventAction.CREATED,
|
||||
events: [
|
||||
{
|
||||
recordId: workflowVersion.id,
|
||||
objectMetadata,
|
||||
properties: {
|
||||
after: workflowVersion,
|
||||
},
|
||||
},
|
||||
],
|
||||
workspaceId,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user