UNPKG

skailan-conversations

Version:

Servicio de conversaciones y mensajería para Skailan

116 lines 4.91 kB
import { AddTagToConversation } from "../../app/use-cases/AddTagToConversation"; import { RemoveTagFromConversation } from "../../app/use-cases/RemoveTagFromConversation"; import { ListTagsForConversation } from "../../app/use-cases/ListTagsForConversation"; import { ConversationTagPrismaRepository } from "../../infra/database/prisma/ConversationTagPrismaRepository"; import { ConversationPrismaRepository } from "../../infra/database/prisma/ConversationPrismaRepository"; import { TagPrismaRepository } from "../../infra/database/prisma/TagPrismaRepository"; export const addTagToConversation = async (req, res) => { try { const { conversationId } = req.params; if (!conversationId) { return res.status(400).json({ error: "Conversation ID is required." }); } const { tagId } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res .status(400) .json({ error: "Organization ID not found in request." }); } const prisma = req.tenantPrisma; if (!prisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const conversationTagRepository = new ConversationTagPrismaRepository(prisma); const conversationRepository = new ConversationPrismaRepository(prisma); const tagRepository = new TagPrismaRepository(prisma); const addTagToConversationUseCase = new AddTagToConversation(conversationTagRepository, conversationRepository, tagRepository); const newEntry = await addTagToConversationUseCase.execute({ organizationId, conversationId: conversationId, tagId: tagId, }); res.status(201).json(newEntry); } catch (error) { res .status(500) .json({ error: error.message || "Error adding tag to conversation." }); } }; export const removeTagFromConversation = async (req, res) => { try { const { conversationId, tagId } = req.params; if (!conversationId) { return res.status(400).json({ error: "Conversation ID is required." }); } if (!tagId) { return res.status(400).json({ error: "Tag ID is required." }); } const organizationId = req.organization?.id; if (!organizationId) { return res .status(400) .json({ error: "Organization ID not found in request." }); } const prisma = req.tenantPrisma; if (!prisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const conversationTagRepository = new ConversationTagPrismaRepository(prisma); const conversationRepository = new ConversationPrismaRepository(prisma); const removeTagFromConversationUseCase = new RemoveTagFromConversation(conversationTagRepository, conversationRepository); await removeTagFromConversationUseCase.execute({ organizationId, conversationId: conversationId, tagId: tagId, }); res.status(204).send(); } catch (error) { res .status(500) .json({ error: error.message || "Error removing tag from conversation.", }); } }; export const listTagsForConversation = async (req, res) => { try { const { conversationId } = req.params; if (!conversationId) { return res.status(400).json({ error: "Conversation ID is required." }); } const organizationId = req.organization?.id; if (!organizationId) { return res .status(400) .json({ error: "Organization ID not found in request." }); } const prisma = req.tenantPrisma; if (!prisma) { return res .status(500) .json({ error: "Prisma client not initialized for tenant." }); } const conversationTagRepository = new ConversationTagPrismaRepository(prisma); const conversationRepository = new ConversationPrismaRepository(prisma); const tagRepository = new TagPrismaRepository(prisma); const listTagsForConversationUseCase = new ListTagsForConversation(conversationTagRepository, conversationRepository, tagRepository); const tags = await listTagsForConversationUseCase.execute({ organizationId, conversationId: conversationId, }); res.status(200).json(tags); } catch (error) { res .status(500) .json({ error: error.message || "Error listing tags for conversation." }); } }; //# sourceMappingURL=conversationTagController.js.map