Spaces:
Runtime error
Runtime error
| /** | |
| * API: Model-Combo Mappings (#563) | |
| * GET — List all mappings | |
| * POST — Create a new mapping | |
| */ | |
| import { z } from "zod"; | |
| import { NextResponse } from "next/server"; | |
| import { requireManagementAuth } from "@/lib/api/requireManagementAuth"; | |
| import { getModelComboMappings, createModelComboMapping } from "@/lib/localDb"; | |
| import { validateBody, isValidationFailure } from "@/shared/validation/helpers"; | |
| const createMappingSchema = z.object({ | |
| pattern: z.string().min(1, "Pattern is required").max(500), | |
| comboId: z.string().min(1, "ComboId is required"), | |
| priority: z.number().int().optional().default(0), | |
| enabled: z.boolean().optional().default(true), | |
| description: z.string().max(1000).optional().default(""), | |
| }); | |
| export async function GET(request: Request) { | |
| const authError = await requireManagementAuth(request); | |
| if (authError) return authError; | |
| try { | |
| const mappings = await getModelComboMappings(); | |
| return NextResponse.json({ mappings }); | |
| } catch (error: any) { | |
| console.error("Failed to list model-combo mappings:", error); | |
| return NextResponse.json({ error: "Failed to list model-combo mappings" }, { status: 500 }); | |
| } | |
| } | |
| export async function POST(request: Request) { | |
| const authError = await requireManagementAuth(request); | |
| if (authError) return authError; | |
| try { | |
| const rawBody = await request.json(); | |
| const validation = validateBody(createMappingSchema, rawBody); | |
| if (isValidationFailure(validation)) { | |
| return NextResponse.json({ error: validation.error }, { status: 400 }); | |
| } | |
| const { data } = validation; | |
| const mapping = await createModelComboMapping({ | |
| pattern: data.pattern.trim(), | |
| comboId: data.comboId, | |
| priority: data.priority, | |
| enabled: data.enabled, | |
| description: data.description, | |
| }); | |
| return NextResponse.json({ mapping }, { status: 201 }); | |
| } catch (error: any) { | |
| console.error("Failed to create model-combo mapping:", error); | |
| return NextResponse.json({ error: "Failed to create model-combo mapping" }, { status: 500 }); | |
| } | |
| } | |