From fce79fbd74da8af582fe479d0ac2d90edc8d6c9b Mon Sep 17 00:00:00 2001 From: "sentry[bot]" <39604003+sentry[bot]@users.noreply.github.com> Date: Fri, 16 Oct 2026 22:09:52 +0000 Subject: [PATCH] Guard against missing payments in the refund tool --- apps/storefront/lib/ai/tools.ts | 6 ++++++ apps/storefront/lib/db/index.ts | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/storefront/lib/ai/tools.ts b/apps/storefront/lib/ai/tools.ts index d863021..767eebc 100644 --- a/apps/storefront/lib/ai/tools.ts +++ b/apps/storefront/lib/ai/tools.ts @@ -158,6 +158,12 @@ export function createTools(customerId: string, _conversationId?: string) { } const payment = await db.selectPayment(orderId); + if (!payment) { + return { + refunded: false as const, + reason: `No payment record found for order ${orderId}`, + }; + } const refund = await issueRefund({ chargeId: payment.chargeId, amount: order.total.amount, diff --git a/apps/storefront/lib/db/index.ts b/apps/storefront/lib/db/index.ts index 0b1d245..5f39934 100644 --- a/apps/storefront/lib/db/index.ts +++ b/apps/storefront/lib/db/index.ts @@ -196,14 +196,14 @@ export async function selectOrder( } // Orders placed before the payments launch have no payment row. -export async function selectPayment(orderId: string): Promise { +export async function selectPayment(orderId: string): Promise { const [row] = await db .select() .from(payments) .where(eq(payments.orderId, orderId)) .limit(1); - return row as Payment; + return row; } export async function selectOrders(