From da08d5983caae8061a26eeabc2c5403a0796dbbc Mon Sep 17 00:00:00 2001 From: Anshul Garg Date: Thu, 27 Jul 2023 01:02:39 +0530 Subject: [PATCH 1/2] added multiple event name support --- apps/webapp/app/services/events/deliverEvent.server.ts | 2 +- packages/database/prisma/schema.prisma | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/webapp/app/services/events/deliverEvent.server.ts b/apps/webapp/app/services/events/deliverEvent.server.ts index f3745a49b04..27446e16aed 100644 --- a/apps/webapp/app/services/events/deliverEvent.server.ts +++ b/apps/webapp/app/services/events/deliverEvent.server.ts @@ -33,7 +33,7 @@ export class DeliverEventService { const possibleEventDispatchers = await tx.eventDispatcher.findMany({ where: { environmentId: eventRecord.environmentId, - event: eventRecord.name, + event: {in:eventRecord.name}, source: eventRecord.source, enabled: true, manual: false, diff --git a/packages/database/prisma/schema.prisma b/packages/database/prisma/schema.prisma index b3888a4a239..2a60d7e4fdd 100644 --- a/packages/database/prisma/schema.prisma +++ b/packages/database/prisma/schema.prisma @@ -584,7 +584,7 @@ enum DynamicTriggerType { model EventDispatcher { id String @id @default(cuid()) - event String + event String[] source String payloadFilter Json? contextFilter Json? From 5ed3a203ed31eb1afd090f97a138f6a9480f5adc Mon Sep 17 00:00:00 2001 From: Anshul Garg Date: Thu, 27 Jul 2023 10:33:39 +0530 Subject: [PATCH 2/2] updated the PR --- apps/webapp/app/services/events/deliverEvent.server.ts | 4 +++- .../prisma/migrations/20230724074140_changed/migration.sql | 2 ++ packages/internal/src/schemas/eventFilter.ts | 2 +- packages/internal/src/schemas/triggers.ts | 2 +- packages/trigger-sdk/src/triggers/eventTrigger.ts | 4 ++-- packages/trigger-sdk/src/types.ts | 4 ++-- 6 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 packages/database/prisma/migrations/20230724074140_changed/migration.sql diff --git a/apps/webapp/app/services/events/deliverEvent.server.ts b/apps/webapp/app/services/events/deliverEvent.server.ts index 27446e16aed..dcff6f2116e 100644 --- a/apps/webapp/app/services/events/deliverEvent.server.ts +++ b/apps/webapp/app/services/events/deliverEvent.server.ts @@ -33,7 +33,9 @@ export class DeliverEventService { const possibleEventDispatchers = await tx.eventDispatcher.findMany({ where: { environmentId: eventRecord.environmentId, - event: {in:eventRecord.name}, + event: { + has: eventRecord.name, + }, source: eventRecord.source, enabled: true, manual: false, diff --git a/packages/database/prisma/migrations/20230724074140_changed/migration.sql b/packages/database/prisma/migrations/20230724074140_changed/migration.sql new file mode 100644 index 00000000000..108446710e1 --- /dev/null +++ b/packages/database/prisma/migrations/20230724074140_changed/migration.sql @@ -0,0 +1,2 @@ +ALTER TABLE "EventDispatcher" DROP COLUMN "event", +ADD COLUMN "event" TEXT[]; \ No newline at end of file diff --git a/packages/internal/src/schemas/eventFilter.ts b/packages/internal/src/schemas/eventFilter.ts index b0499f19b0b..d32b4b3f325 100644 --- a/packages/internal/src/schemas/eventFilter.ts +++ b/packages/internal/src/schemas/eventFilter.ts @@ -19,7 +19,7 @@ export const EventFilterSchema: z.ZodType = z.lazy(() => ); export const EventRuleSchema = z.object({ - event: z.string(), + event: z.union([z.string(), z.array(z.string())]), source: z.string(), payload: EventFilterSchema.optional(), context: EventFilterSchema.optional(), diff --git a/packages/internal/src/schemas/triggers.ts b/packages/internal/src/schemas/triggers.ts index 2ef8402bcd1..a40e9b5b46a 100644 --- a/packages/internal/src/schemas/triggers.ts +++ b/packages/internal/src/schemas/triggers.ts @@ -30,7 +30,7 @@ export const DynamicTriggerMetadataSchema = z.object({ export const StaticTriggerMetadataSchema = z.object({ type: z.literal("static"), - title: z.string(), + title: z.union([z.string(), z.array(z.string())]), properties: z.array(DisplayPropertySchema).optional(), rule: EventRuleSchema, }); diff --git a/packages/trigger-sdk/src/triggers/eventTrigger.ts b/packages/trigger-sdk/src/triggers/eventTrigger.ts index 3951271a05e..442b2ed4de4 100644 --- a/packages/trigger-sdk/src/triggers/eventTrigger.ts +++ b/packages/trigger-sdk/src/triggers/eventTrigger.ts @@ -11,7 +11,7 @@ import { EventSpecification, Trigger } from "../types"; type EventTriggerOptions> = { event: TEventSpecification; - name?: string; + name?: string | string[]; source?: string; filter?: EventFilter; }; @@ -57,7 +57,7 @@ export class EventTrigger> /** Configuration options for an EventTrigger */ type TriggerOptions = { /** The name of the event you are subscribing to. Must be an exact match (case sensitive). */ - name: string; + name: string | string[]; /** A [Zod](https://trigger.dev/docs/documentation/guides/zod) schema that defines the shape of the event payload. * The default is `z.any()` which is `any`. * */ diff --git a/packages/trigger-sdk/src/types.ts b/packages/trigger-sdk/src/types.ts index 5222a3839ea..1d841127e8e 100644 --- a/packages/trigger-sdk/src/types.ts +++ b/packages/trigger-sdk/src/types.ts @@ -69,13 +69,13 @@ export interface Trigger> { export type EventSpecificationExample = { id: string; - name: string; + name: string | string[]; icon?: string; payload: any; }; export interface EventSpecification { - name: string; + name: string | string[]; title: string; source: string; icon: string;