Skip to content

Commit 88964ad

Browse files
committed
feat: remove not-null constraint on trigger property
1 parent 2aefa41 commit 88964ad

File tree

5 files changed

+48
-52
lines changed

5 files changed

+48
-52
lines changed

packages/twenty-server/src/modules/workflow/common/query-hooks/workflow-version/utils/assert-workflow-version-is-draft.util.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,9 @@ import {
66
WorkflowVersionStatus,
77
WorkflowVersionWorkspaceEntity,
88
} from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
9-
import { WorkflowTrigger } from 'src/modules/workflow/common/types/workflow-trigger.type';
109

1110
export const assertWorkflowVersionIsDraft = (
12-
workflowVersion: Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
13-
trigger: WorkflowTrigger;
14-
},
11+
workflowVersion: WorkflowVersionWorkspaceEntity,
1512
) => {
1613
if (workflowVersion.status !== WorkflowVersionStatus.DRAFT) {
1714
throw new WorkflowQueryValidationException(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
2+
import { WorkflowTrigger } from 'src/modules/workflow/common/types/workflow-trigger.type';
3+
import {
4+
WorkflowTriggerException,
5+
WorkflowTriggerExceptionCode,
6+
} from 'src/modules/workflow/workflow-trigger/workflow-trigger.exception';
7+
8+
export function assertWorkflowVersionTriggerIsDefined(
9+
workflowVersion: WorkflowVersionWorkspaceEntity,
10+
): asserts workflowVersion is Omit<
11+
WorkflowVersionWorkspaceEntity,
12+
'trigger'
13+
> & {
14+
trigger: WorkflowTrigger;
15+
} {
16+
if (!workflowVersion.trigger) {
17+
throw new WorkflowTriggerException(
18+
'Workflow version does not contains trigger',
19+
WorkflowTriggerExceptionCode.INVALID_WORKFLOW_VERSION,
20+
);
21+
}
22+
}

packages/twenty-server/src/modules/workflow/common/services/workflow-common.workspace-service.ts

+11-17
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { Injectable } from '@nestjs/common';
22

33
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
44
import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
5-
import { WorkflowTrigger } from 'src/modules/workflow/common/types/workflow-trigger.type';
65
import {
76
WorkflowTriggerException,
87
WorkflowTriggerExceptionCode,
@@ -12,11 +11,9 @@ import {
1211
export class WorkflowCommonWorkspaceService {
1312
constructor(private readonly twentyORMManager: TwentyORMManager) {}
1413

15-
async getWorkflowVersionOrFail(workflowVersionId: string): Promise<
16-
Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
17-
trigger: WorkflowTrigger;
18-
}
19-
> {
14+
async getWorkflowVersionOrFail(
15+
workflowVersionId: string,
16+
): Promise<WorkflowVersionWorkspaceEntity> {
2017
if (!workflowVersionId) {
2118
throw new WorkflowTriggerException(
2219
'Workflow version ID is required',
@@ -40,24 +37,21 @@ export class WorkflowCommonWorkspaceService {
4037

4138
async getValidWorkflowVersionOrFail(
4239
workflowVersion: WorkflowVersionWorkspaceEntity | null,
43-
): Promise<
44-
Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
45-
trigger: WorkflowTrigger;
46-
}
47-
> {
40+
): Promise<WorkflowVersionWorkspaceEntity> {
4841
if (!workflowVersion) {
4942
throw new WorkflowTriggerException(
5043
'Workflow version not found',
5144
WorkflowTriggerExceptionCode.INVALID_INPUT,
5245
);
5346
}
5447

55-
if (!workflowVersion.trigger) {
56-
throw new WorkflowTriggerException(
57-
'Workflow version does not contains trigger',
58-
WorkflowTriggerExceptionCode.INVALID_WORKFLOW_VERSION,
59-
);
60-
}
48+
// FIXME: For now we will make the trigger optional. Later, we'll have to ensure the trigger is defined when publishing the flow.
49+
// if (!workflowVersion.trigger) {
50+
// throw new WorkflowTriggerException(
51+
// 'Workflow version does not contains trigger',
52+
// WorkflowTriggerExceptionCode.INVALID_WORKFLOW_VERSION,
53+
// );
54+
// }
6155

6256
return { ...workflowVersion, trigger: workflowVersion.trigger };
6357
}

packages/twenty-server/src/modules/workflow/workflow-trigger/utils/assert-version-can-be-activated.util.ts

+3-12
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,14 @@ import {
33
WorkflowVersionWorkspaceEntity,
44
} from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
55
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
6-
import {
7-
WorkflowTrigger,
8-
WorkflowTriggerType,
9-
} from 'src/modules/workflow/common/types/workflow-trigger.type';
6+
import { WorkflowTriggerType } from 'src/modules/workflow/common/types/workflow-trigger.type';
107
import {
118
WorkflowTriggerException,
129
WorkflowTriggerExceptionCode,
1310
} from 'src/modules/workflow/workflow-trigger/workflow-trigger.exception';
1411

1512
export function assertVersionCanBeActivated(
16-
workflowVersion: Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
17-
trigger: WorkflowTrigger;
18-
},
13+
workflowVersion: WorkflowVersionWorkspaceEntity,
1914
workflow: WorkflowWorkspaceEntity,
2015
) {
2116
assertVersionIsValid(workflowVersion);
@@ -37,11 +32,7 @@ export function assertVersionCanBeActivated(
3732
}
3833
}
3934

40-
function assertVersionIsValid(
41-
workflowVersion: Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
42-
trigger: WorkflowTrigger;
43-
},
44-
) {
35+
function assertVersionIsValid(workflowVersion: WorkflowVersionWorkspaceEntity) {
4536
if (!workflowVersion.trigger) {
4637
throw new WorkflowTriggerException(
4738
'Workflow version does not contain trigger',

packages/twenty-server/src/modules/workflow/workflow-trigger/workflow-trigger.workspace-service.ts

+11-19
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,14 @@ import { ScopedWorkspaceContextFactory } from 'src/engine/twenty-orm/factories/s
88
import { WorkspaceRepository } from 'src/engine/twenty-orm/repository/workspace.repository';
99
import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager';
1010
import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter';
11+
import { assertWorkflowVersionTriggerIsDefined } from 'src/modules/workflow/common/query-hooks/workflow-version/utils/assert-workflow-version-trigger-is-defined.util';
1112
import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/services/workflow-common.workspace-service';
1213
import {
1314
WorkflowVersionStatus,
1415
WorkflowVersionWorkspaceEntity,
1516
} from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
1617
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
17-
import {
18-
WorkflowTrigger,
19-
WorkflowTriggerType,
20-
} from 'src/modules/workflow/common/types/workflow-trigger.type';
18+
import { WorkflowTriggerType } from 'src/modules/workflow/common/types/workflow-trigger.type';
2119
import { WorkflowRunnerWorkspaceService } from 'src/modules/workflow/workflow-runner/workflow-runner.workspace-service';
2220
import { WorkflowVersionStatusUpdate } from 'src/modules/workflow/workflow-status/jobs/workflow-statuses-update.job';
2321
import { DatabaseEventTriggerService } from 'src/modules/workflow/workflow-trigger/database-event-trigger/database-event-trigger.service';
@@ -158,9 +156,7 @@ export class WorkflowTriggerWorkspaceService {
158156

159157
private async performActivationSteps(
160158
workflow: WorkflowWorkspaceEntity,
161-
workflowVersion: Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
162-
trigger: WorkflowTrigger;
163-
},
159+
workflowVersion: WorkflowVersionWorkspaceEntity,
164160
workflowRepository: WorkspaceRepository<WorkflowWorkspaceEntity>,
165161
workflowVersionRepository: WorkspaceRepository<WorkflowVersionWorkspaceEntity>,
166162
manager: EntityManager,
@@ -217,9 +213,7 @@ export class WorkflowTriggerWorkspaceService {
217213
}
218214

219215
private async setActiveVersionStatus(
220-
workflowVersion: Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
221-
trigger: WorkflowTrigger;
222-
},
216+
workflowVersion: WorkflowVersionWorkspaceEntity,
223217
workflowVersionRepository: WorkspaceRepository<WorkflowVersionWorkspaceEntity>,
224218
manager: EntityManager,
225219
) {
@@ -254,9 +248,7 @@ export class WorkflowTriggerWorkspaceService {
254248
}
255249

256250
private async setDeactivatedVersionStatus(
257-
workflowVersion: Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
258-
trigger: WorkflowTrigger;
259-
},
251+
workflowVersion: WorkflowVersionWorkspaceEntity,
260252
workflowVersionRepository: WorkspaceRepository<WorkflowVersionWorkspaceEntity>,
261253
manager: EntityManager,
262254
) {
@@ -307,11 +299,11 @@ export class WorkflowTriggerWorkspaceService {
307299
}
308300

309301
private async enableTrigger(
310-
workflowVersion: Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
311-
trigger: WorkflowTrigger;
312-
},
302+
workflowVersion: WorkflowVersionWorkspaceEntity,
313303
manager: EntityManager,
314304
) {
305+
assertWorkflowVersionTriggerIsDefined(workflowVersion);
306+
315307
switch (workflowVersion.trigger.type) {
316308
case WorkflowTriggerType.DATABASE_EVENT:
317309
await this.databaseEventTriggerService.createEventListener(
@@ -326,11 +318,11 @@ export class WorkflowTriggerWorkspaceService {
326318
}
327319

328320
private async disableTrigger(
329-
workflowVersion: Omit<WorkflowVersionWorkspaceEntity, 'trigger'> & {
330-
trigger: WorkflowTrigger;
331-
},
321+
workflowVersion: WorkflowVersionWorkspaceEntity,
332322
manager: EntityManager,
333323
) {
324+
assertWorkflowVersionTriggerIsDefined(workflowVersion);
325+
334326
switch (workflowVersion.trigger.type) {
335327
case WorkflowTriggerType.DATABASE_EVENT:
336328
await this.databaseEventTriggerService.deleteEventListener(

0 commit comments

Comments
 (0)