UNPKG

skailan-conversations

Version:

Servicio de conversaciones y mensajería para Skailan

67 lines 3.19 kB
import { Conversation } from "../../../domain/entities/Conversation"; export class ConversationPrismaRepository { prisma; constructor(prisma) { this.prisma = prisma; } async findById(id, organizationId) { const conversationData = await this.prisma.conversation.findUnique({ where: { id }, }); if (!conversationData) { return null; } return new Conversation(conversationData.id, conversationData.organizationId, conversationData.channelId, conversationData.contactId, conversationData.status, conversationData.assignedToUserId, conversationData.lastMessageAt, conversationData.createdAt, conversationData.updatedAt); } async findAll(organizationId, channelId, contactId, status, assignedToUserId) { const where = { organizationId }; if (channelId) { where.channelId = channelId; } if (contactId) { where.contactId = contactId; } if (status) { where.status = status; } if (assignedToUserId) { where.assignedToUserId = assignedToUserId; } const conversationsData = await this.prisma.conversation.findMany({ where, }); return conversationsData.map((conversationData) => new Conversation(conversationData.id, conversationData.organizationId, conversationData.channelId, conversationData.contactId, conversationData.status, conversationData.assignedToUserId, conversationData.lastMessageAt, conversationData.createdAt, conversationData.updatedAt)); } async save(conversation) { const savedConversation = await this.prisma.conversation.upsert({ where: { id: conversation.id }, update: { organizationId: conversation.organizationId, channelId: conversation.channelId, contactId: conversation.contactId, status: conversation.status, assignedToUserId: conversation.assignedToUserId, lastMessageAt: conversation.lastMessageAt, updatedAt: conversation.updatedAt, }, create: { id: conversation.id, organizationId: conversation.organizationId, channelId: conversation.channelId, contactId: conversation.contactId, status: conversation.status, assignedToUserId: conversation.assignedToUserId, lastMessageAt: conversation.lastMessageAt, createdAt: conversation.createdAt, updatedAt: conversation.updatedAt, }, }); return new Conversation(savedConversation.id, savedConversation.organizationId, savedConversation.channelId, savedConversation.contactId, savedConversation.status, savedConversation.assignedToUserId, savedConversation.lastMessageAt, savedConversation.createdAt, savedConversation.updatedAt); } async delete(id, organizationId) { await this.prisma.conversation.delete({ where: { id }, }); } } //# sourceMappingURL=ConversationPrismaRepository.js.map