skailan-ai
Version:
Servicio de IA y procesamiento de lenguaje natural para Skailan
144 lines • 5.74 kB
JavaScript
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