Skip to content

Commit 0736f72

Browse files
authored
Merge pull request #98 from Team-Wable/feat/#94
[FEAT] get quiz api
2 parents 3ad9c68 + 23fd971 commit 0736f72

7 files changed

Lines changed: 131 additions & 3 deletions

File tree

WableServer/src/main/java/com/wable/www/WableServer/api/curation/repository/CurationRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.util.List;
1010

1111
public interface CurationRepository extends JpaRepository<Curation, Long> {
12-
Curation findCurationById(Long curaitonId);
12+
Curation findCurationById(Long curationId);
1313

1414
@Query("SELECT c FROM Curation c WHERE c.id < :lastCurationId ORDER BY c.createdAt DESC")
1515
Slice<Curation> findCurationsByNextPage(Long lastCurationId, PageRequest pageRequest);
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.wable.www.WableServer.api.quiz.controller;
2+
3+
import com.wable.www.WableServer.api.quiz.dto.response.QuizGetResponseDto;
4+
import com.wable.www.WableServer.api.quiz.service.QuizQueryService;
5+
import com.wable.www.WableServer.common.response.ApiResponse;
6+
import io.swagger.v3.oas.annotations.Operation;
7+
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
8+
import io.swagger.v3.oas.annotations.tags.Tag;
9+
import lombok.RequiredArgsConstructor;
10+
import org.springframework.http.ResponseEntity;
11+
import org.springframework.web.bind.annotation.GetMapping;
12+
import org.springframework.web.bind.annotation.RequestMapping;
13+
import org.springframework.web.bind.annotation.RestController;
14+
15+
import java.security.Principal;
16+
17+
import static com.wable.www.WableServer.common.response.SuccessStatus.*;
18+
19+
@RestController
20+
@RequestMapping("/api/")
21+
@RequiredArgsConstructor
22+
@SecurityRequirement(name = "JWT Auth")
23+
@Tag(name="퀴즈 관련",description = "Quiz Api Document")
24+
public class QuizController {
25+
private final QuizQueryService quizQueryService;
26+
27+
@GetMapping("v1/quiz")
28+
@Operation(summary = "퀴즈 조회 API 입니다.",description = "Quiz Get")
29+
public ResponseEntity<ApiResponse<QuizGetResponseDto>> getQuiz(Principal principal) {
30+
return ApiResponse.success(GET_QUIZ_SUCCESS, quizQueryService.getQuiz());
31+
}
32+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.wable.www.WableServer.api.quiz.domain;
2+
3+
import com.wable.www.WableServer.common.entity.BaseTimeEntity;
4+
import jakarta.persistence.*;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
9+
import java.time.LocalDate;
10+
11+
import static lombok.AccessLevel.PROTECTED;
12+
13+
@Entity
14+
@Getter
15+
@NoArgsConstructor(access = PROTECTED)
16+
public class Quiz extends BaseTimeEntity {
17+
@Id
18+
@GeneratedValue(strategy = GenerationType.IDENTITY)
19+
private Long id;
20+
21+
@Column(name = "quiz_image")
22+
private String quizImage;
23+
24+
@Column(name = "quiz_text")
25+
private String quizText;
26+
27+
@Column(name = "quiz_answer")
28+
private Boolean quizAnswer;
29+
30+
@Column(name = "quiz_date")
31+
private LocalDate quizDate;
32+
33+
@Builder
34+
public Quiz(String quizImage, String quizText, Boolean quizAnswer, LocalDate quizDate) {
35+
this.quizImage = quizImage;
36+
this.quizText = quizText;
37+
this.quizAnswer = quizAnswer;
38+
this.quizDate = quizDate;
39+
}
40+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.wable.www.WableServer.api.quiz.dto.response;
2+
3+
import com.wable.www.WableServer.api.quiz.domain.Quiz;
4+
5+
public record QuizGetResponseDto(
6+
Long quizId,
7+
String quizImage,
8+
String quizText,
9+
Boolean quizAnswer
10+
) {
11+
public static QuizGetResponseDto of(Quiz quiz) {
12+
return new QuizGetResponseDto(
13+
quiz.getId(),
14+
quiz.getQuizImage(),
15+
quiz.getQuizText(),
16+
quiz.getQuizAnswer()
17+
);
18+
}
19+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.wable.www.WableServer.api.quiz.repository;
2+
3+
import com.wable.www.WableServer.api.quiz.domain.Quiz;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
import java.time.LocalDate;
7+
8+
public interface QuizRepository extends JpaRepository<Quiz,Long> {
9+
Quiz findQuizByQuizDate(LocalDate quizDate);
10+
11+
Quiz findQuizById(Long quizId);
12+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.wable.www.WableServer.api.quiz.service;
2+
3+
import com.wable.www.WableServer.api.quiz.dto.response.QuizGetResponseDto;
4+
import com.wable.www.WableServer.api.quiz.repository.QuizRepository;
5+
import lombok.RequiredArgsConstructor;
6+
import org.springframework.stereotype.Service;
7+
import org.springframework.transaction.annotation.Transactional;
8+
9+
import java.time.LocalDate;
10+
11+
@Service
12+
@RequiredArgsConstructor
13+
@Transactional(readOnly = true)
14+
public class QuizQueryService {
15+
private final QuizRepository quizRepository;
16+
17+
public QuizGetResponseDto getQuiz() {
18+
LocalDate today = LocalDate.now();
19+
return QuizGetResponseDto.of(quizRepository.findQuizByQuizDate(today));
20+
}
21+
}

WableServer/src/main/java/com/wable/www/WableServer/common/response/SuccessStatus.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,14 @@ public enum SuccessStatus {
8686
DELETE_VIEWIT_SUCCESS(HttpStatus.OK,"뷰잇 게시물 삭제 완료"),
8787
GET_VIEW_ALL_SUCCESS(HttpStatus.OK, "뷰잇 목록 조회 성공"),
8888
/**
89-
* Viewit
89+
* Curation
9090
*/
9191
GET_CURATION_ALL_SUCCESS(HttpStatus.OK, "큐레이션 목록 조회 성공"),
92-
GET_CURATION_NUMBER_SUCCESS(HttpStatus.OK, "최신 큐레이션 번호 조회 성공")
92+
GET_CURATION_NUMBER_SUCCESS(HttpStatus.OK, "최신 큐레이션 번호 조회 성공"),
93+
/**
94+
* Quiz
95+
*/
96+
GET_QUIZ_SUCCESS(HttpStatus.OK, "퀴즈 조회 성공")
9397
;
9498

9599
private final HttpStatus httpStatus;

0 commit comments

Comments
 (0)