| import { NextResponse } from "next/server"; | |
| import { getAllFallbackChains, registerFallback, removeFallback } from "@/domain/fallbackPolicy"; | |
| import { registerFallbackSchema, removeFallbackSchema } from "@/shared/validation/schemas"; | |
| import { isValidationFailure, validateBody } from "@/shared/validation/helpers"; | |
| export async function GET() { | |
| try { | |
| const chains = getAllFallbackChains(); | |
| return NextResponse.json(chains); | |
| } catch (error) { | |
| console.error("Error fetching fallback chains:", error); | |
| return NextResponse.json({ error: "Failed to fetch fallback chains" }, { status: 500 }); | |
| } | |
| } | |
| export async function POST(request) { | |
| let rawBody; | |
| try { | |
| rawBody = await request.json(); | |
| } catch { | |
| return NextResponse.json( | |
| { | |
| error: { | |
| message: "Invalid request", | |
| details: [{ field: "body", message: "Invalid JSON body" }], | |
| }, | |
| }, | |
| { status: 400 } | |
| ); | |
| } | |
| try { | |
| const validation = validateBody(registerFallbackSchema, rawBody); | |
| if (isValidationFailure(validation)) { | |
| return NextResponse.json({ error: validation.error }, { status: 400 }); | |
| } | |
| const { model, chain } = validation.data; | |
| registerFallback(model, chain); | |
| return NextResponse.json({ success: true, model }); | |
| } catch (error) { | |
| console.error("Error registering fallback chain:", error); | |
| return NextResponse.json({ error: "Failed to register fallback chain" }, { status: 500 }); | |
| } | |
| } | |
| export async function DELETE(request) { | |
| let rawBody; | |
| try { | |
| rawBody = await request.json(); | |
| } catch { | |
| return NextResponse.json( | |
| { | |
| error: { | |
| message: "Invalid request", | |
| details: [{ field: "body", message: "Invalid JSON body" }], | |
| }, | |
| }, | |
| { status: 400 } | |
| ); | |
| } | |
| try { | |
| const validation = validateBody(removeFallbackSchema, rawBody); | |
| if (isValidationFailure(validation)) { | |
| return NextResponse.json({ error: validation.error }, { status: 400 }); | |
| } | |
| const { model } = validation.data; | |
| const removed = removeFallback(model); | |
| return NextResponse.json({ success: true, removed }); | |
| } catch (error) { | |
| console.error("Error removing fallback chain:", error); | |
| return NextResponse.json({ error: "Failed to remove fallback chain" }, { status: 500 }); | |
| } | |
| } | |