From 0f9bf961e38ded4188c3cb2b3202f19199c67f7d Mon Sep 17 00:00:00 2001 From: xihxxn Date: Sun, 7 Jun 2026 10:53:51 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BB=A4=EB=A6=AC=ED=81=98=EB=9F=BC=20?= =?UTF-8?q?=EB=8F=84=EB=A9=94=EC=9D=B8=20=ED=95=84=EC=88=98=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=20=EA=B2=80=EC=A6=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/build.gradle | 3 +++ .../controller/CurriculumController.java | 5 ++-- .../curriculum/dto/CurriculumReqDTO.java | 26 +++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/backend/build.gradle b/backend/build.gradle index d7f248a..29c74dc 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -41,6 +41,9 @@ dependencies { implementation 'org.flywaydb:flyway-core' implementation 'org.flywaydb:flyway-database-postgresql' + // Validation + implementation 'org.springframework.boot:spring-boot-starter-validation' + // Spring Security implementation 'org.springframework.boot:spring-boot-starter-security' diff --git a/backend/src/main/java/com/example/Piroin/project/domain/curriculum/controller/CurriculumController.java b/backend/src/main/java/com/example/Piroin/project/domain/curriculum/controller/CurriculumController.java index e53b441..8d17249 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/curriculum/controller/CurriculumController.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/curriculum/controller/CurriculumController.java @@ -3,6 +3,7 @@ import com.example.Piroin.project.domain.curriculum.dto.CurriculumReqDTO; import com.example.Piroin.project.domain.curriculum.dto.CurriculumResDTO; import com.example.Piroin.project.domain.curriculum.service.CurriculumService; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -26,14 +27,14 @@ public ResponseEntity> getAllDays() { @PostMapping public ResponseEntity createDay( - @RequestBody CurriculumReqDTO.CreateDayReq req) { + @RequestBody @Valid CurriculumReqDTO.CreateDayReq req) { return ResponseEntity.status(HttpStatus.CREATED).body(curriculumService.createDay(req)); } @PatchMapping("/{sessionDate}") public ResponseEntity updateDay( @PathVariable LocalDate sessionDate, - @RequestBody CurriculumReqDTO.UpdateDayReq req) { + @RequestBody @Valid CurriculumReqDTO.UpdateDayReq req) { return ResponseEntity.ok(curriculumService.updateDay(sessionDate, req)); } diff --git a/backend/src/main/java/com/example/Piroin/project/domain/curriculum/dto/CurriculumReqDTO.java b/backend/src/main/java/com/example/Piroin/project/domain/curriculum/dto/CurriculumReqDTO.java index ceabfe1..631ef28 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/curriculum/dto/CurriculumReqDTO.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/curriculum/dto/CurriculumReqDTO.java @@ -2,6 +2,9 @@ import com.example.Piroin.project.domain.curriculum.enums.SessionDayPart; import com.example.Piroin.project.domain.curriculum.enums.SessionStatus; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.NoArgsConstructor; @@ -13,18 +16,32 @@ public class CurriculumReqDTO { @Getter @NoArgsConstructor public static class CreateDayReq { + @NotNull(message = "기수를 입력해주세요.") private Integer generation; + + @NotNull(message = "주차를 입력해주세요.") private Long week; + + @NotNull(message = "세션 날짜를 입력해주세요.") private LocalDate sessionDate; + + @NotEmpty(message = "세션 목록을 입력해주세요.") + @Valid private List sessions; } @Getter @NoArgsConstructor public static class SessionReq { + @NotNull(message = "세션 시간대를 입력해주세요.") private SessionDayPart dayPart; + + @NotNull(message = "세션 제목을 입력해주세요.") private String title; + + @NotNull(message = "발표자를 입력해주세요.") private String hostName; + private String sessionMaterialUrl; private String sessionMaterialName; private String recordingUrl; @@ -37,16 +54,25 @@ public static class SessionReq { @Getter @NoArgsConstructor public static class UpdateDayReq { + @NotNull(message = "기수를 입력해주세요.") private Integer generation; + + @NotNull(message = "주차를 입력해주세요.") private Long week; + private LocalDate newSessionDate; + + @NotEmpty(message = "세션 목록을 입력해주세요.") + @Valid private List sessions; } @Getter @NoArgsConstructor public static class UpdateSessionItemReq { + @NotNull(message = "세션 시간대를 입력해주세요.") private SessionDayPart dayPart; + private SessionStatus status; private String title; private String hostName;