skailan-ai
Version:
Servicio de IA y procesamiento de lenguaje natural para Skailan
52 lines • 2.37 kB
JavaScript
import { Prompt } from '../../../domain/entities/Prompt';
export class PromptPrismaRepository {
prisma;
constructor(prisma) {
this.prisma = prisma;
}
async findById(id, organizationId) {
const promptData = await this.prisma.prompt.findUnique({
where: { id, organizationId },
});
return promptData ? new Prompt(promptData.id, promptData.organizationId, promptData.name, promptData.description, promptData.template, promptData.type, promptData.createdAt, promptData.updatedAt) : null;
}
async findByName(name, organizationId) {
const promptData = await this.prisma.prompt.findFirst({
where: { name, organizationId },
});
return promptData ? new Prompt(promptData.id, promptData.organizationId, promptData.name, promptData.description, promptData.template, promptData.type, promptData.createdAt, promptData.updatedAt) : null;
}
async findAll(organizationId) {
const promptsData = await this.prisma.prompt.findMany({
where: { organizationId },
});
return promptsData.map(promptData => new Prompt(promptData.id, promptData.organizationId, promptData.name, promptData.description, promptData.template, promptData.type, promptData.createdAt, promptData.updatedAt));
}
async save(prompt) {
const savedPrompt = await this.prisma.prompt.upsert({
where: { id: prompt.id },
update: {
name: prompt.name,
description: prompt.description,
template: prompt.template,
type: prompt.type,
updatedAt: new Date(),
},
create: {
id: prompt.id,
organizationId: prompt.organizationId,
name: prompt.name,
description: prompt.description,
template: prompt.template,
type: prompt.type,
},
});
return new Prompt(savedPrompt.id, savedPrompt.organizationId, savedPrompt.name, savedPrompt.description, savedPrompt.template, savedPrompt.type, savedPrompt.createdAt, savedPrompt.updatedAt);
}
async delete(id, organizationId) {
await this.prisma.prompt.delete({
where: { id, organizationId },
});
}
}
//# sourceMappingURL=PromptPrismaRepository.js.map