Skip to content

Conversation

@blu3fishez
Copy link
Collaborator

@blu3fishez blu3fishez commented Nov 21, 2024

관련 이슈 번호

  • 작성자: 김찬우
  • 작성 날짜: 2024.11.21

✅ 체크리스트

  • 코드가 정상적으로 작동하는지 확인했습니다.
  • 주요 변경사항에 대한 설명을 작성했습니다.
  • 코드 스타일 가이드에 따라 코드를 작성했습니다.

🧩 작업 내용

  • /api/rooms 에서, 열려있는 세션이 없을 경우에 대한 예외처리
  • 세션 리스트 API 데이터 수정

📝 작업 상세 내역

지금은 열려있는 세션이 없는 경우 즉, map 객체가 null 일 경우에 Object.entries(redisMap)에서 오류가 발생하고 있습니다. 간단하게 > redisMap ?? [] 혹은 ?? {} 혹은 ?? new Map()으로 처리하면 될 것 같습니다.

아래와 같이 수정했고, 비어있을 때 불러올때 에러가 없고, 빈 객체를 반환하도록 하였습니다.

async getPublicRoom() {
        const rooms = await this.roomRepository.getAllRoom();

        Object.keys(rooms ?? {}).forEach((roomId) => {
            if (rooms[roomId].status === "PRIVATE") rooms[roomId] = undefined;
        });
        return rooms;
    }

세션 리스트 API 데이터 수정

  • 배열로 수정
  • 필요한 데이터들을 반환하도록 수정
  • 다만, 현재 당장 없는 기능은 모킹했음
    • 예시 : category : "프론트엔드", nickname : "방장", participants: 1
async getPublicRoom() {
        const rooms = await this.roomRepository.getAllRoom();
        const roomList = [];
        Object.entries(rooms).forEach(([roomId, roomData]) => {
            if (roomData.status === "PRIVATE") return;
            roomList.push({
                id: roomId,
                title: roomData.title,
                category: "프론트엔드",
                inProgress: false,
                host: {
                    nickname: "방장",
                    socketId: roomData.host,
                },
                participant: 1,
                maxParticipant: roomData.maxParticipants,
                createAt: roomData.createdAt,
            });
        });

        return roomList.sort((a, b) => b.createAt - a.createAt);
    }

📌 테스트 및 검증 결과

image

💬 다음 작업 또는 논의 사항

  • API 필요하신거 언제든 알려주세요
  • 성능 이슈는 이후 성능 진단부터 제대로 해본 이후로 하면 되니까 괜찮을 것 같습니다.

Copy link
Member

@ShipFriend0516 ShipFriend0516 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다. create_room 소켓 이벤트에 대해서 category 정보도 보낼 수 있도록 다음 스프린트에 해야할 것 같습니다.

@ShipFriend0516 ShipFriend0516 merged commit c2d3916 into dev Nov 21, 2024
@ShipFriend0516 ShipFriend0516 deleted the fix/study-session branch November 21, 2024 12:35
@blu3fishez
Copy link
Collaborator Author

고생하셨습니다. create_room 소켓 이벤트에 대해서 category 정보도 보낼 수 있도록 다음 스프린트에 해야할 것 같습니다.

그부분 관해서 말하고싶은게 있는데, 아예 웹소켓이벤트 네임스페이스 컨벤션도 전부 바꿔야할 것 같아요 예를들면 이렇게 말이죠!

{듣는대상}::{도메인}_{행위}

server::room_create
server::room_alert

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants