fix: make traffic payout metrics resilient when ledger table missing
Some checks failed
Deploy to 110 WOOO Server / deploy (push) Failing after 6s
Some checks failed
Deploy to 110 WOOO Server / deploy (push) Failing after 6s
This commit is contained in:
@@ -12,6 +12,15 @@ function asRecordJson(value: unknown): Record<string, unknown> | undefined {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function isMissingTableError(error: unknown): boolean {
|
||||
return (
|
||||
typeof error === "object" &&
|
||||
error !== null &&
|
||||
"code" in error &&
|
||||
(error as { code: string }).code === "P2021"
|
||||
);
|
||||
}
|
||||
|
||||
export async function GET(request: NextRequest) {
|
||||
if (MONITOR_TOKEN) {
|
||||
const token = request.headers.get("x-traffic-token");
|
||||
@@ -90,22 +99,33 @@ export async function GET(request: NextRequest) {
|
||||
metadata: true,
|
||||
},
|
||||
}),
|
||||
prisma.ledgerEntry.count({
|
||||
where: {
|
||||
created_at: { gte: since },
|
||||
phase: "CAPTURE",
|
||||
response_status: "SUCCESS",
|
||||
},
|
||||
}),
|
||||
prisma.ledgerEntry.count({
|
||||
where: {
|
||||
created_at: { gte: since },
|
||||
phase: "RELEASE",
|
||||
response_status: "SUCCESS",
|
||||
},
|
||||
}),
|
||||
]);
|
||||
|
||||
let capturedPayoutCount = 0;
|
||||
let releasedPayoutCount = 0;
|
||||
try {
|
||||
[capturedPayoutCount, releasedPayoutCount] = await Promise.all([
|
||||
prisma.ledgerEntry.count({
|
||||
where: {
|
||||
created_at: { gte: since },
|
||||
phase: "CAPTURE",
|
||||
response_status: "SUCCESS",
|
||||
},
|
||||
}),
|
||||
prisma.ledgerEntry.count({
|
||||
where: {
|
||||
created_at: { gte: since },
|
||||
phase: "RELEASE",
|
||||
response_status: "SUCCESS",
|
||||
},
|
||||
}),
|
||||
]);
|
||||
} catch (error) {
|
||||
if (!isMissingTableError(error)) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
const actionSummary = Object.fromEntries(
|
||||
summaryRows.map((row) => [row.action, row._count._all])
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user