diff --git a/controllers/chatController.js b/controllers/chatController.js index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4c61e515f0748955dc020a4e21f4441ffcf7ffe5 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