Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions backend/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -26,14 +27,14 @@ public ResponseEntity<List<CurriculumResDTO.CreateDayRes>> getAllDays() {

@PostMapping
public ResponseEntity<CurriculumResDTO.CreateDayRes> createDay(
@RequestBody CurriculumReqDTO.CreateDayReq req) {
@RequestBody @Valid CurriculumReqDTO.CreateDayReq req) {
return ResponseEntity.status(HttpStatus.CREATED).body(curriculumService.createDay(req));
}

@PatchMapping("/{sessionDate}")
public ResponseEntity<CurriculumResDTO.CreateDayRes> updateDay(
@PathVariable LocalDate sessionDate,
@RequestBody CurriculumReqDTO.UpdateDayReq req) {
@RequestBody @Valid CurriculumReqDTO.UpdateDayReq req) {
return ResponseEntity.ok(curriculumService.updateDay(sessionDate, req));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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<SessionReq> 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;
Expand All @@ -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<UpdateSessionItemReq> sessions;
}

@Getter
@NoArgsConstructor
public static class UpdateSessionItemReq {
@NotNull(message = "세션 시간대를 입력해주세요.")
private SessionDayPart dayPart;

private SessionStatus status;
private String title;
private String hostName;
Expand Down
Loading