mirror of
https://github.com/documenso/documenso.git
synced 2025-11-25 06:01:35 +10:00
38 lines
989 B
TypeScript
38 lines
989 B
TypeScript
import type { WebhookTriggerEvents } from '@prisma/client';
|
|
|
|
import { jobs } from '../../../jobs/client';
|
|
import { getAllWebhooksByEventTrigger } from '../get-all-webhooks-by-event-trigger';
|
|
|
|
export type TriggerWebhookOptions = {
|
|
event: WebhookTriggerEvents;
|
|
data: Record<string, unknown>;
|
|
userId: number;
|
|
teamId: number;
|
|
};
|
|
|
|
export const triggerWebhook = async ({ event, data, userId, teamId }: TriggerWebhookOptions) => {
|
|
try {
|
|
const registeredWebhooks = await getAllWebhooksByEventTrigger({ event, userId, teamId });
|
|
|
|
if (registeredWebhooks.length === 0) {
|
|
return;
|
|
}
|
|
|
|
await Promise.allSettled(
|
|
registeredWebhooks.map(async (webhook) => {
|
|
await jobs.triggerJob({
|
|
name: 'internal.execute-webhook',
|
|
payload: {
|
|
event,
|
|
webhookId: webhook.id,
|
|
data,
|
|
},
|
|
});
|
|
}),
|
|
);
|
|
} catch (err) {
|
|
console.error(err);
|
|
throw new Error(`Failed to trigger webhook`);
|
|
}
|
|
};
|