From 8300ebdc860a4e27a83a1e5b1bad4fbd00e0b6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=9E=AC=EC=97=BD?= <jysim0326@ajou.ac.kr> Date: Tue, 19 Nov 2024 18:16:14 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B1=84=ED=8C=85=20=EC=BB=A8=ED=8A=B8?= =?UTF-8?q?=EB=A1=A4=EB=9F=AC=20(#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/chatController.js | 105 ++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/controllers/chatController.js b/controllers/chatController.js index e69de29..4c61e51 100644 --- a/controllers/chatController.js +++ b/controllers/chatController.js @@ -0,0 +1,105 @@ +const chatService = require('../services/chatService'); + +// 내부용 채팅방 생성 +exports.createChatRoomInternal = async (params) => { + try { + return await chatService.createChatRoom(params); + } catch (err) { + console.error('Error in createChatRoomInternal:', err); + return { success: false, error: err.message }; + } +}; + +// 새 채팅방 생성 +exports.createChatRoom = async (req, res) => { + try { + const chatRoomId = await chatService.createChatRoom(); + res.json({ chatRoomId }); + } catch (err) { + console.error('Error creating room:', err); + res.status(500).json({ error: 'Failed to create room' }); + } +}; + +// 채팅방 목록 조회 +exports.getChatRooms = async (req, res) => { + try { + const roomData = await chatService.getChatRooms(); + res.json(roomData); + } catch (err) { + console.error('Error fetching rooms:', err); + res.status(500).json({ error: 'Failed to fetch rooms' }); + } +}; + +// 사용자 상태 업데이트 +exports.updateStatus = async (req, res) => { + const { chatRoomId, nickname, isOnline } = req.body; + try { + await chatService.updateStatus(chatRoomId, nickname, isOnline); + res.status(200).json({ message: 'User status updated successfully' }); + } catch (err) { + console.error('Error updating user status:', err); + res.status(500).json({ error: 'Failed to update user status' }); + } +}; + +// 읽음 상태 업데이트 +exports.updateReadStatus = async (req, res) => { + const { chatRoomId, nickname } = req.body; + try { + await chatService.updateReadStatus(chatRoomId, nickname); + res.status(200).json({ message: 'Read status updated' }); + } catch (err) { + console.error('Error updating read status:', err); + res.status(500).json({ error: 'Failed to update read status' }); + } +}; + +// 읽지 않은 메시지 조회 +exports.getUnreadMessages = async (req, res) => { + const { nickname } = req.params; + try { + const unreadMessages = await chatService.getUnreadMessages(nickname); + res.status(200).json(unreadMessages); + } catch (err) { + console.error('Error fetching unread messages:', err); + res.status(500).json({ error: 'Failed to fetch unread messages' }); + } +}; + +// 읽지 않은 메시지 수 조회 +exports.getUnreadCount = async (req, res) => { + const { chatRoomId } = req.params; + try { + const unreadCountMap = await chatService.getUnreadCount(chatRoomId); + res.status(200).json(unreadCountMap); + } catch (err) { + console.error('Error fetching unread counts:', err); + res.status(500).json({ error: 'Failed to fetch unread counts' }); + } +}; + +// 읽은 로그 ID 업데이트 +exports.updateReadLogId = async (req, res) => { + const { chatRoomId, nickname, logId } = req.body; + try { + await chatService.updateReadLogId(chatRoomId, nickname, logId); + res.status(200).json({ message: 'Last read logID updated' }); + } catch (err) { + console.error('Error updating last read logID:', err); + res.status(500).json({ error: 'Failed to update last read logID' }); + } +}; + +// 상태와 로그 ID 동시 업데이트 +exports.updateStatusAndLogId = async (req, res) => { + const { chatRoomId, nickname, isOnline, logId } = req.body; + try { + await chatService.updateStatusAndLogId(chatRoomId, nickname, isOnline, logId); + res.status(200).json({ message: 'User status and lastReadLogId updated successfully' }); + } catch (err) { + console.error('Error updating user status and lastReadLogId:', err); + res.status(500).json({ error: 'Failed to update user status and lastReadLogId' }); + } +}; \ No newline at end of file -- GitLab