From 5d9c210cd865576b924445c73ce3c9c029a08b06 Mon Sep 17 00:00:00 2001 From: isaiahdahl Date: Wed, 18 Sep 2024 09:17:50 -0700 Subject: [PATCH 1/3] feat(api): allow workflow trigger to specify a priority that's passed onto bullmq --- .../parse-event-request.command.ts | 15 ++++++++++++++- .../parse-event-request.usecase.ts | 9 ++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts b/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts index ecc3aa68730..b73c0d9f1dc 100644 --- a/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts +++ b/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts @@ -1,4 +1,13 @@ -import { IsDefined, IsString, IsOptional, ValidateNested, ValidateIf, IsEnum, IsObject } from 'class-validator'; +import { + IsDefined, + IsString, + IsOptional, + ValidateNested, + ValidateIf, + IsEnum, + IsObject, + IsNumber, +} from 'class-validator'; import { AddressingTypeEnum, ControlsDto, @@ -39,6 +48,10 @@ export class ParseEventRequestBaseCommand extends EnvironmentWithUserCommand { @IsEnum(TriggerRequestCategoryEnum) requestCategory?: TriggerRequestCategoryEnum; + @IsOptional() + @IsNumber() + priority?: number; + @IsString() @IsOptional() bridgeUrl?: string; diff --git a/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.usecase.ts b/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.usecase.ts index 2f82c29ed87..09374433957 100644 --- a/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.usecase.ts +++ b/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.usecase.ts @@ -215,7 +215,14 @@ export class ParseEventRequest { bridgeWorkflow: discoveredWorkflow ?? undefined, }; - await this.workflowQueueService.add({ name: transactionId, data: jobData, groupId: command.organizationId }); + const options = process.env.IS_DOCKER_HOSTED === 'true' && command.priority ? { priority: command.priority } : {}; + + await this.workflowQueueService.add({ + name: transactionId, + data: jobData, + groupId: command.organizationId, + ...options, + }); return { acknowledged: true, From 0565352b718641e8e45db895992ed8bd1960458d Mon Sep 17 00:00:00 2001 From: isaiahdahl Date: Fri, 20 Sep 2024 12:17:32 -0700 Subject: [PATCH 2/3] fix: add ApiHideProperty to priority property on event trigger --- .../usecases/parse-event-request/parse-event-request.command.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts b/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts index b73c0d9f1dc..ffffe633077 100644 --- a/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts +++ b/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts @@ -18,6 +18,7 @@ import { } from '@novu/shared'; import { EnvironmentWithUserCommand } from '../../../shared/commands/project.command'; +import { ApiHideProperty } from '@nestjs/swagger'; export class ParseEventRequestBaseCommand extends EnvironmentWithUserCommand { @IsDefined() @@ -48,6 +49,7 @@ export class ParseEventRequestBaseCommand extends EnvironmentWithUserCommand { @IsEnum(TriggerRequestCategoryEnum) requestCategory?: TriggerRequestCategoryEnum; + @ApiHideProperty() @IsOptional() @IsNumber() priority?: number; From 174bbe7329649e41ba05702d332a5babf595e3c8 Mon Sep 17 00:00:00 2001 From: isaiahdahl Date: Mon, 25 Nov 2024 10:04:30 -0800 Subject: [PATCH 3/3] fix: resolve linting issue --- .../usecases/parse-event-request/parse-event-request.command.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts b/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts index ffffe633077..7266c346686 100644 --- a/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts +++ b/apps/api/src/app/events/usecases/parse-event-request/parse-event-request.command.ts @@ -16,9 +16,9 @@ import { TriggerRequestCategoryEnum, TriggerTenantContext, } from '@novu/shared'; +import { ApiHideProperty } from '@nestjs/swagger'; import { EnvironmentWithUserCommand } from '../../../shared/commands/project.command'; -import { ApiHideProperty } from '@nestjs/swagger'; export class ParseEventRequestBaseCommand extends EnvironmentWithUserCommand { @IsDefined()