UNPKG

skailan-crm

Version:

Servicio de CRM y gestión de ventas para Skailan

52 lines 2.3 kB
import { Competitor } from "../../../domain/entities/Competitor"; export class CompetitorPrismaRepository { prisma; constructor(prisma) { this.prisma = prisma; } async findById(id, organizationId) { const competitorData = await this.prisma.competitor.findUnique({ where: { id, organizationId }, }); return competitorData ? new Competitor(competitorData.id, competitorData.organizationId, competitorData.name, competitorData.notes, competitorData.createdAt, competitorData.updatedAt) : null; } async findByName(name, organizationId) { const competitorData = await this.prisma.competitor.findUnique({ where: { organizationId_name: { organizationId, name } }, }); return competitorData ? new Competitor(competitorData.id, competitorData.organizationId, competitorData.name, competitorData.notes, competitorData.createdAt, competitorData.updatedAt) : null; } async findAll(organizationId) { const competitorsData = await this.prisma.competitor.findMany({ where: { organizationId }, }); return competitorsData.map((competitorData) => new Competitor(competitorData.id, competitorData.organizationId, competitorData.name, competitorData.notes, competitorData.createdAt, competitorData.updatedAt)); } async save(competitor) { const savedCompetitor = await this.prisma.competitor.upsert({ where: { id: competitor.id }, update: { name: competitor.name, notes: competitor.notes, updatedAt: new Date(), }, create: { id: competitor.id, organizationId: competitor.organizationId, name: competitor.name, notes: competitor.notes, }, }); return new Competitor(savedCompetitor.id, savedCompetitor.organizationId, savedCompetitor.name, savedCompetitor.notes, savedCompetitor.createdAt, savedCompetitor.updatedAt); } async delete(id, organizationId) { await this.prisma.competitor.delete({ where: { id, organizationId }, }); } } //# sourceMappingURL=CompetitorPrismaRepository.js.map