skailan-conversations
Version:
Servicio de conversaciones y mensajería para Skailan
67 lines • 3.19 kB
JavaScript
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