diff --git a/src/app/api/config/route.ts b/src/app/api/config/route.ts index 184155e..9a45e8e 100644 --- a/src/app/api/config/route.ts +++ b/src/app/api/config/route.ts @@ -2,6 +2,11 @@ import configManager from '@/lib/config'; import ModelRegistry from '@/lib/models/registry'; import { NextRequest, NextResponse } from 'next/server'; +type SaveConfigBody = { + key: string; + value: string; +}; + export const GET = async (req: NextRequest) => { try { const values = configManager.currentConfig; @@ -11,19 +16,53 @@ export const GET = async (req: NextRequest) => { const modelProviders = await modelRegistry.getActiveProviders(); values.modelProviders = values.modelProviders.map((mp) => { - const activeProvider = modelProviders.find((p) => p.id === mp.id) + const activeProvider = modelProviders.find((p) => p.id === mp.id); return { ...mp, chatModels: activeProvider?.chatModels ?? mp.chatModels, - embeddingModels: activeProvider?.embeddingModels ?? mp.embeddingModels - } - }) + embeddingModels: activeProvider?.embeddingModels ?? mp.embeddingModels, + }; + }); return NextResponse.json({ values, fields, - }) + }); + } catch (err) { + console.error('Error in getting config: ', err); + return Response.json( + { message: 'An error has occurred.' }, + { status: 500 }, + ); + } +}; + +export const POST = async (req: NextRequest) => { + try { + const body: SaveConfigBody = await req.json(); + + if (!body.key || !body.value) { + return Response.json( + { + message: 'Key and value are required.', + }, + { + status: 400, + }, + ); + } + + configManager.updateConfig(body.key, body.value); + + return Response.json( + { + message: 'Config updated successfully.', + }, + { + status: 200, + }, + ); } catch (err) { console.error('Error in getting config: ', err); return Response.json(