diff --git a/src/chat/service/chatroom.service.js b/src/chat/service/chatroom.service.js index ef8e260..74ff332 100644 --- a/src/chat/service/chatroom.service.js +++ b/src/chat/service/chatroom.service.js @@ -53,18 +53,23 @@ export const ChatroomService = { const chatrooms = await ChatroomRepository.findChatroomsByUser(dto.userId); - // thumbnail 한 번에 조회 - const commissionIds = chatrooms.map(r => r.commission.id); - const images = await CommissionRepository.findImagesByCommissionId(commissionIds); - const thumbnailMap = Object.fromEntries(images.map(img => [img.targetId.toString(), img.imageUrl])); + // 1. thumbnail 한 번에 조회 (BigInt 변환) + const commissionIds = chatrooms.map(r => BigInt(r.commission.id)); + const images = await CommissionRepository.findImagesByCommissionIds(commissionIds); + const thumbnailMap = Object.fromEntries( + images.map(img => [img.targetId.toString(), img.imageUrl]) + ); - // DTO 생성 + // 2. DTO 생성 const result = []; for (const room of chatrooms) { - room.commission.thumbnail = thumbnailMap[room.commission.id.toString()] || null; + room.commission.thumbnail = thumbnailMap[BigInt(room.commission.id).toString()] || null; - // 방마다 unreadCount 조회 - const unreadCount = await ChatRepository.countUnreadMessages(room.id, dto.accountId); + // 방마다 unreadCount 조회 (BigInt 변환) + const unreadCount = await ChatRepository.countUnreadMessages( + BigInt(room.id), + BigInt(dto.accountId) + ); result.push(new ChatroomListResponseDto(room, unreadCount)); } diff --git a/src/commission/repository/commission.repository.js b/src/commission/repository/commission.repository.js index 5f57517..8ae7f23 100644 --- a/src/commission/repository/commission.repository.js +++ b/src/commission/repository/commission.repository.js @@ -68,6 +68,16 @@ export const CommissionRepository = { }); }, + async findImagesByCommissionIds(commissionIds) { + return await prisma.image.findMany({ + where: { + target: 'commissions', + targetId: { in: commissionIds }, // 배열 처리 + }, + orderBy: { orderIndex: 'asc' }, + }); + }, + /** * 커미션 ID로 신청폼 조회 (작가 정보 포함) */