Skip to content

Commit 9606b10

Browse files
committed
✨ feat: Room 생성, 수정, 삭제에 대한 이벤트 리스너 추가
- 이벤트 타입 정의 enum 추가 - 이벤트 전달 객체 추가(RoomCreatedEvent, RoomUpdatedEvent, RoomDeletedEvent)
1 parent dab4a28 commit 9606b10

File tree

6 files changed

+94
-0
lines changed

6 files changed

+94
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.f1.backend.domain.game.event;
2+
3+
import io.f1.backend.domain.game.model.Room;
4+
import io.f1.backend.domain.quiz.entity.Quiz;
5+
6+
public record RoomCreatedEvent(Room room, Quiz quiz) {
7+
}
8+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package io.f1.backend.domain.game.event;
2+
3+
public record RoomDeletedEvent(Long roomId) {
4+
}
5+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.f1.backend.domain.game.event;
2+
3+
import io.f1.backend.domain.game.model.Room;
4+
import io.f1.backend.domain.quiz.entity.Quiz;
5+
6+
public record RoomUpdatedEvent(Room room, Quiz quiz) {
7+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package io.f1.backend.domain.game.sse.listener;
2+
3+
import io.f1.backend.domain.game.event.RoomCreatedEvent;
4+
import io.f1.backend.domain.game.sse.app.SseService;
5+
import io.f1.backend.domain.game.sse.dto.LobbySseEvent;
6+
import io.f1.backend.domain.game.sse.dto.RoomCreatedPayload;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.context.event.EventListener;
9+
import org.springframework.scheduling.annotation.Async;
10+
import org.springframework.stereotype.Component;
11+
12+
import static io.f1.backend.domain.game.sse.mapper.SseMapper.*;
13+
14+
@Component
15+
@RequiredArgsConstructor
16+
public class RoomCreatedEventListener {
17+
18+
private final SseService sseService;
19+
20+
@Async
21+
@EventListener
22+
public void roomCreate(RoomCreatedEvent event) {
23+
LobbySseEvent<RoomCreatedPayload> sseEvent = fromRoomCreated(event);
24+
sseService.notifyLobbyUpdate(sseEvent);
25+
}
26+
27+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.f1.backend.domain.game.sse.listener;
2+
3+
import io.f1.backend.domain.game.event.RoomDeletedEvent;
4+
import io.f1.backend.domain.game.sse.app.SseService;
5+
import io.f1.backend.domain.game.sse.dto.LobbySseEvent;
6+
import io.f1.backend.domain.game.sse.dto.RoomDeletedPayload;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.context.event.EventListener;
9+
import org.springframework.scheduling.annotation.Async;
10+
11+
import static io.f1.backend.domain.game.sse.mapper.SseMapper.*;
12+
13+
@RequiredArgsConstructor
14+
public class RoomDeletedEventListener {
15+
16+
private final SseService sseService;
17+
18+
@Async
19+
@EventListener
20+
public void roomDelete(RoomDeletedEvent event) {
21+
LobbySseEvent<RoomDeletedPayload> sseEvent = fromRoomDeleted(event);
22+
sseService.notifyLobbyUpdate(sseEvent);
23+
}
24+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.f1.backend.domain.game.sse.listener;
2+
3+
import io.f1.backend.domain.game.event.RoomUpdatedEvent;
4+
import io.f1.backend.domain.game.sse.app.SseService;
5+
import io.f1.backend.domain.game.sse.dto.LobbySseEvent;
6+
import io.f1.backend.domain.game.sse.dto.RoomUpdatedPayload;
7+
import io.f1.backend.domain.game.sse.mapper.SseMapper;
8+
import lombok.RequiredArgsConstructor;
9+
import org.springframework.context.event.EventListener;
10+
import org.springframework.scheduling.annotation.Async;
11+
12+
@RequiredArgsConstructor
13+
public class RoomUpdatedEventListener {
14+
15+
private final SseService sseService;
16+
17+
@Async
18+
@EventListener
19+
public void roomUpdate(RoomUpdatedEvent event) {
20+
LobbySseEvent<RoomUpdatedPayload> sseEvent = SseMapper.fromRoomUpdated(event);
21+
sseService.notifyLobbyUpdate(sseEvent);
22+
}
23+
}

0 commit comments

Comments
 (0)