UNPKG

skailan-ai

Version:

Servicio de IA y procesamiento de lenguaje natural para Skailan

144 lines 5.74 kB
import { CreateLLMConfig } from '../../app/use-cases/CreateLLMConfig'; import { GetLLMConfigById } from '../../app/use-cases/GetLLMConfigById'; import { ListLLMConfigs } from '../../app/use-cases/ListLLMConfigs'; import { UpdateLLMConfig } from '../../app/use-cases/UpdateLLMConfig'; import { DeleteLLMConfig } from '../../app/use-cases/DeleteLLMConfig'; import { LLMConfigPrismaRepository } from '../../infra/database/prisma/LLMConfigPrismaRepository'; export const createLLMConfig = async (req, res) => { try { const { name, provider, model, apiKey, parameters, isActive } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const createLLMConfigUseCase = new CreateLLMConfig(llmConfigRepository); const newConfig = await createLLMConfigUseCase.execute({ organizationId, name, provider, model, apiKey, parameters, isActive, }); res.status(201).json(newConfig); } catch (error) { res.status(500).json({ error: error.message || 'Error creating LLM config.' }); } }; export const getLLMConfigById = async (req, res) => { try { const { id } = req.params; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } if (!id) { return res.status(400).json({ error: 'LLM Config ID not found in request.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const getLLMConfigByIdUseCase = new GetLLMConfigById(llmConfigRepository); const config = await getLLMConfigByIdUseCase.execute({ id, organizationId, }); if (!config) { return res.status(404).json({ error: 'LLMConfig not found.' }); } res.status(200).json(config); } catch (error) { res.status(500).json({ error: error.message || 'Error retrieving LLM config.' }); } }; export const listLLMConfigs = async (req, res) => { try { const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const listLLMConfigsUseCase = new ListLLMConfigs(llmConfigRepository); const configs = await listLLMConfigsUseCase.execute({ organizationId, }); res.status(200).json(configs); } catch (error) { res.status(500).json({ error: error.message || 'Error listing LLM configs.' }); } }; export const updateLLMConfig = async (req, res) => { try { const { id } = req.params; const { name, provider, model, apiKey, parameters, isActive } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } if (!id) { return res.status(400).json({ error: 'LLM Config ID not found in request.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const updateLLMConfigUseCase = new UpdateLLMConfig(llmConfigRepository); const updatedConfig = await updateLLMConfigUseCase.execute({ id, organizationId, name, provider, model, apiKey, parameters, isActive, }); res.status(200).json(updatedConfig); } catch (error) { res.status(500).json({ error: error.message || 'Error updating LLM config.' }); } }; export const deleteLLMConfig = async (req, res) => { try { const { id } = req.params; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } if (!id) { return res.status(400).json({ error: 'LLM Config ID not found in request.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const llmConfigRepository = new LLMConfigPrismaRepository(prisma); const deleteLLMConfigUseCase = new DeleteLLMConfig(llmConfigRepository); await deleteLLMConfigUseCase.execute({ id, organizationId, }); res.status(204).send(); } catch (error) { res.status(500).json({ error: error.message || 'Error deleting LLM config.' }); } }; //# sourceMappingURL=llmConfigController.js.map