From a0e4ea788a1c7305ce0a2a20e6188ded66634f7f Mon Sep 17 00:00:00 2001 From: thezz9 Date: Sat, 26 Jul 2025 19:23:42 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20dto=20=EB=B0=98=ED=99=98=20?= =?UTF-8?q?=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20N+1=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/submission/GroupedSubmissionResponse.java | 7 ++++++- .../response/submission/SubmissionDetailResponse.java | 4 ++++ .../domain/submission/model/entity/Submission.java | 9 +++++++-- .../submission/jpa/SubmissionJpaRepository.java | 4 +++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/ezcode/codetest/application/submission/dto/response/submission/GroupedSubmissionResponse.java b/src/main/java/org/ezcode/codetest/application/submission/dto/response/submission/GroupedSubmissionResponse.java index 7515bdea..8fb15d53 100644 --- a/src/main/java/org/ezcode/codetest/application/submission/dto/response/submission/GroupedSubmissionResponse.java +++ b/src/main/java/org/ezcode/codetest/application/submission/dto/response/submission/GroupedSubmissionResponse.java @@ -5,6 +5,7 @@ import java.util.stream.Collectors; import org.ezcode.codetest.domain.problem.model.entity.Problem; +import org.ezcode.codetest.domain.problem.model.enums.Difficulty; import org.ezcode.codetest.domain.submission.model.entity.Submission; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -13,7 +14,7 @@ import lombok.Getter; @Getter -@JsonPropertyOrder({"problemId", "problemTitle", "problemDescription", "submissions"}) +@JsonPropertyOrder({"problemId", "problemTitle","problemDifficulty", "problemDescription", "submissions"}) @Schema(description = "문제 단위로 묶은 제출 목록 응답") public class GroupedSubmissionResponse { @@ -23,6 +24,9 @@ public class GroupedSubmissionResponse { @Schema(description = "문제 제목", example = "A + B") private final String problemTitle; + @Schema(description = "문제 난이도", example = "LV1") + private final Difficulty problemDifficulty; + @Schema(description = "문제 설명", example = "두 수의 합을 구하는 문제입니다.") private final String problemDescription; @@ -49,6 +53,7 @@ private static GroupedSubmissionResponse createSorted(Problem problem, List submissions) { this.problemId = problem.getId(); this.problemTitle = problem.getTitle(); + this.problemDifficulty = problem.getDifficulty(); this.problemDescription = problem.getDescription(); this.submissions = submissions.stream() .map(SubmissionDetailResponse::from) diff --git a/src/main/java/org/ezcode/codetest/application/submission/dto/response/submission/SubmissionDetailResponse.java b/src/main/java/org/ezcode/codetest/application/submission/dto/response/submission/SubmissionDetailResponse.java index 9fe3e931..3c02c34b 100644 --- a/src/main/java/org/ezcode/codetest/application/submission/dto/response/submission/SubmissionDetailResponse.java +++ b/src/main/java/org/ezcode/codetest/application/submission/dto/response/submission/SubmissionDetailResponse.java @@ -12,6 +12,9 @@ public record SubmissionDetailResponse( @Schema(description = "제출 ID", example = "101") Long id, + @Schema(description = "제출 언어", example = "Java(17)") + String language, + @Schema(description = "소스 코드", example = "System.out.println(\"Hello\");") String sourceCode, @@ -34,6 +37,7 @@ public record SubmissionDetailResponse( public static SubmissionDetailResponse from(Submission submission) { return new SubmissionDetailResponse( submission.getId(), + submission.getLanguageInfo(), submission.getCode(), submission.isCorrect(), submission.getMessage(), diff --git a/src/main/java/org/ezcode/codetest/domain/submission/model/entity/Submission.java b/src/main/java/org/ezcode/codetest/domain/submission/model/entity/Submission.java index 3817985c..6fa01dda 100644 --- a/src/main/java/org/ezcode/codetest/domain/submission/model/entity/Submission.java +++ b/src/main/java/org/ezcode/codetest/domain/submission/model/entity/Submission.java @@ -7,6 +7,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @@ -30,11 +31,11 @@ public class Submission extends BaseEntity { @JoinColumn(name = "user_id", nullable = false) private User user; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "problem_id", nullable = false) private Problem problem; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "language_id", nullable = false) private Language language; @@ -78,6 +79,10 @@ public Long getProblemId() { return this.problem.getId(); } + public String getLanguageInfo() { + return language.getName() + language.getVersion(); + } + public boolean isCorrect() { return this.testCasePassedCount == this.testCaseTotalCount; } diff --git a/src/main/java/org/ezcode/codetest/infrastructure/persistence/repository/submission/jpa/SubmissionJpaRepository.java b/src/main/java/org/ezcode/codetest/infrastructure/persistence/repository/submission/jpa/SubmissionJpaRepository.java index ba933185..bf611356 100644 --- a/src/main/java/org/ezcode/codetest/infrastructure/persistence/repository/submission/jpa/SubmissionJpaRepository.java +++ b/src/main/java/org/ezcode/codetest/infrastructure/persistence/repository/submission/jpa/SubmissionJpaRepository.java @@ -1,13 +1,15 @@ package org.ezcode.codetest.infrastructure.persistence.repository.submission.jpa; -import java.util.Collection; import java.util.List; import org.ezcode.codetest.domain.submission.model.entity.Submission; +import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; public interface SubmissionJpaRepository extends JpaRepository { + + @EntityGraph(attributePaths = {"problem", "language"}) List findAllByUser_Id(Long userId); @Query("""