Add workflow statuses (#6765)

Following figma updates
https://www.figma.com/design/PNBfTgOVraw557OXChYagk/Explo?node-id=21872-7929&t=DOUzd6rzwr6lprcs-0

- No activity targets for workflow entities for now
- Adding a direct relation between workflow run et workflow
- Adding a status on the version (draft, active, deactivated)
- Adding a list of statuses on workflow 
- publishedVersionId => lastPublishedVersionId

Also adding:
- the endpoint to deactivate a version
This commit is contained in:
Thomas Trompette
2024-08-28 14:53:25 +02:00
committed by GitHub
parent da23ca3c23
commit ff1adb06b2
25 changed files with 419 additions and 289 deletions
@@ -1,4 +1,8 @@
import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
import {
WorkflowVersionStatus,
WorkflowVersionWorkspaceEntity,
} from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
import {
WorkflowTrigger,
WorkflowTriggerType,
@@ -8,7 +12,32 @@ import {
WorkflowTriggerExceptionCode,
} from 'src/modules/workflow/workflow-trigger/workflow-trigger.exception';
export function assertWorkflowVersionIsValid(
export function assertVersionCanBeActivated(
workflowVersion: Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
trigger: WorkflowTrigger;
},
workflow: WorkflowWorkspaceEntity,
) {
assertVersionIsValid(workflowVersion);
const isLastPublishedVersion =
workflow.lastPublishedVersionId === workflowVersion.id;
const isDraft = workflowVersion.status === WorkflowVersionStatus.DRAFT;
const isLastPublishedVersionDeactivated =
workflowVersion.status === WorkflowVersionStatus.DEACTIVATED &&
isLastPublishedVersion;
if (!isDraft && !isLastPublishedVersionDeactivated) {
throw new WorkflowTriggerException(
'Cannot activate non-draft or non-last-published version',
WorkflowTriggerExceptionCode.INVALID_INPUT,
);
}
}
function assertVersionIsValid(
workflowVersion: Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
trigger: WorkflowTrigger;
},