import { NextResponse } from "next/server"; import { getProviderConnectionById, updateProviderConnection, deleteProviderConnection } from "@/models"; // GET /api/providers/[id] - Get single connection export async function GET(request, { params }) { try { const { id } = await params; const connection = await getProviderConnectionById(id); if (!connection) { return NextResponse.json({ error: "Connection not found" }, { status: 404 }); } // Hide sensitive fields const result = { ...connection }; delete result.apiKey; delete result.accessToken; delete result.refreshToken; delete result.idToken; return NextResponse.json({ connection: result }); } catch (error) { console.log("Error fetching connection:", error); return NextResponse.json({ error: "Failed to fetch connection" }, { status: 500 }); } } // PUT /api/providers/[id] - Update connection export async function PUT(request, { params }) { try { const { id } = await params; const body = await request.json(); const { name, priority, globalPriority, defaultModel, isActive, apiKey, testStatus, lastError, lastErrorAt } = body; const existing = await getProviderConnectionById(id); if (!existing) { return NextResponse.json({ error: "Connection not found" }, { status: 404 }); } const updateData = {}; if (name !== undefined) updateData.name = name; if (priority !== undefined) updateData.priority = priority; if (globalPriority !== undefined) updateData.globalPriority = globalPriority; if (defaultModel !== undefined) updateData.defaultModel = defaultModel; if (isActive !== undefined) updateData.isActive = isActive; if (apiKey && existing.authType === "apikey") updateData.apiKey = apiKey; if (testStatus !== undefined) updateData.testStatus = testStatus; if (lastError !== undefined) updateData.lastError = lastError; if (lastErrorAt !== undefined) updateData.lastErrorAt = lastErrorAt; const updated = await updateProviderConnection(id, updateData); // Hide sensitive fields const result = { ...updated }; delete result.apiKey; delete result.accessToken; delete result.refreshToken; delete result.idToken; return NextResponse.json({ connection: result }); } catch (error) { console.log("Error updating connection:", error); return NextResponse.json({ error: "Failed to update connection" }, { status: 500 }); } } // DELETE /api/providers/[id] - Delete connection export async function DELETE(request, { params }) { try { const { id } = await params; const deleted = await deleteProviderConnection(id); if (!deleted) { return NextResponse.json({ error: "Connection not found" }, { status: 404 }); } return NextResponse.json({ message: "Connection deleted successfully" }); } catch (error) { console.log("Error deleting connection:", error); return NextResponse.json({ error: "Failed to delete connection" }, { status: 500 }); } }