From 1717faf27f457740ccae9f9a98d54cfd787c9719 Mon Sep 17 00:00:00 2001 From: PicturePark1101 Date: Sat, 14 Dec 2024 14:54:29 +0900 Subject: [PATCH 1/5] [feat] make response, command dto --- .../service/command/FavoriteIsOwnerGetCommand.java | 10 ++++++++++ .../service/response/FavoriteIsOwnerGetResponse.java | 9 +++++++++ 2 files changed, 19 insertions(+) create mode 100644 src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteIsOwnerGetCommand.java create mode 100644 src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteIsOwnerGetResponse.java diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteIsOwnerGetCommand.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteIsOwnerGetCommand.java new file mode 100644 index 00000000..1f22c453 --- /dev/null +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteIsOwnerGetCommand.java @@ -0,0 +1,10 @@ +package org.hankki.hankkiserver.api.favorite.service.command; + +public record FavoriteIsOwnerGetCommand( + long userId, + long favoriteId +) { + public static FavoriteIsOwnerGetCommand of(final long userId, final long favoriteId) { + return new FavoriteIsOwnerGetCommand(userId, favoriteId); + } +} diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteIsOwnerGetResponse.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteIsOwnerGetResponse.java new file mode 100644 index 00000000..dc24aeba --- /dev/null +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteIsOwnerGetResponse.java @@ -0,0 +1,9 @@ +package org.hankki.hankkiserver.api.favorite.service.response; + +public record FavoriteIsOwnerGetResponse( + boolean isOwner +) { + public static FavoriteIsOwnerGetResponse of(final boolean isOwner) { + return new FavoriteIsOwnerGetResponse(isOwner); + } +} From c81a9b93dd0cda7b1df6f6f6da5caaca798b7266 Mon Sep 17 00:00:00 2001 From: PicturePark1101 Date: Sat, 14 Dec 2024 14:55:35 +0900 Subject: [PATCH 2/5] [feat] implementing repository func --- .../hankkiserver/api/favorite/service/FavoriteFinder.java | 5 +++++ .../api/favorite/service/FavoriteQueryService.java | 6 ++++++ .../domain/favorite/repository/FavoriteRepository.java | 2 ++ 3 files changed, 13 insertions(+) diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteFinder.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteFinder.java index c7d38bda..7efd76dd 100644 --- a/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteFinder.java +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteFinder.java @@ -3,6 +3,7 @@ import java.util.List; import java.util.Optional; import lombok.RequiredArgsConstructor; +import org.hankki.hankkiserver.api.favorite.service.response.FavoriteIsOwnerGetResponse; import org.hankki.hankkiserver.common.code.FavoriteErrorCode; import org.hankki.hankkiserver.common.exception.NotFoundException; import org.hankki.hankkiserver.domain.favorite.model.Favorite; @@ -40,4 +41,8 @@ protected Favorite findByIdWithFavoriteStore(final Long id) { protected Optional findByNameAndUser(final String name, final User user) { return favoriteRepository.findByNameAndUser(name, user); } + + boolean findByIdAndUserId(final long id, final long userId) { + return favoriteRepository.existsByIdAndAndUser(id, userId); + } } \ No newline at end of file diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java index 3b340b07..07aeaf79 100644 --- a/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java @@ -2,9 +2,11 @@ import java.util.ArrayList; import lombok.RequiredArgsConstructor; +import org.hankki.hankkiserver.api.favorite.service.command.FavoriteIsOwnerGetCommand; import org.hankki.hankkiserver.api.favorite.service.command.FavoritesGetCommand; import org.hankki.hankkiserver.api.favorite.service.command.FavoritesWithStatusGetCommand; import org.hankki.hankkiserver.api.favorite.service.response.FavoriteGetResponse; +import org.hankki.hankkiserver.api.favorite.service.response.FavoriteIsOwnerGetResponse; import org.hankki.hankkiserver.api.favorite.service.response.FavoritesWithStatusGetResponse; import org.hankki.hankkiserver.api.store.service.StoreFinder; import org.hankki.hankkiserver.domain.favorite.model.Favorite; @@ -56,4 +58,8 @@ private List findStoresInFavorite(final Favorite favorite){ private boolean favoriteHasNoStore(final Favorite favorite) { return favorite.getFavoriteStores().isEmpty(); } + + public FavoriteIsOwnerGetResponse findFavoriteIsOwner(FavoriteIsOwnerGetCommand command) { + return FavoriteIsOwnerGetResponse.of(favoriteFinder.findByIdAndUserId(command.favoriteId(), command.userId())); + } } \ No newline at end of file diff --git a/src/main/java/org/hankki/hankkiserver/domain/favorite/repository/FavoriteRepository.java b/src/main/java/org/hankki/hankkiserver/domain/favorite/repository/FavoriteRepository.java index de104ddf..19a7e8d6 100644 --- a/src/main/java/org/hankki/hankkiserver/domain/favorite/repository/FavoriteRepository.java +++ b/src/main/java/org/hankki/hankkiserver/domain/favorite/repository/FavoriteRepository.java @@ -26,4 +26,6 @@ public interface FavoriteRepository extends JpaRepository { Optional findByIdWithFavoriteStore(@Param("favoriteId") Long favoriteId); Optional findByNameAndUser(String title, User user); + + boolean existsByIdAndAndUser(Long id, Long userId); } \ No newline at end of file From b99c88cd629695e2d0a862fb0646276172b25ce9 Mon Sep 17 00:00:00 2001 From: PicturePark1101 Date: Sat, 14 Dec 2024 14:55:41 +0900 Subject: [PATCH 3/5] [feat] implementing controller func --- .../api/favorite/controller/FavoriteController.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java b/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java index e80f5945..5027fd60 100644 --- a/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java @@ -10,6 +10,7 @@ import org.hankki.hankkiserver.api.favorite.service.FavoriteQueryService; import org.hankki.hankkiserver.api.favorite.service.command.*; import org.hankki.hankkiserver.api.favorite.service.response.FavoriteGetResponse; +import org.hankki.hankkiserver.api.favorite.service.response.FavoriteIsOwnerGetResponse; import org.hankki.hankkiserver.api.favorite.service.response.FavoritesWithStatusGetResponse; import org.hankki.hankkiserver.auth.UserId; import org.hankki.hankkiserver.common.code.CommonSuccessCode; @@ -72,4 +73,9 @@ public HankkiResponse createSharedFavorite(@UserId final Long userId, @Pat favoriteCommandService.createSharedFavorite(FavoriteSharedPostCommand.of(userId, favoriteId, request.title(), request.details())); return HankkiResponse.success(CommonSuccessCode.CREATED); } + + @GetMapping("/favorites/{favoriteId}/owner") + public HankkiResponse getFavoriteIsOwner(@UserId Long userId, @PathVariable("favoriteId") final long favoriteId) { + return HankkiResponse.success(CommonSuccessCode.OK, favoriteQueryService.findFavoriteIsOwner(FavoriteIsOwnerGetCommand.of(userId, favoriteId))); + } } From bac35e6f66224e67d48641e35b65c6fa3673c668 Mon Sep 17 00:00:00 2001 From: PicturePark1101 Date: Sat, 14 Dec 2024 18:28:12 +0900 Subject: [PATCH 4/5] [feat] Add Exception Handling --- .../controller/FavoriteController.java | 8 ++++---- .../favorite/service/FavoriteQueryService.java | 18 +++++++++++++----- .../command/FavoriteIsOwnerGetCommand.java | 10 ---------- .../command/FavoriteOwnershipGetCommand.java | 10 ++++++++++ .../response/FavoriteIsOwnerGetResponse.java | 9 --------- .../response/FavoriteOwnershipGetResponse.java | 9 +++++++++ 6 files changed, 36 insertions(+), 28 deletions(-) delete mode 100644 src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteIsOwnerGetCommand.java create mode 100644 src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteOwnershipGetCommand.java delete mode 100644 src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteIsOwnerGetResponse.java create mode 100644 src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteOwnershipGetResponse.java diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java b/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java index 5027fd60..9f558af2 100644 --- a/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/controller/FavoriteController.java @@ -10,7 +10,7 @@ import org.hankki.hankkiserver.api.favorite.service.FavoriteQueryService; import org.hankki.hankkiserver.api.favorite.service.command.*; import org.hankki.hankkiserver.api.favorite.service.response.FavoriteGetResponse; -import org.hankki.hankkiserver.api.favorite.service.response.FavoriteIsOwnerGetResponse; +import org.hankki.hankkiserver.api.favorite.service.response.FavoriteOwnershipGetResponse; import org.hankki.hankkiserver.api.favorite.service.response.FavoritesWithStatusGetResponse; import org.hankki.hankkiserver.auth.UserId; import org.hankki.hankkiserver.common.code.CommonSuccessCode; @@ -74,8 +74,8 @@ public HankkiResponse createSharedFavorite(@UserId final Long userId, @Pat return HankkiResponse.success(CommonSuccessCode.CREATED); } - @GetMapping("/favorites/{favoriteId}/owner") - public HankkiResponse getFavoriteIsOwner(@UserId Long userId, @PathVariable("favoriteId") final long favoriteId) { - return HankkiResponse.success(CommonSuccessCode.OK, favoriteQueryService.findFavoriteIsOwner(FavoriteIsOwnerGetCommand.of(userId, favoriteId))); + @GetMapping("/favorites/{favoriteId}/ownership") + public HankkiResponse checkFavoriteOwnership(@UserId Long userId, @PathVariable("favoriteId") final long favoriteId) { + return HankkiResponse.success(CommonSuccessCode.OK, favoriteQueryService.checkFavoriteOwnership(FavoriteOwnershipGetCommand.of(userId, favoriteId))); } } diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java index 07aeaf79..8777f954 100644 --- a/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteQueryService.java @@ -2,11 +2,11 @@ import java.util.ArrayList; import lombok.RequiredArgsConstructor; -import org.hankki.hankkiserver.api.favorite.service.command.FavoriteIsOwnerGetCommand; +import org.hankki.hankkiserver.api.favorite.service.command.FavoriteOwnershipGetCommand; import org.hankki.hankkiserver.api.favorite.service.command.FavoritesGetCommand; import org.hankki.hankkiserver.api.favorite.service.command.FavoritesWithStatusGetCommand; import org.hankki.hankkiserver.api.favorite.service.response.FavoriteGetResponse; -import org.hankki.hankkiserver.api.favorite.service.response.FavoriteIsOwnerGetResponse; +import org.hankki.hankkiserver.api.favorite.service.response.FavoriteOwnershipGetResponse; import org.hankki.hankkiserver.api.favorite.service.response.FavoritesWithStatusGetResponse; import org.hankki.hankkiserver.api.store.service.StoreFinder; import org.hankki.hankkiserver.domain.favorite.model.Favorite; @@ -59,7 +59,15 @@ private boolean favoriteHasNoStore(final Favorite favorite) { return favorite.getFavoriteStores().isEmpty(); } - public FavoriteIsOwnerGetResponse findFavoriteIsOwner(FavoriteIsOwnerGetCommand command) { - return FavoriteIsOwnerGetResponse.of(favoriteFinder.findByIdAndUserId(command.favoriteId(), command.userId())); + public FavoriteOwnershipGetResponse checkFavoriteOwnership(final FavoriteOwnershipGetCommand command) { + return FavoriteOwnershipGetResponse.of(isOwner(getOwnerIdById(command.favoriteId()), command.userId())); } -} \ No newline at end of file + + private long getOwnerIdById(final long id) { + return favoriteFinder.findById(id).getUser().getId(); + } + + private boolean isOwner(final long ownerId, final long userId) { + return ownerId == userId; + } +} diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteIsOwnerGetCommand.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteIsOwnerGetCommand.java deleted file mode 100644 index 1f22c453..00000000 --- a/src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteIsOwnerGetCommand.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.hankki.hankkiserver.api.favorite.service.command; - -public record FavoriteIsOwnerGetCommand( - long userId, - long favoriteId -) { - public static FavoriteIsOwnerGetCommand of(final long userId, final long favoriteId) { - return new FavoriteIsOwnerGetCommand(userId, favoriteId); - } -} diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteOwnershipGetCommand.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteOwnershipGetCommand.java new file mode 100644 index 00000000..dd71fb9a --- /dev/null +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/service/command/FavoriteOwnershipGetCommand.java @@ -0,0 +1,10 @@ +package org.hankki.hankkiserver.api.favorite.service.command; + +public record FavoriteOwnershipGetCommand( + long userId, + long favoriteId +) { + public static FavoriteOwnershipGetCommand of(final long userId, final long favoriteId) { + return new FavoriteOwnershipGetCommand(userId, favoriteId); + } +} diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteIsOwnerGetResponse.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteIsOwnerGetResponse.java deleted file mode 100644 index dc24aeba..00000000 --- a/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteIsOwnerGetResponse.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.hankki.hankkiserver.api.favorite.service.response; - -public record FavoriteIsOwnerGetResponse( - boolean isOwner -) { - public static FavoriteIsOwnerGetResponse of(final boolean isOwner) { - return new FavoriteIsOwnerGetResponse(isOwner); - } -} diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteOwnershipGetResponse.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteOwnershipGetResponse.java new file mode 100644 index 00000000..1dc6ac69 --- /dev/null +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/service/response/FavoriteOwnershipGetResponse.java @@ -0,0 +1,9 @@ +package org.hankki.hankkiserver.api.favorite.service.response; + +public record FavoriteOwnershipGetResponse( + boolean isOwner +) { + public static FavoriteOwnershipGetResponse of(final boolean isOwner) { + return new FavoriteOwnershipGetResponse(isOwner); + } +} From 00764dea4330f2e75d167dd372c35bf141f74c72 Mon Sep 17 00:00:00 2001 From: PicturePark1101 Date: Sat, 14 Dec 2024 18:29:41 +0900 Subject: [PATCH 5/5] [refac] Remove Unnecessary Code --- .../hankkiserver/api/favorite/service/FavoriteFinder.java | 7 +------ .../domain/favorite/repository/FavoriteRepository.java | 4 +--- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteFinder.java b/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteFinder.java index 7efd76dd..28d4471b 100644 --- a/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteFinder.java +++ b/src/main/java/org/hankki/hankkiserver/api/favorite/service/FavoriteFinder.java @@ -3,7 +3,6 @@ import java.util.List; import java.util.Optional; import lombok.RequiredArgsConstructor; -import org.hankki.hankkiserver.api.favorite.service.response.FavoriteIsOwnerGetResponse; import org.hankki.hankkiserver.common.code.FavoriteErrorCode; import org.hankki.hankkiserver.common.exception.NotFoundException; import org.hankki.hankkiserver.domain.favorite.model.Favorite; @@ -41,8 +40,4 @@ protected Favorite findByIdWithFavoriteStore(final Long id) { protected Optional findByNameAndUser(final String name, final User user) { return favoriteRepository.findByNameAndUser(name, user); } - - boolean findByIdAndUserId(final long id, final long userId) { - return favoriteRepository.existsByIdAndAndUser(id, userId); - } -} \ No newline at end of file +} diff --git a/src/main/java/org/hankki/hankkiserver/domain/favorite/repository/FavoriteRepository.java b/src/main/java/org/hankki/hankkiserver/domain/favorite/repository/FavoriteRepository.java index 19a7e8d6..0ae0c37a 100644 --- a/src/main/java/org/hankki/hankkiserver/domain/favorite/repository/FavoriteRepository.java +++ b/src/main/java/org/hankki/hankkiserver/domain/favorite/repository/FavoriteRepository.java @@ -26,6 +26,4 @@ public interface FavoriteRepository extends JpaRepository { Optional findByIdWithFavoriteStore(@Param("favoriteId") Long favoriteId); Optional findByNameAndUser(String title, User user); - - boolean existsByIdAndAndUser(Long id, Long userId); -} \ No newline at end of file +}