feat(app): add provider methods

This commit is contained in:
ItzCrazyKns
2025-10-18 15:06:00 +05:30
parent e02b9a5efc
commit 5a7f45cace
5 changed files with 447 additions and 3 deletions

View File

@@ -0,0 +1,94 @@
import ModelRegistry from '@/lib/models/registry';
import { Model } from '@/lib/models/types';
import { NextRequest } from 'next/server';
export const POST = async (
req: NextRequest,
{ params }: { params: Promise<{ id: string }> },
) => {
try {
const { id } = await params;
const body: Partial<Model> & { type: 'embedding' | 'chat' } =
await req.json();
if (!body.key || !body.name) {
return Response.json(
{
message: 'Key and name must be provided',
},
{
status: 400,
},
);
}
const registry = new ModelRegistry();
await registry.addProviderModel(id, body.type, body);
return Response.json(
{
message: 'Model added successfully',
},
{
status: 200,
},
);
} catch (err) {
console.error('An error occurred while adding provider model', err);
return Response.json(
{
message: 'An error has occurred.',
},
{
status: 500,
},
);
}
};
export const DELETE = async (
req: NextRequest,
{ params }: { params: Promise<{ id: string }> },
) => {
try {
const { id } = await params;
const body: { key: string; type: 'embedding' | 'chat' } = await req.json();
if (!body.key) {
return Response.json(
{
message: 'Key and name must be provided',
},
{
status: 400,
},
);
}
const registry = new ModelRegistry();
await registry.removeProviderModel(id, body.type, body.key);
return Response.json(
{
message: 'Model added successfully',
},
{
status: 200,
},
);
} catch (err) {
console.error('An error occurred while deleting provider model', err);
return Response.json(
{
message: 'An error has occurred.',
},
{
status: 500,
},
);
}
};

View File

@@ -0,0 +1,89 @@
import ModelRegistry from '@/lib/models/registry';
import { NextRequest } from 'next/server';
export const DELETE = async (
req: NextRequest,
{ params }: { params: Promise<{ id: string }> },
) => {
try {
const { id } = await params;
if (!id) {
return Response.json(
{
message: 'Provider ID is required.',
},
{
status: 400,
},
);
}
const registry = new ModelRegistry();
await registry.removeProvider(id);
return Response.json(
{
message: 'Provider deleted successfully.',
},
{
status: 200,
},
);
} catch (err: any) {
console.error('An error occurred while deleting provider', err.message);
return Response.json(
{
message: 'An error has occurred.',
},
{
status: 500,
},
);
}
};
export const PATCH = async (
req: NextRequest,
{ params }: { params: Promise<{ id: string }> },
) => {
try {
const body = await req.json();
const { name, config } = body;
const { id } = await params;
if (!id || !name || !config) {
return Response.json(
{
message: 'Missing required fields.',
},
{
status: 400,
},
);
}
const registry = new ModelRegistry();
const updatedProvider = await registry.updateProvider(id, name, config);
return Response.json(
{
provider: updatedProvider,
},
{
status: 200,
},
);
} catch (err: any) {
console.error('An error occurred while updating provider', err.message);
return Response.json(
{
message: 'An error has occurred.',
},
{
status: 500,
},
);
}
};

View File

@@ -1,4 +1,5 @@
import ModelRegistry from '@/lib/models/registry';
import { NextRequest } from 'next/server';
export const GET = async (req: Request) => {
try {
@@ -6,9 +7,13 @@ export const GET = async (req: Request) => {
const activeProviders = await registry.getActiveProviders();
const filteredProviders = activeProviders.filter((p) => {
return !p.chatModels.some((m) => m.key === 'error');
});
return Response.json(
{
providers: activeProviders,
providers: filteredProviders,
},
{
status: 200,
@@ -26,3 +31,44 @@ export const GET = async (req: Request) => {
);
}
};
export const POST = async (req: NextRequest) => {
try {
const body = await req.json();
const { type, name, config } = body;
if (!type || !name || !config) {
return Response.json(
{
message: 'Missing required fields.',
},
{
status: 400,
},
);
}
const registry = new ModelRegistry();
const newProvider = await registry.addProvider(type, name, config);
return Response.json(
{
provider: newProvider,
},
{
status: 200,
},
);
} catch (err) {
console.error('An error occurred while creating provider', err);
return Response.json(
{
message: 'An error has occurred.',
},
{
status: 500,
},
);
}
};