From 86244f8d606881dc1e3da68974b3b8af645427e4 Mon Sep 17 00:00:00 2001 From: minyeong <106754293+miinyeong@users.noreply.github.com> Date: Tue, 14 Nov 2023 18:55:07 +0900 Subject: [PATCH] =?UTF-8?q?[#72]Feat:=20=ED=80=B4=EC=A6=88=20create=20API?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/quiz/QuizController.java | 24 +++++++++++ .../onestep/server/entity/quiz/QuizDTO.java | 37 ++++++++++++++++ .../server/entity/quiz/QuizRequestDTO.java | 21 ++++++++++ .../server/repository/IQuizRepository.java | 8 ++++ .../server/service/quiz/QuizService.java | 42 +++++++++++++++++++ 5 files changed, 132 insertions(+) create mode 100644 src/main/java/com/onestep/server/controller/quiz/QuizController.java create mode 100644 src/main/java/com/onestep/server/entity/quiz/QuizDTO.java create mode 100644 src/main/java/com/onestep/server/entity/quiz/QuizRequestDTO.java create mode 100644 src/main/java/com/onestep/server/repository/IQuizRepository.java create mode 100644 src/main/java/com/onestep/server/service/quiz/QuizService.java diff --git a/src/main/java/com/onestep/server/controller/quiz/QuizController.java b/src/main/java/com/onestep/server/controller/quiz/QuizController.java new file mode 100644 index 0000000..41a39d0 --- /dev/null +++ b/src/main/java/com/onestep/server/controller/quiz/QuizController.java @@ -0,0 +1,24 @@ +package com.onestep.server.controller.quiz; + +import com.onestep.server.entity.Quiz; +import com.onestep.server.entity.quiz.QuizDTO; +import com.onestep.server.entity.quiz.QuizRequestDTO; +import com.onestep.server.service.quiz.QuizService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@Slf4j +public class QuizController { + + private final QuizService quizService; + @PostMapping(value = "/quiz/create") + public String writeQuiz(@RequestBody QuizRequestDTO quizRequestDTO){ + quizService.writeQuiz(quizRequestDTO); + return quizRequestDTO.getUser_id()+"님이 작성한 퀴즈가 등록되었습니다."; + } +} diff --git a/src/main/java/com/onestep/server/entity/quiz/QuizDTO.java b/src/main/java/com/onestep/server/entity/quiz/QuizDTO.java new file mode 100644 index 0000000..590ac39 --- /dev/null +++ b/src/main/java/com/onestep/server/entity/quiz/QuizDTO.java @@ -0,0 +1,37 @@ +package com.onestep.server.entity.quiz; + +import com.onestep.server.entity.Quiz; +import com.onestep.server.entity.User; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +@NoArgsConstructor +public class QuizDTO { + + private User user; + private String quiz_txt; + private String answer1; + private String answer2; + private String answer3; + private String answer4; + private Integer quiz_ans; + private Date write_date; + + public Quiz toEntity(){ + return Quiz.builder() + .quiz_id(null) + .user(user) + .quiz_txt(quiz_txt) + .answer1(answer1) + .answer2(answer2) + .answer3(answer3) + .answer4(answer4) + .quiz_ans(quiz_ans) + .write_date(write_date).build(); + } +} diff --git a/src/main/java/com/onestep/server/entity/quiz/QuizRequestDTO.java b/src/main/java/com/onestep/server/entity/quiz/QuizRequestDTO.java new file mode 100644 index 0000000..36fd9fa --- /dev/null +++ b/src/main/java/com/onestep/server/entity/quiz/QuizRequestDTO.java @@ -0,0 +1,21 @@ +package com.onestep.server.entity.quiz; + +import com.onestep.server.entity.User; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.Date; + +@Getter +@Setter +@NoArgsConstructor +public class QuizRequestDTO { + private String user_id; + private String quiz_txt; + private String answer1; + private String answer2; + private String answer3; + private String answer4; + private Integer quiz_ans; +} diff --git a/src/main/java/com/onestep/server/repository/IQuizRepository.java b/src/main/java/com/onestep/server/repository/IQuizRepository.java new file mode 100644 index 0000000..2e85941 --- /dev/null +++ b/src/main/java/com/onestep/server/repository/IQuizRepository.java @@ -0,0 +1,8 @@ +package com.onestep.server.repository; + +import com.onestep.server.entity.Quiz; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface IQuizRepository extends JpaRepository { + +} diff --git a/src/main/java/com/onestep/server/service/quiz/QuizService.java b/src/main/java/com/onestep/server/service/quiz/QuizService.java new file mode 100644 index 0000000..94d9db6 --- /dev/null +++ b/src/main/java/com/onestep/server/service/quiz/QuizService.java @@ -0,0 +1,42 @@ +package com.onestep.server.service.quiz; + +import com.onestep.server.entity.Quiz; +import com.onestep.server.entity.User; +import com.onestep.server.entity.quiz.QuizDTO; +import com.onestep.server.entity.quiz.QuizRequestDTO; +import com.onestep.server.repository.IQuizRepository; +import com.onestep.server.repository.IUserRepository; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.Optional; + +@Slf4j +@Service +@RequiredArgsConstructor +@Transactional +public class QuizService { + private final IQuizRepository iQuizRepository; + private final IUserRepository iUserRepository; + public Quiz writeQuiz(QuizRequestDTO quizRequestDTO){ + Optional optionalUser = iUserRepository.findById(quizRequestDTO.getUser_id()); + User user = optionalUser.get(); + + Date date = new Date(); + QuizDTO quizDTO = new QuizDTO(); + quizDTO.setUser(user); + quizDTO.setQuiz_txt(quizRequestDTO.getQuiz_txt()); + quizDTO.setAnswer1(quizRequestDTO.getAnswer1()); + quizDTO.setAnswer2(quizRequestDTO.getAnswer2()); + quizDTO.setAnswer3(quizRequestDTO.getAnswer3()); + quizDTO.setAnswer4(quizRequestDTO.getAnswer4()); + quizDTO.setQuiz_ans(quizRequestDTO.getQuiz_ans()); + quizDTO.setWrite_date(date); + + Quiz addQuiz = iQuizRepository.save(quizDTO.toEntity()); + return addQuiz; + } +}