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 { Repository } from 'typeorm';
|
||||||
import { v4 } from 'uuid';
|
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 { 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 { WorkflowActionDTO } from 'src/engine/core-modules/workflow/dtos/workflow-step.dto';
|
||||||
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
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 { ServerlessFunctionService } from 'src/engine/metadata-modules/serverless-function/serverless-function.service';
|
||||||
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
|
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
|
||||||
|
import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter';
|
||||||
import {
|
import {
|
||||||
WorkflowVersionStepException,
|
WorkflowVersionStepException,
|
||||||
WorkflowVersionStepExceptionCode,
|
WorkflowVersionStepExceptionCode,
|
||||||
@ -51,6 +53,7 @@ export class WorkflowVersionStepWorkspaceService {
|
|||||||
private readonly serverlessFunctionService: ServerlessFunctionService,
|
private readonly serverlessFunctionService: ServerlessFunctionService,
|
||||||
@InjectRepository(ObjectMetadataEntity, 'metadata')
|
@InjectRepository(ObjectMetadataEntity, 'metadata')
|
||||||
private readonly objectMetadataRepository: Repository<ObjectMetadataEntity>,
|
private readonly objectMetadataRepository: Repository<ObjectMetadataEntity>,
|
||||||
|
private readonly workspaceEventEmitter: WorkspaceEventEmitter,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
private async getStepDefaultDefinition({
|
private async getStepDefaultDefinition({
|
||||||
@ -459,6 +462,11 @@ export class WorkflowVersionStepWorkspaceService {
|
|||||||
name: `v${workflowVersionsCount + 1}`,
|
name: `v${workflowVersionsCount + 1}`,
|
||||||
status: WorkflowVersionStatus.DRAFT,
|
status: WorkflowVersionStatus.DRAFT,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await this.emitWorkflowVersionCreationEvent({
|
||||||
|
workflowVersion: draftWorkflowVersion,
|
||||||
|
workspaceId,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
assertWorkflowVersionIsDraft(draftWorkflowVersion);
|
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