import { NextRequest, NextResponse } from "next/server"; import { assertSameOrigin, requireUser } from "@/lib/auth/session"; import { createListing, myListings } from "@/lib/listings/service"; import { ListingInput } from "@/lib/listings/types"; import { mediaUrl } from "@/lib/listings/media"; import { handle, parseBody } from "@/lib/api"; export const dynamic = "force-dynamic"; export async function GET() { try { const u = await requireUser(); const rows = await myListings(u.id); return NextResponse.json({ items: rows.map((r) => ({ ...r.l, property: r.p, mediaCount: r.mediaCount, cover: r.cover ? mediaUrl(r.cover, 320) : null })) }); } catch (e) { return handle(e); } } export async function POST(req: NextRequest) { try { await assertSameOrigin(); const u = await requireUser(); const input = await parseBody(req, ListingInput); const l = await createListing(u.id, input); return NextResponse.json({ listing: l }, { status: 201 }); } catch (e) { return handle(e); } }