From c83d805847722f9e1224c4c805647e527d06bb03 Mon Sep 17 00:00:00 2001 From: mybloom Date: Tue, 10 Jan 2023 16:21:39 +0900 Subject: [PATCH 01/13] =?UTF-8?q?=F0=9F=93=91=20::=20FCM=20=ED=86=A0?= =?UTF-8?q?=ED=81=B0=20=EB=93=B1=EB=A1=9D=20API=20requestBody=20Valid=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notification/presentation/NotificationController.java | 3 ++- .../presentation/dto/request/RegisterFcmTokenRequest.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java index 284c8f81..1139b6f6 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java @@ -16,6 +16,7 @@ import org.springframework.data.web.PageableDefault; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; @SecurityRequirement(name = "access-token") @Tag(name = "푸쉬알림 관련 컨트롤러", description = "") @@ -36,7 +37,7 @@ public QueryNotificationListLatestResponse queryListLatest() { @Operation(summary = "FCM 토큰 등록") @ResponseStatus(HttpStatus.CREATED) @PostMapping("/token") - public void registerFcmToken(@RequestBody RegisterFcmTokenRequest request) { + public void registerFcmToken(@Valid @RequestBody RegisterFcmTokenRequest request) { notificationService.registerFcmToken(request); } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/RegisterFcmTokenRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/RegisterFcmTokenRequest.java index 1b6b21c1..030d89da 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/RegisterFcmTokenRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/RegisterFcmTokenRequest.java @@ -2,10 +2,12 @@ import lombok.Getter; +import javax.validation.constraints.NotBlank; @Getter public class RegisterFcmTokenRequest { - + @NotBlank private String deviceId; + @NotBlank private String token; } From 038b8321040c110d9987a0dc993e49d2c2fb3abb Mon Sep 17 00:00:00 2001 From: mybloom Date: Tue, 10 Jan 2023 16:22:14 +0900 Subject: [PATCH 02/13] =?UTF-8?q?=F0=9F=93=91=20::=20=EB=98=91=EB=98=91=20?= =?UTF-8?q?=EB=AF=B8=EB=A6=AC=EC=B2=B4=ED=97=98=ED=95=98=EA=B8=B0=20API=20?= =?UTF-8?q?requestBody=20Valid=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - content는 빈 문자열 경우 FCM 에러 발생하므로 @NotEmpty 적용 --- .../notification/presentation/NotificationController.java | 2 +- .../dto/request/SendInstanceToMeBeforeSignUpRequest.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java index 1139b6f6..cb891af1 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java @@ -70,7 +70,7 @@ public void deleteByNotificationId( @PostMapping("/experience") @DisableSecurity public void sendInstanceToMeBeforeSignUp( - @RequestBody SendInstanceToMeBeforeSignUpRequest request) { + @Valid @RequestBody SendInstanceToMeBeforeSignUpRequest request) { notificationService.sendInstanceToMeBeforeSignUp(request); } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceToMeBeforeSignUpRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceToMeBeforeSignUpRequest.java index 30907c8a..a1f785d9 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceToMeBeforeSignUpRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceToMeBeforeSignUpRequest.java @@ -3,9 +3,14 @@ import lombok.Getter; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + @Getter public class SendInstanceToMeBeforeSignUpRequest { + @NotBlank private String token; + @NotEmpty private String content; } From e9f2358bd56701b2c58e9ee8fb36b5036f614664 Mon Sep 17 00:00:00 2001 From: mybloom Date: Tue, 10 Jan 2023 16:32:46 +0900 Subject: [PATCH 03/13] =?UTF-8?q?=F0=9F=93=91=20::=20=EC=A6=89=EC=8B=9C=20?= =?UTF-8?q?=EC=95=8C=EB=A6=BC=20=EB=B0=9C=EC=86=A1=20API=20requestBody=20V?= =?UTF-8?q?alid=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notification/presentation/NotificationController.java | 2 +- .../presentation/dto/request/SendInstanceRequest.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java index cb891af1..956f9f3c 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java @@ -44,7 +44,7 @@ public void registerFcmToken(@Valid @RequestBody RegisterFcmTokenRequest request @Operation(summary = "즉시 푸쉬알림 발송") @ResponseStatus(HttpStatus.CREATED) @PostMapping - public void sendInstance(@RequestBody SendInstanceRequest request) { + public void sendInstance(@Valid @RequestBody SendInstanceRequest request) { notificationService.sendInstance(request); } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceRequest.java index 60bc9b40..cf4ee0c4 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceRequest.java @@ -3,11 +3,15 @@ import lombok.Getter; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + @Getter public class SendInstanceRequest { - + @NotNull private Long groupId; private String title; + @NotBlank private String content; private String imageUrl; } From fd79906465c26dbf11321bc8addde26365366b3b Mon Sep 17 00:00:00 2001 From: mybloom Date: Tue, 10 Jan 2023 16:44:29 +0900 Subject: [PATCH 04/13] =?UTF-8?q?=F0=9F=93=91=20::=20=EC=98=88=EC=95=BD=20?= =?UTF-8?q?=EC=95=8C=EB=A6=BC=20=EB=B0=9C=EC=86=A1=20API=20requestBody=20V?= =?UTF-8?q?alid=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sendAt에 현재보다 미래시간 적용되도록 @Future 적용 --- .../presentation/NotificationController.java | 2 +- .../dto/request/SendReservationRequest.java | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java index 956f9f3c..309a34cd 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java @@ -77,7 +77,7 @@ public void sendInstanceToMeBeforeSignUp( @Operation(summary = "예약 푸쉬알림 발송") @ResponseStatus(HttpStatus.CREATED) @PostMapping("/reservation") - public void sendReservation(@RequestBody SendReservationRequest request) { + public void sendReservation(@Valid @RequestBody SendReservationRequest request) { reservationService.sendReservation(request); } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendReservationRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendReservationRequest.java index dcb5077a..f4ec0d12 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendReservationRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendReservationRequest.java @@ -4,12 +4,20 @@ import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDateTime; import lombok.Getter; +import javax.validation.constraints.Future; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; @Getter public class SendReservationRequest { + @NotNull private Long groupId; private String title; + @NotBlank private String content; private String imageUrl; - @JsonFormat private LocalDateTime sendAt; + @Future + @NotNull + @JsonFormat + private LocalDateTime sendAt; } From bb8c4970fa98f4d0b3baf654fa9241734b60ddd4 Mon Sep 17 00:00:00 2001 From: mybloom Date: Tue, 10 Jan 2023 16:52:14 +0900 Subject: [PATCH 05/13] =?UTF-8?q?=F0=9F=93=91=20::=20=EC=98=88=EC=95=BD=20?= =?UTF-8?q?=EC=95=8C=EB=A6=BC=20=EC=88=98=EC=A0=95=20API=20requestBody=20V?= =?UTF-8?q?alid=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sendAt에 현재보다 미래시간 적용되도록 @Future 적용 --- .../notification/presentation/NotificationController.java | 2 +- .../dto/request/ChangeSendAtReservationRequest.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java index 309a34cd..f68c7732 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java @@ -84,7 +84,7 @@ public void sendReservation(@Valid @RequestBody SendReservationRequest request) @Operation(summary = "예약 푸쉬알림 시간수정") @ResponseStatus(HttpStatus.OK) @PatchMapping("/reservation") - public void changeSendAtReservation(@RequestBody ChangeSendAtReservationRequest request) { + public void changeSendAtReservation(@Valid @RequestBody ChangeSendAtReservationRequest request) { reservationService.changeSendAtReservation(request); } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/ChangeSendAtReservationRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/ChangeSendAtReservationRequest.java index d7338db2..5eddb060 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/ChangeSendAtReservationRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/ChangeSendAtReservationRequest.java @@ -4,9 +4,15 @@ import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDateTime; import lombok.Getter; +import javax.validation.constraints.Future; +import javax.validation.constraints.NotNull; @Getter public class ChangeSendAtReservationRequest { + @NotNull private Long reservationId; - @JsonFormat private LocalDateTime sendAt; + @Future + @NotNull + @JsonFormat + private LocalDateTime sendAt; } From bd77e0b1a1900d7adf2b7fbeb844a83be2add731 Mon Sep 17 00:00:00 2001 From: mybloom Date: Tue, 10 Jan 2023 17:19:02 +0900 Subject: [PATCH 06/13] =?UTF-8?q?=E2=99=BB=20::=20spotless=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/NotificationController.java | 5 +++-- .../dto/request/ChangeSendAtReservationRequest.java | 10 +++------- .../dto/request/RegisterFcmTokenRequest.java | 8 +++----- .../dto/request/SendInstanceRequest.java | 9 +++------ .../SendInstanceToMeBeforeSignUpRequest.java | 9 +++------ .../dto/request/SendReservationRequest.java | 13 ++++--------- 6 files changed, 19 insertions(+), 35 deletions(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java index f68c7732..627972ad 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/NotificationController.java @@ -10,13 +10,13 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import javax.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort.Direction; import org.springframework.data.web.PageableDefault; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; @SecurityRequirement(name = "access-token") @Tag(name = "푸쉬알림 관련 컨트롤러", description = "") @@ -84,7 +84,8 @@ public void sendReservation(@Valid @RequestBody SendReservationRequest request) @Operation(summary = "예약 푸쉬알림 시간수정") @ResponseStatus(HttpStatus.OK) @PatchMapping("/reservation") - public void changeSendAtReservation(@Valid @RequestBody ChangeSendAtReservationRequest request) { + public void changeSendAtReservation( + @Valid @RequestBody ChangeSendAtReservationRequest request) { reservationService.changeSendAtReservation(request); } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/ChangeSendAtReservationRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/ChangeSendAtReservationRequest.java index 5eddb060..530c5495 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/ChangeSendAtReservationRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/ChangeSendAtReservationRequest.java @@ -3,16 +3,12 @@ import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDateTime; -import lombok.Getter; import javax.validation.constraints.Future; import javax.validation.constraints.NotNull; +import lombok.Getter; @Getter public class ChangeSendAtReservationRequest { - @NotNull - private Long reservationId; - @Future - @NotNull - @JsonFormat - private LocalDateTime sendAt; + @NotNull private Long reservationId; + @Future @NotNull @JsonFormat private LocalDateTime sendAt; } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/RegisterFcmTokenRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/RegisterFcmTokenRequest.java index 030d89da..18c46a36 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/RegisterFcmTokenRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/RegisterFcmTokenRequest.java @@ -1,13 +1,11 @@ package io.github.depromeet.knockknockbackend.domain.notification.presentation.dto.request; -import lombok.Getter; import javax.validation.constraints.NotBlank; +import lombok.Getter; @Getter public class RegisterFcmTokenRequest { - @NotBlank - private String deviceId; - @NotBlank - private String token; + @NotBlank private String deviceId; + @NotBlank private String token; } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceRequest.java index cf4ee0c4..949c33db 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceRequest.java @@ -1,17 +1,14 @@ package io.github.depromeet.knockknockbackend.domain.notification.presentation.dto.request; -import lombok.Getter; - import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import lombok.Getter; @Getter public class SendInstanceRequest { - @NotNull - private Long groupId; + @NotNull private Long groupId; private String title; - @NotBlank - private String content; + @NotBlank private String content; private String imageUrl; } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceToMeBeforeSignUpRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceToMeBeforeSignUpRequest.java index a1f785d9..30e8f75c 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceToMeBeforeSignUpRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendInstanceToMeBeforeSignUpRequest.java @@ -1,16 +1,13 @@ package io.github.depromeet.knockknockbackend.domain.notification.presentation.dto.request; -import lombok.Getter; - import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; +import lombok.Getter; @Getter public class SendInstanceToMeBeforeSignUpRequest { - @NotBlank - private String token; - @NotEmpty - private String content; + @NotBlank private String token; + @NotEmpty private String content; } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendReservationRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendReservationRequest.java index f4ec0d12..87f8bdec 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendReservationRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/notification/presentation/dto/request/SendReservationRequest.java @@ -3,21 +3,16 @@ import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDateTime; -import lombok.Getter; import javax.validation.constraints.Future; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import lombok.Getter; @Getter public class SendReservationRequest { - @NotNull - private Long groupId; + @NotNull private Long groupId; private String title; - @NotBlank - private String content; + @NotBlank private String content; private String imageUrl; - @Future - @NotNull - @JsonFormat - private LocalDateTime sendAt; + @Future @NotNull @JsonFormat private LocalDateTime sendAt; } From 122ae5143d230ab91721e3dd9febcea250602f85 Mon Sep 17 00:00:00 2001 From: mybloom Date: Tue, 10 Jan 2023 17:19:40 +0900 Subject: [PATCH 07/13] =?UTF-8?q?=F0=9F=93=91=20::=20=EB=B3=B4=EA=B4=80?= =?UTF-8?q?=ED=95=A8=20=EC=82=AD=EC=A0=9C=20API=20requestBody=20Valid=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - List 사이즈 1이상이도록 @Size(min = 1)설정 --- .../domain/storage/presentation/StorageController.java | 3 ++- .../storage/presentation/dto/request/DeleteStorage.java | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/StorageController.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/StorageController.java index 4be862e6..da877ba0 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/StorageController.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/StorageController.java @@ -14,6 +14,7 @@ import org.springframework.data.web.PageableDefault; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; @SecurityRequirement(name = "access-token") @Tag(name = "보관함 관련 컨트롤러", description = "") @@ -44,7 +45,7 @@ public void saveNotificationToStorage(@PathVariable("notification_id") Long noti @Operation(summary = "보관함에 저장한 푸쉬알림 삭제") @ResponseStatus(HttpStatus.OK) @DeleteMapping - public void deleteNotificationFromStorage(@RequestBody DeleteStorage request) { + public void deleteNotificationFromStorage(@Valid @RequestBody DeleteStorage request) { storageService.deleteNotificationFromStorage(request); } } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/dto/request/DeleteStorage.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/dto/request/DeleteStorage.java index 2224951b..e32715a2 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/dto/request/DeleteStorage.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/dto/request/DeleteStorage.java @@ -3,8 +3,12 @@ import java.util.List; import lombok.Getter; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; @Getter public class DeleteStorage { + @Size(min = 1) + @NotNull List storageIds; } From e390b58ab6e576462bd25efa4b1b6415491860dc Mon Sep 17 00:00:00 2001 From: mybloom Date: Tue, 10 Jan 2023 17:22:54 +0900 Subject: [PATCH 08/13] =?UTF-8?q?=F0=9F=93=91=20::=20=EB=A6=AC=EC=95=A1?= =?UTF-8?q?=EC=85=98=20=EB=93=B1=EB=A1=9D=20API=20requestBody=20Valid=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/reaction/presentation/ReactionController.java | 3 ++- .../presentation/dto/request/RegisterReactionRequest.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java index f19ff7de..3f7230f7 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; @SecurityRequirement(name = "access-token") @Tag(name = "리액션 관련 컨트롤러", description = "") @@ -29,7 +30,7 @@ public class ReactionController { @Operation(summary = "알림에 리액션 등록") @ResponseStatus(HttpStatus.CREATED) @PostMapping - public void registerReaction(@RequestBody RegisterReactionRequest request) { + public void registerReaction(@Valid @RequestBody RegisterReactionRequest request) { reactionService.registerReaction(request); } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/dto/request/RegisterReactionRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/dto/request/RegisterReactionRequest.java index 08183da0..9ab60d34 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/dto/request/RegisterReactionRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/dto/request/RegisterReactionRequest.java @@ -2,10 +2,12 @@ import lombok.Getter; +import javax.validation.constraints.NotNull; @Getter public class RegisterReactionRequest { - + @NotNull private Long notificationId; + @NotNull private Long reactionId; } From c36fd461776a33543410ba3d04781be5f83fb0dc Mon Sep 17 00:00:00 2001 From: mybloom Date: Tue, 10 Jan 2023 17:23:24 +0900 Subject: [PATCH 09/13] =?UTF-8?q?=F0=9F=93=91=20::=20=EB=A6=AC=EC=95=A1?= =?UTF-8?q?=EC=85=98=20=EC=88=98=EC=A0=95=20API=20requestBody=20Valid=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/reaction/presentation/ReactionController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java index 3f7230f7..8ea74fd9 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java @@ -39,7 +39,7 @@ public void registerReaction(@Valid @RequestBody RegisterReactionRequest request @PatchMapping("{notification_reaction_id}") public void changeReaction( @PathVariable("notification_reaction_id") Long notificationReactionId, - @RequestBody RegisterReactionRequest request) { + @Valid @RequestBody RegisterReactionRequest request) { reactionService.changeReaction(notificationReactionId, request); } From 730cd414db9b0529e3a09a2a22402a02871bada9 Mon Sep 17 00:00:00 2001 From: mybloom Date: Tue, 10 Jan 2023 17:25:09 +0900 Subject: [PATCH 10/13] =?UTF-8?q?=E2=99=BB=20::=20spotless=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/reaction/presentation/ReactionController.java | 2 +- .../presentation/dto/request/RegisterReactionRequest.java | 8 +++----- .../domain/storage/presentation/StorageController.java | 2 +- .../storage/presentation/dto/request/DeleteStorage.java | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java index 8ea74fd9..21d4a440 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/ReactionController.java @@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import javax.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.DeleteMapping; @@ -16,7 +17,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import javax.validation.Valid; @SecurityRequirement(name = "access-token") @Tag(name = "리액션 관련 컨트롤러", description = "") diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/dto/request/RegisterReactionRequest.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/dto/request/RegisterReactionRequest.java index 9ab60d34..1969fde5 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/dto/request/RegisterReactionRequest.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/reaction/presentation/dto/request/RegisterReactionRequest.java @@ -1,13 +1,11 @@ package io.github.depromeet.knockknockbackend.domain.reaction.presentation.dto.request; -import lombok.Getter; import javax.validation.constraints.NotNull; +import lombok.Getter; @Getter public class RegisterReactionRequest { - @NotNull - private Long notificationId; - @NotNull - private Long reactionId; + @NotNull private Long notificationId; + @NotNull private Long reactionId; } diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/StorageController.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/StorageController.java index da877ba0..0b0454b1 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/StorageController.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/StorageController.java @@ -8,13 +8,13 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import javax.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort.Direction; import org.springframework.data.web.PageableDefault; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; @SecurityRequirement(name = "access-token") @Tag(name = "보관함 관련 컨트롤러", description = "") diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/dto/request/DeleteStorage.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/dto/request/DeleteStorage.java index e32715a2..73a5bc5a 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/dto/request/DeleteStorage.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/storage/presentation/dto/request/DeleteStorage.java @@ -2,9 +2,9 @@ import java.util.List; -import lombok.Getter; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; +import lombok.Getter; @Getter public class DeleteStorage { From 3b86e78fa1fff97657fd17382c88d6192dfdb1f6 Mon Sep 17 00:00:00 2001 From: Leeseojune Date: Wed, 11 Jan 2023 12:28:57 +0900 Subject: [PATCH 11/13] =?UTF-8?q?=F0=9F=90=9B=20::=20Optional=20nullable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/repository/CustomRelationRepositoryImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/domain/relation/domain/repository/CustomRelationRepositoryImpl.java b/src/main/java/io/github/depromeet/knockknockbackend/domain/relation/domain/repository/CustomRelationRepositoryImpl.java index 45e0521d..a7ddcb80 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/domain/relation/domain/repository/CustomRelationRepositoryImpl.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/domain/relation/domain/repository/CustomRelationRepositoryImpl.java @@ -34,14 +34,14 @@ public List findFriendList(Long userId) { @Override public Optional findRelationBySendUserIdAndReceiveUserId( Long sendUserId, Long receiveUserId) { - return Optional.of( + return Optional.ofNullable( queryFactory .selectFrom(relation) .where( relation.isFriend .eq(false) .and(friendPredicated(sendUserId, receiveUserId))) - .fetchFirst()); + .fetchOne()); } @Override From c02fa1ccaba726321999845c150c3e10b7895d05 Mon Sep 17 00:00:00 2001 From: Leeseojune Date: Wed, 11 Jan 2023 12:40:35 +0900 Subject: [PATCH 12/13] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20::=20writeErrorRespo?= =?UTF-8?q?nse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/error/ExceptionFilter.java | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/global/error/ExceptionFilter.java b/src/main/java/io/github/depromeet/knockknockbackend/global/error/ExceptionFilter.java index ed6e56ab..47119c64 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/global/error/ExceptionFilter.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/global/error/ExceptionFilter.java @@ -21,35 +21,28 @@ public class ExceptionFilter extends OncePerRequestFilter { @Override protected void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) - throws ServletException, IOException { + throws IOException { try { filterChain.doFilter(request, response); } catch (KnockException e) { - response.getWriter() - .write( - objectMapper.writeValueAsString( - getErrorResponse( - e.getErrorCode(), request.getRequestURL().toString()))); + writeErrorResponse(response, e.getErrorCode(), request.getRequestURL().toString()); } catch (Exception e) { if (e.getCause() instanceof KnockException) { - response.getWriter() - .write( - objectMapper.writeValueAsString( - getErrorResponse( - ((KnockException) e.getCause()).getErrorCode(), - request.getRequestURL().toString()))); + writeErrorResponse(response,((KnockException) e.getCause()).getErrorCode(), request.getRequestURL().toString()); } else { e.printStackTrace(); - getErrorResponse( - ErrorCode.INTERNAL_SERVER_ERROR, request.getRequestURL().toString()); + writeErrorResponse(response, ErrorCode.INTERNAL_SERVER_ERROR, request.getRequestURL().toString()); } - } finally { - response.setContentType(MediaType.APPLICATION_JSON_VALUE); } } - private ErrorResponse getErrorResponse(ErrorCode errorCode, String path) { - return new ErrorResponse( + private void writeErrorResponse(HttpServletResponse response, ErrorCode errorCode, String path) throws IOException { + ErrorResponse errorResponse = new ErrorResponse( errorCode.getStatus(), errorCode.getCode(), errorCode.getReason(), path); + + response.setStatus(errorCode.getStatus()); + response.setCharacterEncoding("UTF-8"); + response.setContentType(MediaType.APPLICATION_JSON_VALUE); + response.getWriter().write(objectMapper.writeValueAsString(errorResponse)); } } From 8879d374b680abd65123e3af4f0d129081d55a01 Mon Sep 17 00:00:00 2001 From: Leeseojune Date: Wed, 11 Jan 2023 12:40:55 +0900 Subject: [PATCH 13/13] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20formatting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/error/ExceptionFilter.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/github/depromeet/knockknockbackend/global/error/ExceptionFilter.java b/src/main/java/io/github/depromeet/knockknockbackend/global/error/ExceptionFilter.java index 47119c64..2622fcfa 100644 --- a/src/main/java/io/github/depromeet/knockknockbackend/global/error/ExceptionFilter.java +++ b/src/main/java/io/github/depromeet/knockknockbackend/global/error/ExceptionFilter.java @@ -6,7 +6,6 @@ import io.github.depromeet.knockknockbackend.global.error.exception.KnockException; import java.io.IOException; import javax.servlet.FilterChain; -import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @@ -28,17 +27,25 @@ protected void doFilterInternal( writeErrorResponse(response, e.getErrorCode(), request.getRequestURL().toString()); } catch (Exception e) { if (e.getCause() instanceof KnockException) { - writeErrorResponse(response,((KnockException) e.getCause()).getErrorCode(), request.getRequestURL().toString()); + writeErrorResponse( + response, + ((KnockException) e.getCause()).getErrorCode(), + request.getRequestURL().toString()); } else { e.printStackTrace(); - writeErrorResponse(response, ErrorCode.INTERNAL_SERVER_ERROR, request.getRequestURL().toString()); + writeErrorResponse( + response, + ErrorCode.INTERNAL_SERVER_ERROR, + request.getRequestURL().toString()); } } } - private void writeErrorResponse(HttpServletResponse response, ErrorCode errorCode, String path) throws IOException { - ErrorResponse errorResponse = new ErrorResponse( - errorCode.getStatus(), errorCode.getCode(), errorCode.getReason(), path); + private void writeErrorResponse(HttpServletResponse response, ErrorCode errorCode, String path) + throws IOException { + ErrorResponse errorResponse = + new ErrorResponse( + errorCode.getStatus(), errorCode.getCode(), errorCode.getReason(), path); response.setStatus(errorCode.getStatus()); response.setCharacterEncoding("UTF-8");