← back to Omega Watches 2
src/app/api/msrp/[reference]/route.ts
71 lines
import { NextRequest, NextResponse } from "next/server";
import { query, queryOne } from "@/lib/db";
import { getSession } from "@/lib/auth";
export const dynamic = "force-dynamic";
export async function GET(
request: NextRequest,
{ params }: { params: { reference: string } }
) {
const session = await getSession(request);
if (!session) {
return NextResponse.json({ success: false, error: { code: "UNAUTHORIZED", message: "Login required" } }, { status: 401 });
}
const { searchParams } = new URL(request.url);
const region = searchParams.get("region") || "US";
const ref = await queryOne(
"SELECT * FROM watch_reference WHERE reference_number = $1",
[params.reference]
);
if (!ref) {
return NextResponse.json({ success: false, error: { code: "NOT_FOUND", message: "Reference not found" } }, { status: 404 });
}
// Current MSRP (latest snapshot per region)
const currentMSRP = await query(
`SELECT DISTINCT ON (region_code)
region_code, currency, msrp_amount, captured_date, source_url
FROM msrp_snapshot
WHERE reference_id = $1
ORDER BY region_code, captured_date DESC`,
[ref.id]
);
// MSRP history for requested region
const history = await query(
`SELECT captured_date, msrp_amount, currency, source_url, page_hash
FROM msrp_snapshot
WHERE reference_id = $1 AND region_code = $2
ORDER BY captured_date`,
[ref.id, region]
);
// MSRP changes for this reference
const changes = await query(
`SELECT * FROM msrp_changes
WHERE reference_id = $1
ORDER BY change_date DESC
LIMIT 50`,
[ref.id]
);
return NextResponse.json({
success: true,
data: {
reference: ref,
current_msrp: currentMSRP,
history,
changes,
},
meta: {
region_requested: region,
regions_available: currentMSRP.map((r: any) => r.region_code),
timestamp: new Date().toISOString(),
},
});
}