skailan-ai
Version:
Servicio de IA y procesamiento de lenguaje natural para Skailan
56 lines • 2.93 kB
JavaScript
import { LLMConfig } from '../../../domain/entities/LLMConfig';
export class LLMConfigPrismaRepository {
prisma;
constructor(prisma) {
this.prisma = prisma;
}
async findById(id, organizationId) {
const llmConfigData = await this.prisma.lLMConfig.findUnique({
where: { id, organizationId },
});
return llmConfigData ? new LLMConfig(llmConfigData.id, llmConfigData.organizationId, llmConfigData.name, llmConfigData.provider, llmConfigData.model, llmConfigData.apiKey, llmConfigData.parameters, llmConfigData.isActive, llmConfigData.createdAt, llmConfigData.updatedAt) : null;
}
async findByName(name, organizationId) {
const llmConfigData = await this.prisma.lLMConfig.findFirst({
where: { name, organizationId },
});
return llmConfigData ? new LLMConfig(llmConfigData.id, llmConfigData.organizationId, llmConfigData.name, llmConfigData.provider, llmConfigData.model, llmConfigData.apiKey, llmConfigData.parameters, llmConfigData.isActive, llmConfigData.createdAt, llmConfigData.updatedAt) : null;
}
async findAll(organizationId) {
const llmConfigsData = await this.prisma.lLMConfig.findMany({
where: { organizationId },
});
return llmConfigsData.map(llmConfigData => new LLMConfig(llmConfigData.id, llmConfigData.organizationId, llmConfigData.name, llmConfigData.provider, llmConfigData.model, llmConfigData.apiKey, llmConfigData.parameters, llmConfigData.isActive, llmConfigData.createdAt, llmConfigData.updatedAt));
}
async save(llmConfig) {
const savedLLMConfig = await this.prisma.lLMConfig.upsert({
where: { id: llmConfig.id },
update: {
name: llmConfig.name,
provider: llmConfig.provider,
model: llmConfig.model,
apiKey: llmConfig.apiKey,
parameters: llmConfig.parameters,
isActive: llmConfig.isActive,
updatedAt: new Date(),
},
create: {
id: llmConfig.id,
organizationId: llmConfig.organizationId,
name: llmConfig.name,
provider: llmConfig.provider,
model: llmConfig.model,
apiKey: llmConfig.apiKey,
parameters: llmConfig.parameters,
isActive: llmConfig.isActive,
},
});
return new LLMConfig(savedLLMConfig.id, savedLLMConfig.organizationId, savedLLMConfig.name, savedLLMConfig.provider, savedLLMConfig.model, savedLLMConfig.apiKey, savedLLMConfig.parameters, savedLLMConfig.isActive, savedLLMConfig.createdAt, savedLLMConfig.updatedAt);
}
async delete(id, organizationId) {
await this.prisma.lLMConfig.delete({
where: { id, organizationId },
});
}
}
//# sourceMappingURL=LLMConfigPrismaRepository.js.map