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