skailan-crm
Version:
Servicio de CRM y gestión de ventas para Skailan
52 lines • 2.3 kB
JavaScript
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