import { NextResponse } from "next/server"; import { deleteApiKey, getApiKeyByIdAndOwnerId, updateApiKey } from "@/lib/localDb"; import { requireCurrentDashboardUser } from "@/lib/auth/currentUser"; async function getOwnedApiKey(id) { const user = await requireCurrentDashboardUser(); return getApiKeyByIdAndOwnerId(id, user.id); } // GET /api/keys/[id] - Get single key export async function GET(request, { params }) { try { const { id } = await params; const key = await getOwnedApiKey(id); if (!key) { return NextResponse.json({ error: "Key not found" }, { status: 404 }); } return NextResponse.json({ key }); } catch (error) { if (error.message === "Unauthorized") { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); } console.log("Error fetching key:", error); return NextResponse.json({ error: "Failed to fetch key" }, { status: 500 }); } } // PUT /api/keys/[id] - Update key export async function PUT(request, { params }) { try { const { id } = await params; const body = await request.json(); const { isActive } = body; const existing = await getOwnedApiKey(id); if (!existing) { return NextResponse.json({ error: "Key not found" }, { status: 404 }); } const updateData = {}; if (isActive !== undefined) updateData.isActive = isActive; const updated = await updateApiKey(id, updateData); return NextResponse.json({ key: updated }); } catch (error) { if (error.message === "Unauthorized") { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); } console.log("Error updating key:", error); return NextResponse.json({ error: "Failed to update key" }, { status: 500 }); } } // DELETE /api/keys/[id] - Delete API key export async function DELETE(request, { params }) { try { const { id } = await params; const existing = await getOwnedApiKey(id); if (!existing) { return NextResponse.json({ error: "Key not found" }, { status: 404 }); } const deleted = await deleteApiKey(id); if (!deleted) { return NextResponse.json({ error: "Key not found" }, { status: 404 }); } return NextResponse.json({ message: "Key deleted successfully" }); } catch (error) { if (error.message === "Unauthorized") { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); } console.log("Error deleting key:", error); return NextResponse.json({ error: "Failed to delete key" }, { status: 500 }); } }