Skip to content

Commit 938f205

Browse files
committed
✨ quiz api 적용
1 parent 97d5ce4 commit 938f205

File tree

4 files changed

+40
-24
lines changed

4 files changed

+40
-24
lines changed

backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.f1.backend.domain.game.app;
22

3+
import static io.f1.backend.domain.game.mapper.RoomMapper.toGameSetting;
34
import static io.f1.backend.domain.game.mapper.RoomMapper.toGameSettingResponse;
45
import static io.f1.backend.domain.game.mapper.RoomMapper.toPlayerListResponse;
56
import static io.f1.backend.domain.game.mapper.RoomMapper.toRoomResponse;
@@ -49,10 +50,13 @@ public class RoomService {
4950

5051
public RoomCreateResponse saveRoom(RoomCreateRequest request) {
5152

52-
// todo 제일 작은 index quizId 가져와서 gameSetting(round 설정)
53-
GameSetting gameSetting = new GameSetting(1L, 10, 60);
53+
Long minQuizId = quizService.getQuizMinId();
54+
Quiz quiz = quizService.getQuizById(minQuizId);
55+
56+
GameSetting gameSetting = toGameSetting(quiz);
5457

5558
Player host = createPlayer();
59+
5660
RoomSetting roomSetting = toRoomSetting(request);
5761

5862
Long newId = roomIdGenerator.incrementAndGet();
@@ -61,9 +65,6 @@ public RoomCreateResponse saveRoom(RoomCreateRequest request) {
6165

6266
roomRepository.saveRoom(room);
6367

64-
Long quizId = room.getGameSetting().getQuizId();
65-
Quiz quiz = quizService.getQuizById(quizId);
66-
6768
eventPublisher.publishEvent(new RoomCreatedEvent(room, quiz));
6869

6970
return new RoomCreateResponse(newId);
@@ -108,9 +109,9 @@ public RoomInitialData enterRoom(Long roomId, String sessionId) {
108109

109110
RoomSettingResponse roomSettingResponse = toRoomSettingResponse(room);
110111

111-
// todo quiz 생성 api 완성 후 수정
112-
QuizResponse quiz =
113-
new QuizResponse(room.getGameSetting().getQuizId(), "title", "설명", "url", 10);
112+
Long quizId = room.getGameSetting().getQuizId();
113+
Quiz quiz = quizService.getQuizById(quizId);
114+
114115
GameSettingResponse gameSettingResponse =
115116
toGameSettingResponse(room.getGameSetting(), quiz);
116117

backend/src/main/java/io/f1/backend/domain/game/mapper/RoomMapper.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,17 @@
1616

1717
public class RoomMapper {
1818

19+
private static final int DEFAULT_TIME_LIMIT = 60;
20+
1921
public static RoomSetting toRoomSetting(RoomCreateRequest request) {
2022
return new RoomSetting(
2123
request.roomName(), request.maxUserCount(), request.locked(), request.password());
2224
}
2325

26+
public static GameSetting toGameSetting(Quiz quiz) {
27+
return new GameSetting(quiz.getId(), quiz.getQuestions().size(), DEFAULT_TIME_LIMIT);
28+
}
29+
2430
public static RoomSettingResponse toRoomSettingResponse(Room room) {
2531
return new RoomSettingResponse(
2632
room.getRoomSetting().roomName(),
@@ -29,8 +35,8 @@ public static RoomSettingResponse toRoomSettingResponse(Room room) {
2935
}
3036

3137
public static GameSettingResponse toGameSettingResponse(
32-
GameSetting gameSetting, QuizResponse quiz) {
33-
return new GameSettingResponse(gameSetting.getRound(), gameSetting.getTimeLimit(), quiz);
38+
GameSetting gameSetting, Quiz quiz) {
39+
return new GameSettingResponse(gameSetting.getRound(), gameSetting.getTimeLimit(), toQuizResponse(quiz));
3440
}
3541

3642
public static PlayerListResponse toPlayerListResponse(Room room) {
@@ -56,4 +62,8 @@ public static RoomResponse toRoomResponse(Room room, Quiz quiz) {
5662
quiz.getQuestions().size(),
5763
quiz.getThumbnailUrl());
5864
}
65+
66+
public static QuizResponse toQuizResponse(Quiz quiz) {
67+
return new QuizResponse(quiz.getId(), quiz.getTitle(), quiz.getDescription(), quiz.getThumbnailUrl(), quiz.getQuestions().size());
68+
}
5969
}

backend/src/main/java/io/f1/backend/domain/quiz/app/QuizService.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,16 @@
1111
import io.f1.backend.domain.quiz.entity.Quiz;
1212
import io.f1.backend.domain.user.dao.UserRepository;
1313
import io.f1.backend.domain.user.entity.User;
14-
15-
import lombok.RequiredArgsConstructor;
16-
17-
import org.springframework.beans.factory.annotation.Value;
18-
import org.springframework.stereotype.Service;
19-
import org.springframework.transaction.annotation.Transactional;
20-
import org.springframework.web.multipart.MultipartFile;
21-
2214
import java.io.IOException;
2315
import java.nio.file.Path;
2416
import java.nio.file.Paths;
2517
import java.util.List;
2618
import java.util.UUID;
19+
import lombok.RequiredArgsConstructor;
20+
import org.springframework.beans.factory.annotation.Value;
21+
import org.springframework.stereotype.Service;
22+
import org.springframework.transaction.annotation.Transactional;
23+
import org.springframework.web.multipart.MultipartFile;
2724

2825
@Service
2926
@RequiredArgsConstructor
@@ -42,7 +39,7 @@ public class QuizService {
4239

4340
@Transactional
4441
public QuizCreateResponse saveQuiz(MultipartFile thumbnailFile, QuizCreateRequest request)
45-
throws IOException {
42+
throws IOException {
4643
String thumbnailPath = defaultThumbnailPath;
4744

4845
if (thumbnailFile != null && !thumbnailFile.isEmpty()) {
@@ -94,7 +91,11 @@ private String getExtension(String filename) {
9491

9592
public Quiz getQuizById(Long quizId) {
9693
return quizRepository
97-
.findById(quizId)
98-
.orElseThrow(() -> new RuntimeException("E404002: 존재하지 않는 퀴즈입니다."));
94+
.findById(quizId)
95+
.orElseThrow(() -> new RuntimeException("E404002: 존재하지 않는 퀴즈입니다."));
96+
}
97+
98+
public Long getQuizMinId() {
99+
return quizRepository.getQuizMinId();
99100
}
100-
}
101+
}
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package io.f1.backend.domain.quiz.dao;
22

33
import io.f1.backend.domain.quiz.entity.Quiz;
4-
54
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.data.jpa.repository.Query;
6+
7+
public interface QuizRepository extends JpaRepository<Quiz, Long> {
68

7-
public interface QuizRepository extends JpaRepository<Quiz, Long> {}
9+
@Query("SELECT MIN(q.id) FROM Quiz q")
10+
Long getQuizMinId();
11+
}

0 commit comments

Comments
 (0)