067e19fec9
* Attach webhook to http endpoint * Create internal webhook handler job * Fix delivery * Add webhook trigger * Index webhooks * Fix webhook connect * Webhook activation * Rename to TriggerWebhook * Save webhooks to index * Extend register payload * Revert attachSource * Add update webhook helper * Use crud interface for registration * Remove filter from params * Destructure options * Missing ohash dep * Chainable trigger filter * Optional request verification * Handler call with context * Update config on register success * Rename to webhookData * Add basic key-value store * Improve kv store * Webhook trigger UI * Webhook delivery UI * Some fixes * Airtable experiments * Fix tabs transitions * Only run register if config differs * Use subtasks for delivery * Missing dep * Error handing and fixes * Namespace cursor * Fix hmac verification * Gut Airtable * Lockfile * Template optional api key * Template event sources and icons * Template remove filter from params * Fix models template * Template fixme * Fix webhook trigger header * Actually send params for registration.. * Add back oauthed client * Verify signature header encoding param * Fix delivery context * Webhook create retry with prior delete * Webhook source type fixes * Webhook config merge * Update webhook icon * Verify webhook task options * Rename handler to generateEvents * Send event icons * Shopify with webhooks * Shopify job-catalog entry * Lockfile * Add webhook migration * Better icons * Type fixes * Make param type optional * Scope type * More examples * More schemas * Trigger catalog * Bump versions * Just a few more events they said * Simplify session and config * Typed serializer * Fix payload type * Remove unused getters * Reduce logging output * Rest resource tasks * Lockfile * Bump version * Remaining triggers * Fix event types * Fix import * Link from webhook trigger to http endpoint * Use rest resource tasks for crud * Fix rest save type * Improve KV types * Improve attach webhook logging * Make header schema more lenient * Fix save type again * Final error callback * Shorten keys * Remove ohash diff * Disable Airtable webhooks * Webhook environments * Fix shopify error import * Link to integration and http endpoint * Integration catalog entry * Disable oauth * Require api key, simplify client secret * Move trigger types * Update catalog example * Small KV endpoint refactor * Fix custom migration * Webhook environment migration * Improve crud types * Remove unused schema * Fix crud context type * KV limits and HTTP verbs * KV improvements * Jobless webhook delivery * Airtable delivery fixes * Make deliveries sexy again * Some docs * Fix payload types.. again * Final payload pass * Schema cleanup * Refactor handler service * Remove more stale schemas * registerJobNamespace import * Expose KV on TriggerClient * Remove dummy click handler * Remove unused components * Fix delivery pagination * Enable registration rerun button * Comment out registration route action handler * Rename KV as not tied to IO anymore * Swap api with trigger client * Disabled fields param * KV docs * Changeset * Shopify docs fixes
63 lines
1.4 KiB
TypeScript
63 lines
1.4 KiB
TypeScript
import type { TriggerSource, UpdateWebhookBody } from "@trigger.dev/core";
|
|
import type { RuntimeEnvironment } from "@trigger.dev/database";
|
|
import type { PrismaClient } from "~/db.server";
|
|
import { prisma } from "~/db.server";
|
|
|
|
export class UpdateWebhookService {
|
|
#prismaClient: PrismaClient;
|
|
|
|
constructor(prismaClient: PrismaClient = prisma) {
|
|
this.#prismaClient = prismaClient;
|
|
}
|
|
|
|
public async call({
|
|
environment,
|
|
payload,
|
|
key,
|
|
}: {
|
|
environment: RuntimeEnvironment;
|
|
payload: UpdateWebhookBody;
|
|
key: string;
|
|
}): Promise<TriggerSource> {
|
|
const webhook = await this.#prismaClient.webhook.findUniqueOrThrow({
|
|
where: {
|
|
key_projectId: {
|
|
key,
|
|
projectId: environment.projectId,
|
|
},
|
|
},
|
|
});
|
|
|
|
await this.#prismaClient.webhook.update({
|
|
where: {
|
|
key_projectId: {
|
|
key,
|
|
projectId: environment.projectId,
|
|
},
|
|
},
|
|
data: {
|
|
active: payload.active,
|
|
webhookEnvironments: {
|
|
update: {
|
|
where: {
|
|
environmentId_webhookId: {
|
|
environmentId: environment.id,
|
|
webhookId: webhook.id,
|
|
},
|
|
},
|
|
data: {
|
|
active: payload.active,
|
|
config: payload.active ? payload.config : undefined,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
return {
|
|
id: webhook.id,
|
|
key: webhook.key,
|
|
};
|
|
}
|
|
}
|