Skip to content

Commit 9bbdc55

Browse files
authored
Merge pull request #45 from team-fontory/feature/validation
✨ [Feat] DTO Validation
2 parents 8b61bbe + 0bb4eec commit 9bbdc55

8 files changed

Lines changed: 39 additions & 6 deletions

File tree

src/main/java/org/fontory/fontorybe/font/controller/FontController.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.fontory.fontorybe.font.controller.port.FontService;
3131
import org.fontory.fontorybe.font.domain.Font;
3232
import org.springframework.data.domain.Page;
33-
import org.springframework.http.HttpHeaders;
3433
import org.springframework.http.HttpStatus;
3534
import org.springframework.http.MediaType;
3635
import org.springframework.http.ResponseEntity;
@@ -124,7 +123,7 @@ public ResponseEntity<?> getFontProgress(@Login UserPrincipal userPrincipal) {
124123
@Parameter(name = "fontId", description = "수정할 폰트 ID")
125124
@PutMapping("/{fontId}")
126125
public ResponseEntity<?> updateFont(
127-
@RequestBody FontUpdateDTO fontUpdateDTO,
126+
@RequestBody @Valid FontUpdateDTO fontUpdateDTO,
128127
@PathVariable Long fontId,
129128
@Login UserPrincipal userPrincipal
130129
) {
@@ -260,7 +259,7 @@ public ResponseEntity<?> getPopularFonts(@Login(required = false) UserPrincipal
260259
@Parameter(name = "fontId", description = "수정할 폰트 ID")
261260
@PatchMapping("/progress/{fontId}")
262261
public ResponseEntity<?> updateFontProgress(
263-
@RequestBody FontProgressUpdateDTO fontProgressUpdateDTO,
262+
@RequestBody @Valid FontProgressUpdateDTO fontProgressUpdateDTO,
264263
@PathVariable Long fontId
265264
) {
266265
log.info("Request received: Update font progress ID: {}, request: {}",

src/main/java/org/fontory/fontorybe/font/controller/dto/FontCreateDTO.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import jakarta.validation.constraints.NotBlank;
44
import jakarta.validation.constraints.Pattern;
5+
import jakarta.validation.constraints.Size;
56
import lombok.AllArgsConstructor;
67
import lombok.Builder;
78
import lombok.Getter;
@@ -12,9 +13,11 @@
1213
public class FontCreateDTO {
1314

1415
@NotBlank(message = "폰트 이름은 필수 입력 값입니다.")
16+
@Size(min = 2, max = 30, message = "폰트 이름은 2자 이상 30자 이하로 입력해주세요.")
1517
private String name;
1618

1719
@NotBlank(message = "폰트 예시는 필수 입력 값입니다.")
20+
@Size(min = 10, max = 255, message = "폰트 예시는 10자 이상 255자 이하로 입력해주세요.")
1821
private String example;
1922

2023
@Pattern(regexp = "^$|^01[016-9]\\d{7,8}$", message = "휴대폰 번호 형식이 올바르지 않습니다.")
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package org.fontory.fontorybe.font.controller.dto;
22

33
import io.swagger.v3.oas.annotations.media.Schema;
4+
import jakarta.validation.constraints.NotNull;
45
import lombok.Builder;
56
import lombok.Getter;
67
import org.fontory.fontorybe.font.infrastructure.entity.FontStatus;
78

89
@Getter
910
@Builder
1011
public class FontProgressUpdateDTO {
11-
@Schema(description = "폰트의 상태 (PROGRESS, DONE)")
12+
@NotNull(message = "폰트 상태는 필수입니다.")
13+
@Schema(description = "폰트의 상태 (PROGRESS, DONE, FAILED)")
1214
private FontStatus status;
1315
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
package org.fontory.fontorybe.font.controller.dto;
22

3+
import jakarta.validation.constraints.NotBlank;
4+
import jakarta.validation.constraints.Size;
35
import lombok.Builder;
46
import lombok.Getter;
57

68
@Getter
79
@Builder
810
public class FontUpdateDTO {
11+
@NotBlank(message = "폰트 이름은 필수 입력 값입니다.")
12+
@Size(min = 2, max = 30, message = "폰트 이름은 2자 이상 30자 이하로 입력해주세요.")
913
private String name;
14+
15+
@NotBlank(message = "폰트 예시는 필수 입력 값입니다.")
16+
@Size(min = 10, max = 255, message = "폰트 예시는 10자 이상 255자 이하로 입력해주세요.")
1017
private String example;
1118
}

src/main/java/org/fontory/fontorybe/member/controller/ProfileController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.swagger.v3.oas.annotations.Operation;
44
import io.swagger.v3.oas.annotations.tags.Tag;
55
import jakarta.servlet.http.HttpServletResponse;
6+
import jakarta.validation.Valid;
67
import lombok.Builder;
78
import lombok.RequiredArgsConstructor;
89
import lombok.extern.slf4j.Slf4j;
@@ -71,7 +72,7 @@ public ResponseEntity<MyProfileResponse> getMyProfile(
7172
@PatchMapping(consumes = MULTIPART_FORM_DATA_VALUE)
7273
public ResponseEntity<MyProfileResponse> updateMember(
7374
@Login UserPrincipal userPrincipal,
74-
@RequestPart MemberUpdateRequest req,
75+
@RequestPart @Valid MemberUpdateRequest req,
7576
@SingleFileUpload @RequestPart("file") List<MultipartFile> files
7677
) {
7778
Long requestMemberId = userPrincipal.getId();

src/main/java/org/fontory/fontorybe/member/controller/RegistrationController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.swagger.v3.oas.annotations.Operation;
44
import io.swagger.v3.oas.annotations.tags.Tag;
5+
import jakarta.validation.Valid;
56
import lombok.Builder;
67
import lombok.RequiredArgsConstructor;
78
import lombok.extern.slf4j.Slf4j;
@@ -58,7 +59,7 @@ public ResponseEntity<Boolean> checkDuplicate(
5859
@PostMapping(consumes = MULTIPART_FORM_DATA_VALUE)
5960
public ResponseEntity<MemberCreateResponse> register(
6061
@Login UserPrincipal user,
61-
@RequestPart InitMemberInfoRequest req,
62+
@RequestPart @Valid InitMemberInfoRequest req,
6263
@SingleFileUpload @RequestPart("file") List<MultipartFile> files
6364
) {
6465
Long requestMemberId = user.getId();

src/main/java/org/fontory/fontorybe/member/controller/dto/InitMemberInfoRequest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package org.fontory.fontorybe.member.controller.dto;
22

3+
import jakarta.validation.constraints.NotBlank;
4+
import jakarta.validation.constraints.NotNull;
5+
import jakarta.validation.constraints.Past;
6+
import jakarta.validation.constraints.Size;
37
import java.time.LocalDate;
48

59
import lombok.AllArgsConstructor;
@@ -13,8 +17,17 @@
1317
@ToString
1418
@AllArgsConstructor
1519
public class InitMemberInfoRequest {
20+
@NotBlank(message = "닉네임은 필수 입력 값입니다.")
21+
@Size(min = 2, max = 20, message = "닉네임은 2자 이상 20자 이하로 입력해주세요.")
1622
private String nickname;
23+
24+
@NotNull(message = "성별을 선택해주세요.")
1725
private Gender gender;
26+
27+
@NotNull(message = "생년월일을 입력해주세요.")
28+
@Past(message = "생년월일은 과거 날짜만 가능합니다.")
1829
private LocalDate birth;
30+
31+
@NotNull(message = "이용약관 동의 여부를 선택해주세요.")
1932
private Boolean terms;
2033
}

src/main/java/org/fontory/fontorybe/member/controller/dto/MemberUpdateRequest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package org.fontory.fontorybe.member.controller.dto;
22

3+
import jakarta.validation.constraints.NotBlank;
4+
import jakarta.validation.constraints.NotNull;
5+
import jakarta.validation.constraints.Size;
36
import lombok.AllArgsConstructor;
47
import lombok.Builder;
58
import lombok.Getter;
@@ -10,6 +13,10 @@
1013
@ToString
1114
@AllArgsConstructor
1215
public class MemberUpdateRequest {
16+
@NotBlank(message = "닉네임은 필수 입력 값입니다.")
17+
@Size(min = 2, max = 20, message = "닉네임은 2자 이상 20자 이하로 입력해주세요.")
1318
private String nickname;
19+
20+
@NotNull(message = "이용약관 동의 여부를 선택해주세요.")
1421
private Boolean terms;
1522
}

0 commit comments

Comments
 (0)