← back to Trademarks Copyright
src/app/api/drops/view/[token]/route.ts
34 lines
import { NextRequest, NextResponse } from "next/server";
import { query } from "@/lib/db";
export async function GET(
_req: NextRequest,
{ params }: { params: Promise<{ token: string }> }
) {
const { token } = await params;
const { rows: subs } = await query<{
id: number; email: string; name: string | null; tier: string; status: string;
trial_drops_left: number; signed_up_at: string; last_delivered_at: string | null;
}>(
`SELECT id, email, name, tier, status, trial_drops_left, signed_up_at, last_delivered_at
FROM subscribers WHERE token = $1`,
[token]
);
if (!subs.length) return NextResponse.json({ error: "not found" }, { status: 404 });
const sub = subs[0];
const { rows: drops } = await query<{
id: number; drop_date: string; subject: string;
sent_at: string | null; intro: string | null;
}>(
`SELECT d.id, d.drop_date, d.subject, d.sent_at, d.intro
FROM drops d
JOIN deliveries dv ON dv.drop_id = d.id
WHERE dv.subscriber_id = $1
ORDER BY d.drop_date DESC`,
[sub.id]
);
return NextResponse.json({ subscriber: sub, drops });
}