← 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 });
}