import { neon } from "@neondatabase/serverless"; export async function GET(req: Request) { const sql = neon(process.env.DATABASE_URL!); const clerkId = new URL(req.url).searchParams.get("clerkId"); if (!clerkId) { return Response.json({ error: "Missing clerkId" }, { status: 400 }); } try { const response = await sql` SELECT id, name, email, role FROM users WHERE clerk_id = ${clerkId} `; return Response.json({ data: response[0] ?? null }); } catch (error) { console.log("[GET_USER]: ", error); return Response.json({ error }, { status: 500 }); } } export async function POST(req: Request) { const sql = neon(process.env.DATABASE_URL!); const { name, email, clerkId } = await req.json(); if (!name || !email || !clerkId) { return Response.json( { error: "Missing required fields!", }, { status: 404, }, ); } try { const response = await sql` INSERT INTO users ( name, email, clerk_id ) VALUES ( ${name}, ${email}, ${clerkId} ) `; return new Response(JSON.stringify({ data: response })); } catch (error) { console.log(error); return Response.json({ error }, { status: 500 }); } } export async function PATCH(req: Request) { const sql = neon(process.env.DATABASE_URL!); const { clerkId, role } = await req.json(); if (!clerkId || !["rider", "driver"].includes(role)) { return Response.json( { error: "Missing clerkId or invalid role." }, { status: 400 }, ); } try { const response = await sql` UPDATE users SET role = ${role} WHERE clerk_id = ${clerkId} RETURNING id, role `; if (response.length === 0) { return Response.json({ error: "User not found." }, { status: 404 }); } return Response.json({ data: response[0] }); } catch (error) { console.log("[PATCH_USER]: ", error); return Response.json({ error }, { status: 500 }); } }