From 0a7ad96dcc8f9a0053380fcdb81f06d9efe68434 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Fri, 5 May 2023 16:46:38 +0100 Subject: [PATCH] Variants working in the new internal job system --- .../app/services/jobs/registerJob.server.ts | 8 ++++++++ examples/nextjs-example/src/pages/api/trigger.ts | 9 ++++++++- integrations/github/src/index.ts | 8 +++++++- packages/trigger-sdk/src/job.ts | 15 ++++++++++----- 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/apps/webapp/app/services/jobs/registerJob.server.ts b/apps/webapp/app/services/jobs/registerJob.server.ts index fd754acd6..ce80d6596 100644 --- a/apps/webapp/app/services/jobs/registerJob.server.ts +++ b/apps/webapp/app/services/jobs/registerJob.server.ts @@ -383,6 +383,14 @@ export class RegisterJobService { }, update: { data: trigger, + eventRule: { + update: { + event: trigger.eventRule.event, + source: trigger.eventRule.source, + payloadFilter: trigger.eventRule.payload, + contextFilter: trigger.eventRule.context, + }, + }, }, }); } diff --git a/examples/nextjs-example/src/pages/api/trigger.ts b/examples/nextjs-example/src/pages/api/trigger.ts index 3a1e285a3..88329696d 100644 --- a/examples/nextjs-example/src/pages/api/trigger.ts +++ b/examples/nextjs-example/src/pages/api/trigger.ts @@ -35,7 +35,14 @@ new Job({ channel: "C04GWUTDC3W", }); }, -}).attachTo(client); +}) + .attachTo(client) + .attachVariant( + "ericallam/hello-world", + gh.triggers.onIssueOpened({ + repo: "ericallam/hello-world", + }) + ); new Job({ id: "alert-on-new-github-issues-2", diff --git a/integrations/github/src/index.ts b/integrations/github/src/index.ts index 28c0243cb..c8d48f835 100644 --- a/integrations/github/src/index.ts +++ b/integrations/github/src/index.ts @@ -106,7 +106,13 @@ function buildRepoWebhookTrigger( eventRule: { event, source: "github.com", - payload: filter ?? {}, + payload: { + ...(filter ?? {}), + repository: { + ...filter?.repository, + full_name: [params.repo], + }, + }, }, }); } diff --git a/packages/trigger-sdk/src/job.ts b/packages/trigger-sdk/src/job.ts index 9a6f48e6a..a56df7f2c 100644 --- a/packages/trigger-sdk/src/job.ts +++ b/packages/trigger-sdk/src/job.ts @@ -34,6 +34,7 @@ export class Job< readonly options: JobOptions; client?: TriggerClient; + #pendingVariants: Array<{ id: string; trigger: TTrigger }> = []; constructor(options: JobOptions) { this.options = options; @@ -91,18 +92,22 @@ export class Job< client.attach(this); + if (this.#pendingVariants.length > 0) { + this.#pendingVariants.forEach(({ id, trigger }) => { + client.attachVariant(this, id, trigger); + }); + } + return this; } attachVariant(id: string, trigger: TTrigger) { if (!this.client) { - throw new Error( - `Job "${this.id}" has not been registered with a client.` - ); + this.#pendingVariants.push({ id, trigger }); + } else { + this.client.attachVariant(this, id, trigger); } - this.client.attachVariant(this, id, trigger); - return this; }