From d061ab2969d14c522796c0fd46b635d81e1f95de Mon Sep 17 00:00:00 2001 From: msk226 Date: Sat, 9 Aug 2025 18:52:02 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[SPOT-304][REFACTOR]=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=ED=8C=90=20=EB=82=B4=20=EB=8C=80=EB=8C=93=EA=B8=80=20=EB=B0=8F?= =?UTF-8?q?=20=EB=8C=93=EA=B8=80=20=EC=A2=8B=EC=95=84=EC=9A=94=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=EB=A1=9C=EC=A7=81=20=EC=82=AD=EC=A0=9C=20-=202?= =?UTF-8?q?=EC=B0=A8=20=EA=B8=B0=ED=9A=8D=EC=97=90=EC=84=9C=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=EB=90=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/dto/CommentLikeResponse.java | 40 --- .../command/LikePostCommentUseCase.java | 17 -- .../application/command/LikePostUseCase.java | 2 +- .../command/ManagePostCommentUseCase.java | 4 +- .../command/ManagePostUseCase.java | 6 +- .../application/command/ScrapPostUseCase.java | 6 +- .../impl/LikePostCommentUseCaseImpl.java | 200 ------------- .../command/impl/LikePostUseCaseImpl.java | 2 +- .../impl/ManagePostCommentUseCaseImpl.java | 59 ++-- .../command/impl/ManagePostUseCaseImpl.java | 6 +- .../command/impl/ScrapPostUseCaseImpl.java | 6 +- .../application/query/GetPostUseCase.java | 12 +- .../impl/GetLikedPostCommentUseCaseImpl.java | 5 +- .../query/impl/GetPostUseCaseImpl.java | 59 ++-- .../com/example/spot/post/domain/Post.java | 3 +- .../{comment => post}/domain/PostComment.java | 5 +- .../domain/PostCommentRepository.java | 2 +- .../domain/PostCommentRepositoryCustom.java | 2 +- .../domain/association/LikedPostComment.java | 4 +- .../LikedPostCommentRepository.java | 7 +- .../PostCommentRepositoryImpl.java | 11 +- .../infrastructure/PostRepositoryImpl.java | 10 +- .../command/LikePostCommentController.java | 68 ----- .../command/LikePostController.java | 2 +- .../command/ManagePostCommentController.java | 23 +- .../command/ManagePostController.java | 30 +- .../command/ScrapPostController.java | 12 +- .../controller/query/GetPostController.java | 56 ++-- .../comment}/CommentCreateRequest.java | 2 +- .../request/{ => post}/PostCreateRequest.java | 2 +- .../request/{ => post}/PostLikeRequest.java | 2 +- .../request/{ => post}/PostUpdateRequest.java | 5 +- .../{ => post}/ScrapAllDeleteRequest.java | 4 +- .../comment}/CommentCreateResponse.java | 4 +- .../comment}/CommentDetailResponse.java | 17 +- .../response/comment}/CommentResponse.java | 2 +- .../{ => post}/PostAnnouncementResponse.java | 2 +- .../{ => post}/PostBest5DetailResponse.java | 2 +- .../{ => post}/PostBest5Response.java | 2 +- .../{ => post}/PostBoard5Response.java | 4 +- .../{ => post}/PostCreateResponse.java | 5 +- .../response/{ => post}/PostHomeResponse.java | 2 +- .../response/{ => post}/PostLikeResponse.java | 2 +- .../{ => post}/PostPagingDetailResponse.java | 6 +- .../{ => post}/PostPagingResponse.java | 5 +- .../PostRepresentativeDetailResponse.java | 2 +- .../PostRepresentativeResponse.java | 2 +- .../{ => post}/PostSingleResponse.java | 14 +- .../{ => post}/ScrapPostResponse.java | 2 +- .../{ => post}/ScrapsPostDeleteResponse.java | 2 +- .../spot/service/post/GetPostUseCaseTest.java | 20 +- .../service/post/PostCommandServiceTest.java | 280 +----------------- 52 files changed, 238 insertions(+), 811 deletions(-) delete mode 100644 src/main/java/com/example/spot/comment/presentation/dto/CommentLikeResponse.java delete mode 100644 src/main/java/com/example/spot/post/application/command/LikePostCommentUseCase.java delete mode 100644 src/main/java/com/example/spot/post/application/command/impl/LikePostCommentUseCaseImpl.java rename src/main/java/com/example/spot/{comment => post}/domain/PostComment.java (88%) rename src/main/java/com/example/spot/{comment => post}/domain/PostCommentRepository.java (84%) rename src/main/java/com/example/spot/{comment => post}/domain/PostCommentRepositoryCustom.java (76%) rename src/main/java/com/example/spot/{comment => post}/domain/association/LikedPostComment.java (86%) rename src/main/java/com/example/spot/{comment => post}/domain/association/LikedPostCommentRepository.java (94%) rename src/main/java/com/example/spot/{comment => post}/infrastructure/PostCommentRepositoryImpl.java (75%) delete mode 100644 src/main/java/com/example/spot/post/presentation/controller/command/LikePostCommentController.java rename src/main/java/com/example/spot/{comment/presentation/dto => post/presentation/dto/request/comment}/CommentCreateRequest.java (90%) rename src/main/java/com/example/spot/post/presentation/dto/request/{ => post}/PostCreateRequest.java (95%) rename src/main/java/com/example/spot/post/presentation/dto/request/{ => post}/PostLikeRequest.java (84%) rename src/main/java/com/example/spot/post/presentation/dto/request/{ => post}/PostUpdateRequest.java (87%) rename src/main/java/com/example/spot/post/presentation/dto/request/{ => post}/ScrapAllDeleteRequest.java (68%) rename src/main/java/com/example/spot/{comment/presentation/dto => post/presentation/dto/response/comment}/CommentCreateResponse.java (92%) rename src/main/java/com/example/spot/{comment/presentation/dto => post/presentation/dto/response/comment}/CommentDetailResponse.java (85%) rename src/main/java/com/example/spot/{comment/presentation/dto => post/presentation/dto/response/comment}/CommentResponse.java (81%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostAnnouncementResponse.java (79%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostBest5DetailResponse.java (94%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostBest5Response.java (91%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostBoard5Response.java (87%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostCreateResponse.java (88%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostHomeResponse.java (83%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostLikeResponse.java (85%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostPagingDetailResponse.java (93%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostPagingResponse.java (88%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostRepresentativeDetailResponse.java (94%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostRepresentativeResponse.java (80%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/PostSingleResponse.java (87%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/ScrapPostResponse.java (85%) rename src/main/java/com/example/spot/post/presentation/dto/response/{ => post}/ScrapsPostDeleteResponse.java (82%) diff --git a/src/main/java/com/example/spot/comment/presentation/dto/CommentLikeResponse.java b/src/main/java/com/example/spot/comment/presentation/dto/CommentLikeResponse.java deleted file mode 100644 index 220a500e..00000000 --- a/src/main/java/com/example/spot/comment/presentation/dto/CommentLikeResponse.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.example.spot.comment.presentation.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -@Builder -@Getter -@AllArgsConstructor(access = AccessLevel.PRIVATE) -public class CommentLikeResponse { - - @Schema( - description = "댓글 ID", - example = "1" - ) - private Long commentId; - - @Schema( - description = "좋아요 수", example = "10" - ) - - private long likeCount; - - @Schema( - description = "싫어요 수", example = "1" - ) - - private long disLikeCount; - - public static CommentLikeResponse toDTO(Long commentId, long likeCount, long disLikeCount) { - return CommentLikeResponse.builder() - .commentId(commentId) - .likeCount(likeCount) - .disLikeCount(disLikeCount) - .build(); - } - -} diff --git a/src/main/java/com/example/spot/post/application/command/LikePostCommentUseCase.java b/src/main/java/com/example/spot/post/application/command/LikePostCommentUseCase.java deleted file mode 100644 index f6b82833..00000000 --- a/src/main/java/com/example/spot/post/application/command/LikePostCommentUseCase.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.example.spot.post.application.command; - -import com.example.spot.comment.presentation.dto.CommentLikeResponse; - -public interface LikePostCommentUseCase { - //게시글 댓글 좋아요 - CommentLikeResponse likeComment(Long commentId, Long memberId); - - //게시글 댓글 좋아요 취소 - CommentLikeResponse cancelCommentLike(Long commentId, Long memberId); - - //게시글 댓글 싫어요 - CommentLikeResponse dislikeComment(Long commentId, Long memberId); - - //게시글 댓글 싫어요 취소 - CommentLikeResponse cancelCommentDislike(Long commentId, Long memberId); -} diff --git a/src/main/java/com/example/spot/post/application/command/LikePostUseCase.java b/src/main/java/com/example/spot/post/application/command/LikePostUseCase.java index 80d84374..88bd14dd 100644 --- a/src/main/java/com/example/spot/post/application/command/LikePostUseCase.java +++ b/src/main/java/com/example/spot/post/application/command/LikePostUseCase.java @@ -1,6 +1,6 @@ package com.example.spot.post.application.command; -import com.example.spot.post.presentation.dto.response.PostLikeResponse; +import com.example.spot.post.presentation.dto.response.post.PostLikeResponse; public interface LikePostUseCase { diff --git a/src/main/java/com/example/spot/post/application/command/ManagePostCommentUseCase.java b/src/main/java/com/example/spot/post/application/command/ManagePostCommentUseCase.java index 013a49ee..5c277234 100644 --- a/src/main/java/com/example/spot/post/application/command/ManagePostCommentUseCase.java +++ b/src/main/java/com/example/spot/post/application/command/ManagePostCommentUseCase.java @@ -1,7 +1,7 @@ package com.example.spot.post.application.command; -import com.example.spot.comment.presentation.dto.CommentCreateRequest; -import com.example.spot.comment.presentation.dto.CommentCreateResponse; +import com.example.spot.post.presentation.dto.request.comment.CommentCreateRequest; +import com.example.spot.post.presentation.dto.response.comment.CommentCreateResponse; public interface ManagePostCommentUseCase { diff --git a/src/main/java/com/example/spot/post/application/command/ManagePostUseCase.java b/src/main/java/com/example/spot/post/application/command/ManagePostUseCase.java index 7aa10844..03844e72 100644 --- a/src/main/java/com/example/spot/post/application/command/ManagePostUseCase.java +++ b/src/main/java/com/example/spot/post/application/command/ManagePostUseCase.java @@ -1,8 +1,8 @@ package com.example.spot.post.application.command; -import com.example.spot.post.presentation.dto.request.PostCreateRequest; -import com.example.spot.post.presentation.dto.request.PostUpdateRequest; -import com.example.spot.post.presentation.dto.response.PostCreateResponse; +import com.example.spot.post.presentation.dto.request.post.PostCreateRequest; +import com.example.spot.post.presentation.dto.request.post.PostUpdateRequest; +import com.example.spot.post.presentation.dto.response.post.PostCreateResponse; public interface ManagePostUseCase { diff --git a/src/main/java/com/example/spot/post/application/command/ScrapPostUseCase.java b/src/main/java/com/example/spot/post/application/command/ScrapPostUseCase.java index e9b8b802..adfdf32f 100644 --- a/src/main/java/com/example/spot/post/application/command/ScrapPostUseCase.java +++ b/src/main/java/com/example/spot/post/application/command/ScrapPostUseCase.java @@ -1,8 +1,8 @@ package com.example.spot.post.application.command; -import com.example.spot.post.presentation.dto.request.ScrapAllDeleteRequest; -import com.example.spot.post.presentation.dto.response.ScrapPostResponse; -import com.example.spot.post.presentation.dto.response.ScrapsPostDeleteResponse; +import com.example.spot.post.presentation.dto.request.post.ScrapAllDeleteRequest; +import com.example.spot.post.presentation.dto.response.post.ScrapPostResponse; +import com.example.spot.post.presentation.dto.response.post.ScrapsPostDeleteResponse; public interface ScrapPostUseCase { diff --git a/src/main/java/com/example/spot/post/application/command/impl/LikePostCommentUseCaseImpl.java b/src/main/java/com/example/spot/post/application/command/impl/LikePostCommentUseCaseImpl.java deleted file mode 100644 index 18bb71c4..00000000 --- a/src/main/java/com/example/spot/post/application/command/impl/LikePostCommentUseCaseImpl.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.example.spot.post.application.command.impl; - -import com.example.spot.comment.domain.PostComment; -import com.example.spot.comment.domain.PostCommentRepository; -import com.example.spot.comment.domain.association.LikedPostComment; -import com.example.spot.comment.domain.association.LikedPostCommentRepository; -import com.example.spot.comment.presentation.dto.CommentLikeResponse; -import com.example.spot.common.api.code.status.ErrorStatus; -import com.example.spot.common.api.exception.handler.MemberHandler; -import com.example.spot.common.api.exception.handler.PostHandler; -import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; -import com.example.spot.post.application.command.LikePostCommentUseCase; -import com.example.spot.post.application.query.GetLikedPostCommentUseCase; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Transactional -@RequiredArgsConstructor -public class LikePostCommentUseCaseImpl implements LikePostCommentUseCase { - - private final MemberRepository memberRepository; - private final PostCommentRepository postCommentRepository; - private final LikedPostCommentRepository likedPostCommentRepository; - - private final GetLikedPostCommentUseCase getLikedPostCommentUseCase; - - /** - * 게시글 댓글에 좋아요를 합니다. - * - * @param commentId 좋아요할 댓글 ID - * @param memberId 회원 ID - * @return 좋아요한 댓글 ID와 게시글의 현재 좋아요와 싫어요 수 - * @throws PostHandler 댓글을 찾을 수 없는 경우 - * @throws MemberHandler 회원을 찾을 수 없는 경우 - * @throws PostHandler 이미 해당 댓글에 좋아요를 한 경우 - */ - @Transactional - @Override - public CommentLikeResponse likeComment(Long commentId, Long memberId) { - // 댓글 조회하기 - PostComment comment = postCommentRepository.findById(commentId) - .orElseThrow(() -> new PostHandler(ErrorStatus._POST_COMMENT_NOT_FOUND)); - - // 회원 정보 가져오기 - Member member = memberRepository.findById(memberId) - .orElseThrow(() -> new MemberHandler(ErrorStatus._MEMBER_NOT_FOUND)); - - // 댓글 좋아요 여부 확인 - if (likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedTrue(memberId, commentId).isPresent()) { - throw new PostHandler(ErrorStatus._POST_COMMENT_ALREADY_LIKED); - } - - // 댓글 좋아요 객체 생성 및 저장 (isLiked가 true면 좋아요, false면 싫어요) - LikedPostComment likedPostComment = LikedPostComment.builder() - .postComment(comment) - .member(member) - .isLiked(true) - .build(); - - likedPostCommentRepository.saveAndFlush(likedPostComment); - - // 댓글 좋아요 수 조회 - long likeCount = getLikedPostCommentUseCase.countByPostCommentIdAndIsLikedTrue(commentId); - - // 댓글 싫어요 수 조회 - long disLikeCount = likedPostCommentRepository.countByPostCommentIdAndIsLikedFalse(commentId); - - // 댓글 좋아요 결과 반환 - return CommentLikeResponse.toDTO(comment.getId(), likeCount, disLikeCount); - } - - /** - * 게시글 댓글에 좋아요를 취소합니다. - * - * @param commentId 좋아요 취소할 댓글 ID - * @param memberId 회원 ID - * @return 좋아요 취소한 댓글 ID와 게시글의 현재 좋아요와 싫어요 수 - * @throws PostHandler 댓글을 찾을 수 없는 경우 - * @throws MemberHandler 회원을 찾을 수 없는 경우 - * @throws PostHandler 좋아요를 하지 않은 댓글일 경우 - */ - @Transactional - @Override - public CommentLikeResponse cancelCommentLike(Long commentId, Long memberId) { - // 댓글 조회하기 - PostComment comment = postCommentRepository.findById(commentId) - .orElseThrow(() -> new PostHandler(ErrorStatus._POST_COMMENT_NOT_FOUND)); - - // 회원 정보 가져오기 - memberRepository.findById(memberId) - .orElseThrow(() -> new MemberHandler(ErrorStatus._MEMBER_NOT_FOUND)); - - // 댓글 좋아요 여부 확인 - LikedPostComment likedPostComment = likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedTrue( - memberId, commentId) - .orElseThrow(() -> new PostHandler(ErrorStatus._POST_COMMENT_NOT_LIKED)); - - // 댓글 좋아요 객체 삭제 및 즉시 반영 - likedPostCommentRepository.delete(likedPostComment); - likedPostCommentRepository.flush(); - - // 댓글 좋아요 수 조회 - long likeCount = getLikedPostCommentUseCase.countByPostCommentIdAndIsLikedTrue(commentId); - - // 댓글 싫어요 수 조회 - long disLikeCount = likedPostCommentRepository.countByPostCommentIdAndIsLikedFalse(commentId); - - // 댓글 좋아요 취소 결과 반환 - return CommentLikeResponse.toDTO(comment.getId(), likeCount, disLikeCount); - } - - /** - * 게시글 댓글에 싫어요를 합니다. - * - * @param commentId 싫어요할 댓글 ID - * @param memberId 회원 ID - * @return 싫어요한 댓글 ID와 게시글의 현재 좋아요와 싫어요 수 - * @throws PostHandler 댓글을 찾을 수 없는 경우 - * @throws MemberHandler 회원을 찾을 수 없는 경우 - * @throws PostHandler 이미 해당 댓글에 싫어요를 한 경우 - */ - @Transactional - @Override - public CommentLikeResponse dislikeComment(Long commentId, Long memberId) { - // 댓글 조회 - PostComment comment = postCommentRepository.findById(commentId) - .orElseThrow(() -> new PostHandler(ErrorStatus._POST_COMMENT_NOT_FOUND)); - - // 회원 정보 조회 - Member member = memberRepository.findById(memberId) - .orElseThrow(() -> new MemberHandler(ErrorStatus._MEMBER_NOT_FOUND)); - - // 싫어요 여부 확인 - if (likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedFalse(memberId, commentId).isPresent()) { - throw new PostHandler(ErrorStatus._POST_COMMENT_ALREADY_DISLIKED); - } - - // 싫어요 객체 생성 및 저장 (isLiked가 true면 좋아요, false면 싫어요) - LikedPostComment dislikedPostComment = LikedPostComment.builder() - .postComment(comment) - .member(member) - .isLiked(false) - .build(); - - likedPostCommentRepository.saveAndFlush(dislikedPostComment); - - // 댓글 좋아요 수 조회 - long likeCount = getLikedPostCommentUseCase.countByPostCommentIdAndIsLikedTrue(commentId); - - // 댓글 싫어요 수 조회 - long disLikeCount = likedPostCommentRepository.countByPostCommentIdAndIsLikedFalse(commentId); - - // 댓글 싫어요 결과 반환 - return CommentLikeResponse.toDTO(comment.getId(), likeCount, disLikeCount); - } - - /** - * 게시글 댓글에 싫어요를 취소합니다. - * - * @param commentId 싫어요 취소할 댓글 ID - * @param memberId 회원 ID - * @return 싫어요 취소한 댓글 ID와 게시글의 현재 좋아요와 싫어요 수 - * @throws PostHandler 댓글을 찾을 수 없는 경우 - * @throws MemberHandler 회원을 찾을 수 없는 경우 - * @throws PostHandler 싫어요를 하지 않은 댓글일 경우 - */ - @Transactional - @Override - public CommentLikeResponse cancelCommentDislike(Long commentId, Long memberId) { - // 댓글 조회 - PostComment comment = postCommentRepository.findById(commentId) - .orElseThrow(() -> new PostHandler(ErrorStatus._POST_COMMENT_NOT_FOUND)); - - // 회원 정보 조회 - memberRepository.findById(memberId) - .orElseThrow(() -> new MemberHandler(ErrorStatus._MEMBER_NOT_FOUND)); - - // 싫어요 여부 확인 - LikedPostComment dislikedPostComment = likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedFalse( - memberId, commentId) - .orElseThrow(() -> new PostHandler(ErrorStatus._POST_COMMENT_NOT_DISLIKED)); - - // 싫어요 객체 삭제 및 즉시 반영 - likedPostCommentRepository.delete(dislikedPostComment); - likedPostCommentRepository.flush(); - - // 댓글 좋아요 수 조회 - long likeCount = getLikedPostCommentUseCase.countByPostCommentIdAndIsLikedTrue(commentId); - - // 댓글 싫어요 수 조회 - long disLikeCount = likedPostCommentRepository.countByPostCommentIdAndIsLikedFalse(commentId); - - // 댓글 싫어요 취소 결과 반환 - return CommentLikeResponse.toDTO(comment.getId(), likeCount, disLikeCount); - } - -} diff --git a/src/main/java/com/example/spot/post/application/command/impl/LikePostUseCaseImpl.java b/src/main/java/com/example/spot/post/application/command/impl/LikePostUseCaseImpl.java index b17d16c3..10fcb288 100644 --- a/src/main/java/com/example/spot/post/application/command/impl/LikePostUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/command/impl/LikePostUseCaseImpl.java @@ -11,7 +11,7 @@ import com.example.spot.post.domain.PostRepository; import com.example.spot.post.domain.association.LikedPost; import com.example.spot.post.domain.association.LikedPostRepository; -import com.example.spot.post.presentation.dto.response.PostLikeResponse; +import com.example.spot.post.presentation.dto.response.post.PostLikeResponse; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/example/spot/post/application/command/impl/ManagePostCommentUseCaseImpl.java b/src/main/java/com/example/spot/post/application/command/impl/ManagePostCommentUseCaseImpl.java index b19896c4..f1699343 100644 --- a/src/main/java/com/example/spot/post/application/command/impl/ManagePostCommentUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/command/impl/ManagePostCommentUseCaseImpl.java @@ -1,9 +1,9 @@ package com.example.spot.post.application.command.impl; -import com.example.spot.comment.domain.PostComment; -import com.example.spot.comment.domain.PostCommentRepository; -import com.example.spot.comment.presentation.dto.CommentCreateRequest; -import com.example.spot.comment.presentation.dto.CommentCreateResponse; +import com.example.spot.post.domain.PostComment; +import com.example.spot.post.domain.PostCommentRepository; +import com.example.spot.post.presentation.dto.request.comment.CommentCreateRequest; +import com.example.spot.post.presentation.dto.response.comment.CommentCreateResponse; import com.example.spot.common.api.code.status.ErrorStatus; import com.example.spot.common.api.exception.handler.MemberHandler; import com.example.spot.common.api.exception.handler.PostHandler; @@ -46,44 +46,21 @@ public CommentCreateResponse createComment(Long postId, Long memberId, CommentCr Member member = memberRepository.findById(memberId) .orElseThrow(() -> new MemberHandler(ErrorStatus._MEMBER_NOT_FOUND)); - if (request.getParentCommentId() == null) { - // 부모 댓글 생성 - PostComment comment = PostComment.builder() - .content(request.getContent()) - .isAnonymous(request.isAnonymous()) - .post(post) - .parentComment(null) - .member(member) - .build(); + // 부모 댓글 생성 + PostComment comment = PostComment.builder() + .content(request.getContent()) + .isAnonymous(request.isAnonymous()) + .post(post) + .parentComment(null) + .member(member) + .build(); - // 댓글 객체 저장 - comment = postCommentRepository.saveAndFlush(comment); - post.addComment(comment); - post.plusCommentNum(); + // 댓글 객체 저장 + comment = postCommentRepository.saveAndFlush(comment); + post.addComment(comment); + post.plusCommentNum(); - // 생성된 댓글 정보 반환 - return CommentCreateResponse.toDTO(comment); - - } else { - // 자식 댓글 생성 - PostComment parentComment = postCommentRepository.findById(request.getParentCommentId()) - .orElseThrow(() -> new PostHandler(ErrorStatus._POST_PARENT_COMMENT_NOT_FOUND)); - - PostComment comment = PostComment.builder() - .content(request.getContent()) - .isAnonymous(request.isAnonymous()) - .post(post) - .parentComment(parentComment) - .member(member) - .build(); - - // 댓글 객체 저장 - comment = postCommentRepository.saveAndFlush(comment); - post.addComment(comment); - post.plusCommentNum(); - - // 생성된 댓글 정보와 부모 댓글 ID 반환 - return CommentCreateResponse.toDTOwithParent(comment, parentComment.getId()); - } + // 생성된 댓글 정보 반환 + return CommentCreateResponse.toDTO(comment); } } diff --git a/src/main/java/com/example/spot/post/application/command/impl/ManagePostUseCaseImpl.java b/src/main/java/com/example/spot/post/application/command/impl/ManagePostUseCaseImpl.java index ceba4a5f..15cd5b29 100644 --- a/src/main/java/com/example/spot/post/application/command/impl/ManagePostUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/command/impl/ManagePostUseCaseImpl.java @@ -12,9 +12,9 @@ import com.example.spot.post.domain.Post; import com.example.spot.post.domain.PostRepository; import com.example.spot.post.domain.enums.Board; -import com.example.spot.post.presentation.dto.request.PostCreateRequest; -import com.example.spot.post.presentation.dto.request.PostUpdateRequest; -import com.example.spot.post.presentation.dto.response.PostCreateResponse; +import com.example.spot.post.presentation.dto.request.post.PostCreateRequest; +import com.example.spot.post.presentation.dto.request.post.PostUpdateRequest; +import com.example.spot.post.presentation.dto.response.post.PostCreateResponse; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/spot/post/application/command/impl/ScrapPostUseCaseImpl.java b/src/main/java/com/example/spot/post/application/command/impl/ScrapPostUseCaseImpl.java index b89b3024..d5412a30 100644 --- a/src/main/java/com/example/spot/post/application/command/impl/ScrapPostUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/command/impl/ScrapPostUseCaseImpl.java @@ -12,9 +12,9 @@ import com.example.spot.post.domain.PostRepository; import com.example.spot.post.domain.association.MemberScrap; import com.example.spot.post.domain.association.MemberScrapRepository; -import com.example.spot.post.presentation.dto.request.ScrapAllDeleteRequest; -import com.example.spot.post.presentation.dto.response.ScrapPostResponse; -import com.example.spot.post.presentation.dto.response.ScrapsPostDeleteResponse; +import com.example.spot.post.presentation.dto.request.post.ScrapAllDeleteRequest; +import com.example.spot.post.presentation.dto.response.post.ScrapPostResponse; +import com.example.spot.post.presentation.dto.response.post.ScrapsPostDeleteResponse; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/spot/post/application/query/GetPostUseCase.java b/src/main/java/com/example/spot/post/application/query/GetPostUseCase.java index f5b175e6..049ca8ff 100644 --- a/src/main/java/com/example/spot/post/application/query/GetPostUseCase.java +++ b/src/main/java/com/example/spot/post/application/query/GetPostUseCase.java @@ -1,11 +1,11 @@ package com.example.spot.post.application.query; -import com.example.spot.comment.presentation.dto.CommentResponse; -import com.example.spot.post.presentation.dto.response.PostAnnouncementResponse; -import com.example.spot.post.presentation.dto.response.PostBest5Response; -import com.example.spot.post.presentation.dto.response.PostPagingResponse; -import com.example.spot.post.presentation.dto.response.PostRepresentativeResponse; -import com.example.spot.post.presentation.dto.response.PostSingleResponse; +import com.example.spot.post.presentation.dto.response.comment.CommentResponse; +import com.example.spot.post.presentation.dto.response.post.PostAnnouncementResponse; +import com.example.spot.post.presentation.dto.response.post.PostBest5Response; +import com.example.spot.post.presentation.dto.response.post.PostPagingResponse; +import com.example.spot.post.presentation.dto.response.post.PostRepresentativeResponse; +import com.example.spot.post.presentation.dto.response.post.PostSingleResponse; import org.springframework.data.domain.Pageable; public interface GetPostUseCase { diff --git a/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostCommentUseCaseImpl.java b/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostCommentUseCaseImpl.java index 2631480c..cc85d912 100644 --- a/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostCommentUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostCommentUseCaseImpl.java @@ -1,6 +1,6 @@ package com.example.spot.post.application.query.impl; -import com.example.spot.comment.domain.association.LikedPostCommentRepository; +import com.example.spot.post.domain.association.LikedPostCommentRepository; import com.example.spot.post.application.query.GetLikedPostCommentUseCase; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -17,6 +17,7 @@ public class GetLikedPostCommentUseCaseImpl implements GetLikedPostCommentUseCas /** * 게시글 댓글 좋아요 수를 반환합니다. + * * @param postCommentId 게시글 댓글 ID * @return 게시글 댓글 좋아요 수 */ @@ -27,6 +28,7 @@ public long countByPostCommentIdAndIsLikedTrue(Long postCommentId) { /** * 현재 사용자의 게시글 댓글 좋아요 여부를 반환합니다. + * * @param postCommentId 게시글 댓글 ID * @return 현재 사용자의 댓글 좋아요 여부 */ @@ -38,6 +40,7 @@ public boolean existsByMemberIdAndPostCommentIdAndIsLikedTrue(Long postCommentId /** * 현재 사용자의 게시글 댓글 싫어요 여부를 true/false로 반환합니다. + * * @param postCommentId 게시글 댓글 ID * @return 현재 사용자의 댓글 싫어요 여부 */ diff --git a/src/main/java/com/example/spot/post/application/query/impl/GetPostUseCaseImpl.java b/src/main/java/com/example/spot/post/application/query/impl/GetPostUseCaseImpl.java index 3d19b04e..4504eb0b 100644 --- a/src/main/java/com/example/spot/post/application/query/impl/GetPostUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/query/impl/GetPostUseCaseImpl.java @@ -6,24 +6,24 @@ import com.example.spot.post.application.query.GetLikedPostUseCase; import com.example.spot.post.application.query.GetPostUseCase; import com.example.spot.post.domain.Post; -import com.example.spot.comment.domain.PostComment; +import com.example.spot.post.domain.PostComment; import com.example.spot.post.domain.enums.Board; import com.example.spot.post.domain.enums.PostStatus; import com.example.spot.post.domain.association.MemberScrap; import com.example.spot.post.domain.association.MemberScrapRepository; -import com.example.spot.comment.domain.PostCommentRepository; +import com.example.spot.post.domain.PostCommentRepository; import com.example.spot.report.domain.PostReportRepository; import com.example.spot.post.domain.PostRepository; -import com.example.spot.comment.presentation.dto.CommentDetailResponse; -import com.example.spot.comment.presentation.dto.CommentResponse; -import com.example.spot.post.presentation.dto.response.PostAnnouncementResponse; -import com.example.spot.post.presentation.dto.response.PostBest5DetailResponse; -import com.example.spot.post.presentation.dto.response.PostBest5Response; -import com.example.spot.post.presentation.dto.response.PostPagingDetailResponse; -import com.example.spot.post.presentation.dto.response.PostPagingResponse; -import com.example.spot.post.presentation.dto.response.PostRepresentativeDetailResponse; -import com.example.spot.post.presentation.dto.response.PostRepresentativeResponse; -import com.example.spot.post.presentation.dto.response.PostSingleResponse; +import com.example.spot.post.presentation.dto.response.comment.CommentDetailResponse; +import com.example.spot.post.presentation.dto.response.comment.CommentResponse; +import com.example.spot.post.presentation.dto.response.post.PostAnnouncementResponse; +import com.example.spot.post.presentation.dto.response.post.PostBest5DetailResponse; +import com.example.spot.post.presentation.dto.response.post.PostBest5Response; +import com.example.spot.post.presentation.dto.response.post.PostPagingDetailResponse; +import com.example.spot.post.presentation.dto.response.post.PostPagingResponse; +import com.example.spot.post.presentation.dto.response.post.PostRepresentativeDetailResponse; +import com.example.spot.post.presentation.dto.response.post.PostRepresentativeResponse; +import com.example.spot.post.presentation.dto.response.post.PostSingleResponse; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; @@ -53,6 +53,7 @@ public class GetPostUseCaseImpl implements GetPostUseCase { /** * 게시글 단건 조회 : 게시글 1개의 상세 정보를 댓글 리스트와 함께 조회합니다. + * * @param postId 조회할 게시글 ID * @return 조회한 게시글의 정보와 좋아요/스크랩 수, 댓글 리스트, 현재 사용자의 좋아요/스크랩 여부, 프로필 이미지 반환 * @throws PostHandler 게시글을 찾을 수 없는 경우 @@ -94,12 +95,14 @@ public PostSingleResponse getPostById(Long postId, boolean likeOrScrap) { CommentResponse commentResponse = getCommentsByPostId(post.getId()); // 조회된 게시글을 PostSingleResponse로 변환하여 반환 (익명처리일 경우 프로필 이미지를 DEFAULT_PROFILE_IMAGE_URL로 반환) - return PostSingleResponse.toDTO(post, likeCount, scrapCount, commentResponse, likedByCurrentUser, scrapedByCurrentUser, createdByCurrentUser, DEFAULT_PROFILE_IMAGE_URL); + return PostSingleResponse.toDTO(post, likeCount, scrapCount, commentResponse, likedByCurrentUser, + scrapedByCurrentUser, createdByCurrentUser, DEFAULT_PROFILE_IMAGE_URL); } /** * 게시글 페이징 조회 : 게시글 종류별로 게시글 목록을 페이징 조회합니다. - * @param type 게시글 종류 + * + * @param type 게시글 종류 * @param pageable 페이지 정보 * @return 게시글 타입과 게시글 목록, 페이지 정보 반환 */ @@ -126,8 +129,10 @@ public PostPagingResponse getPagingPosts(String type, Pageable pageable) { boolean likedByCurrentUser = getLikedPostUseCase.existsByMemberIdAndPostId(post.getId()); long scrapCount = memberScrapRepository.countByPostId(post.getId()); Long currentUserId = getCurrentUserId(); - boolean scrapedByCurrentUser = memberScrapRepository.existsByMemberIdAndPostId(currentUserId, post.getId()); - return PostPagingDetailResponse.toDTO(post, likeCount, scrapCount, likedByCurrentUser, scrapedByCurrentUser); + boolean scrapedByCurrentUser = memberScrapRepository.existsByMemberIdAndPostId(currentUserId, + post.getId()); + return PostPagingDetailResponse.toDTO(post, likeCount, scrapCount, likedByCurrentUser, + scrapedByCurrentUser); }) .toList(); @@ -149,6 +154,7 @@ private boolean isPostReported(Post post) { /** * 인기글 종류(실시간, 추천순, 댓글순)에 따라 게시글을 상위 5개씩 조회합니다. + * * @param sortType 인기글 종류 * @return 상위 5개의 인기글 목록 반환 * @throws PostHandler 인기글 종류를 찾을 수 없는 경우 @@ -211,6 +217,7 @@ public PostBest5Response getPostBest(String sortType) { /** * 게시글 종류 별로 가장 최신 게시글을 1개씩 조회합니다. + * * @return 게시글 종류와 각 최신 게시글 목록 반환 */ @Transactional(readOnly = true) @@ -232,6 +239,7 @@ public PostRepresentativeResponse getRepresentativePosts() { /** * 최신 공지 5개를 조회합니다. + * * @return 최신순 5개의 공지글 목록 반환 */ @Transactional(readOnly = true) @@ -254,6 +262,7 @@ public PostAnnouncementResponse getPostAnnouncements() { /** * 조회한 게시글의 댓글 리스트을 조회합니다. + * * @param postId 조회한 게시글 ID * @return 댓글 리스트 반환 */ @@ -272,9 +281,12 @@ public CommentResponse getCommentsByPostId(Long postId) { List commentResponses = comments.stream() .map(comment -> { long likeCount = getLikedPostCommentUseCase.countByPostCommentIdAndIsLikedTrue(comment.getId()); - boolean likedByCurrentUser = getLikedPostCommentUseCase.existsByMemberIdAndPostCommentIdAndIsLikedTrue(comment.getId()); - boolean dislikedByCurrentUser = getLikedPostCommentUseCase.existsByMemberIdAndPostCommentIdAndIsLikedFalse(comment.getId()); - return CommentDetailResponse.toDTO(comment, likeCount, likedByCurrentUser, dislikedByCurrentUser, DEFAULT_PROFILE_IMAGE_URL); + boolean likedByCurrentUser = getLikedPostCommentUseCase.existsByMemberIdAndPostCommentIdAndIsLikedTrue( + comment.getId()); + boolean dislikedByCurrentUser = getLikedPostCommentUseCase.existsByMemberIdAndPostCommentIdAndIsLikedFalse( + comment.getId()); + return CommentDetailResponse.toDTO(comment, likeCount, likedByCurrentUser, dislikedByCurrentUser, + DEFAULT_PROFILE_IMAGE_URL); }) .toList(); @@ -286,7 +298,8 @@ public CommentResponse getCommentsByPostId(Long postId) { /** * 스크랩한 게시글을 게시글 종류 별로 페이징 조회합니다. - * @param type 게시글 종류 + * + * @param type 게시글 종류 * @param pageable 페이지 정보 * @return 게시글 종류와 스크랩한 게시글 목록, 페이지 정보 반환 */ @@ -318,8 +331,10 @@ public PostPagingResponse getScrapPagingPost(String type, Pageable pageable) { //현재 사용자 좋아요 여부 boolean likedByCurrentUser = getLikedPostUseCase.existsByMemberIdAndPostId(post.getId()); long scrapCount = memberScrapRepository.countByPostId(post.getId()); - boolean scrapedByCurrentUser = memberScrapRepository.existsByMemberIdAndPostId(currentUserId, post.getId()); - return PostPagingDetailResponse.toDTO(post, likeCount, scrapCount, likedByCurrentUser, scrapedByCurrentUser); + boolean scrapedByCurrentUser = memberScrapRepository.existsByMemberIdAndPostId(currentUserId, + post.getId()); + return PostPagingDetailResponse.toDTO(post, likeCount, scrapCount, likedByCurrentUser, + scrapedByCurrentUser); }) .toList(); diff --git a/src/main/java/com/example/spot/post/domain/Post.java b/src/main/java/com/example/spot/post/domain/Post.java index 7d29b153..00de2fa5 100644 --- a/src/main/java/com/example/spot/post/domain/Post.java +++ b/src/main/java/com/example/spot/post/domain/Post.java @@ -1,13 +1,12 @@ package com.example.spot.post.domain; import com.example.spot.post.domain.association.LikedPost; -import com.example.spot.comment.domain.PostComment; import com.example.spot.post.domain.association.PostImage; import com.example.spot.report.domain.PostReport; import com.example.spot.common.entity.BaseEntity; import com.example.spot.post.domain.enums.Board; import com.example.spot.post.domain.association.MemberScrap; -import com.example.spot.post.presentation.dto.request.PostUpdateRequest; +import com.example.spot.post.presentation.dto.request.post.PostUpdateRequest; import com.example.spot.member.domain.Member; import jakarta.persistence.*; diff --git a/src/main/java/com/example/spot/comment/domain/PostComment.java b/src/main/java/com/example/spot/post/domain/PostComment.java similarity index 88% rename from src/main/java/com/example/spot/comment/domain/PostComment.java rename to src/main/java/com/example/spot/post/domain/PostComment.java index e33e5cbb..77fd91bb 100644 --- a/src/main/java/com/example/spot/comment/domain/PostComment.java +++ b/src/main/java/com/example/spot/post/domain/PostComment.java @@ -1,9 +1,8 @@ -package com.example.spot.comment.domain; +package com.example.spot.post.domain; -import com.example.spot.comment.domain.association.LikedPostComment; +import com.example.spot.post.domain.association.LikedPostComment; import com.example.spot.common.entity.BaseEntity; import com.example.spot.member.domain.Member; -import com.example.spot.post.domain.Post; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/example/spot/comment/domain/PostCommentRepository.java b/src/main/java/com/example/spot/post/domain/PostCommentRepository.java similarity index 84% rename from src/main/java/com/example/spot/comment/domain/PostCommentRepository.java rename to src/main/java/com/example/spot/post/domain/PostCommentRepository.java index 7a8134af..4b8c8ac7 100644 --- a/src/main/java/com/example/spot/comment/domain/PostCommentRepository.java +++ b/src/main/java/com/example/spot/post/domain/PostCommentRepository.java @@ -1,4 +1,4 @@ -package com.example.spot.comment.domain; +package com.example.spot.post.domain; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/example/spot/comment/domain/PostCommentRepositoryCustom.java b/src/main/java/com/example/spot/post/domain/PostCommentRepositoryCustom.java similarity index 76% rename from src/main/java/com/example/spot/comment/domain/PostCommentRepositoryCustom.java rename to src/main/java/com/example/spot/post/domain/PostCommentRepositoryCustom.java index 88454821..5a64e88d 100644 --- a/src/main/java/com/example/spot/comment/domain/PostCommentRepositoryCustom.java +++ b/src/main/java/com/example/spot/post/domain/PostCommentRepositoryCustom.java @@ -1,4 +1,4 @@ -package com.example.spot.comment.domain; +package com.example.spot.post.domain; import java.util.List; diff --git a/src/main/java/com/example/spot/comment/domain/association/LikedPostComment.java b/src/main/java/com/example/spot/post/domain/association/LikedPostComment.java similarity index 86% rename from src/main/java/com/example/spot/comment/domain/association/LikedPostComment.java rename to src/main/java/com/example/spot/post/domain/association/LikedPostComment.java index 1d89cd21..0a62db59 100644 --- a/src/main/java/com/example/spot/comment/domain/association/LikedPostComment.java +++ b/src/main/java/com/example/spot/post/domain/association/LikedPostComment.java @@ -1,7 +1,7 @@ -package com.example.spot.comment.domain.association; +package com.example.spot.post.domain.association; -import com.example.spot.comment.domain.PostComment; +import com.example.spot.post.domain.PostComment; import com.example.spot.common.entity.BaseEntity; import com.example.spot.member.domain.Member; diff --git a/src/main/java/com/example/spot/comment/domain/association/LikedPostCommentRepository.java b/src/main/java/com/example/spot/post/domain/association/LikedPostCommentRepository.java similarity index 94% rename from src/main/java/com/example/spot/comment/domain/association/LikedPostCommentRepository.java rename to src/main/java/com/example/spot/post/domain/association/LikedPostCommentRepository.java index afd5d21a..62cf0bbe 100644 --- a/src/main/java/com/example/spot/comment/domain/association/LikedPostCommentRepository.java +++ b/src/main/java/com/example/spot/post/domain/association/LikedPostCommentRepository.java @@ -1,4 +1,4 @@ -package com.example.spot.comment.domain.association; +package com.example.spot.post.domain.association; import org.springframework.data.jpa.repository.JpaRepository; @@ -6,11 +6,16 @@ public interface LikedPostCommentRepository extends JpaRepository { Optional findByMemberIdAndPostCommentIdAndIsLikedTrue(Long memberId, Long postCommentId); + Optional findByMemberIdAndPostCommentIdAndIsLikedFalse(Long memberId, Long postCommentId); + long countByPostCommentIdAndIsLikedTrue(Long postCommentId); + long countByPostCommentIdAndIsLikedFalse(Long postCommentId); + //회원 ID와 댓글 ID로 좋아요(IsLiked=True) 존재 여부 boolean existsByMemberIdAndPostCommentIdAndIsLikedTrue(Long currentUserId, Long postCommentId); + //회원 ID와 댓글 ID로 싫어요(IsLiked=False) 존재 여부 boolean existsByMemberIdAndPostCommentIdAndIsLikedFalse(Long currentUserId, Long postCommentId); } diff --git a/src/main/java/com/example/spot/comment/infrastructure/PostCommentRepositoryImpl.java b/src/main/java/com/example/spot/post/infrastructure/PostCommentRepositoryImpl.java similarity index 75% rename from src/main/java/com/example/spot/comment/infrastructure/PostCommentRepositoryImpl.java rename to src/main/java/com/example/spot/post/infrastructure/PostCommentRepositoryImpl.java index 83b2332c..bba96e45 100644 --- a/src/main/java/com/example/spot/comment/infrastructure/PostCommentRepositoryImpl.java +++ b/src/main/java/com/example/spot/post/infrastructure/PostCommentRepositoryImpl.java @@ -1,14 +1,13 @@ -package com.example.spot.comment.infrastructure; +package com.example.spot.post.infrastructure; -import static com.example.spot.comment.domain.QPostComment.*; +import static com.example.spot.post.domain.QPostComment.postComment; -import com.example.spot.comment.domain.PostComment; -import com.example.spot.comment.domain.PostCommentRepositoryCustom; +import com.example.spot.post.domain.PostComment; +import com.example.spot.post.domain.PostCommentRepositoryCustom; import com.querydsl.jpa.impl.JPAQueryFactory; -import lombok.RequiredArgsConstructor; - import java.util.List; +import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class PostCommentRepositoryImpl implements PostCommentRepositoryCustom { diff --git a/src/main/java/com/example/spot/post/infrastructure/PostRepositoryImpl.java b/src/main/java/com/example/spot/post/infrastructure/PostRepositoryImpl.java index 746114ad..6dc15166 100644 --- a/src/main/java/com/example/spot/post/infrastructure/PostRepositoryImpl.java +++ b/src/main/java/com/example/spot/post/infrastructure/PostRepositoryImpl.java @@ -1,20 +1,18 @@ package com.example.spot.post.infrastructure; -import com.example.spot.comment.domain.QPostComment; import com.example.spot.post.domain.Post; +import com.example.spot.post.domain.PostRepositoryCustom; import com.example.spot.post.domain.QPost; +import com.example.spot.post.domain.QPostComment; import com.example.spot.post.domain.association.QLikedPost; import com.example.spot.post.domain.enums.Board; -import com.example.spot.post.domain.PostRepositoryCustom; import com.querydsl.jpa.impl.JPAQueryFactory; -import lombok.RequiredArgsConstructor; - import java.time.LocalDateTime; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; - +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @Component @@ -28,7 +26,7 @@ public class PostRepositoryImpl implements PostRepositoryCustom { private final QPostComment comment = QPostComment.postComment; private final QLikedPost like = QLikedPost.likedPost; - //댓글순 + // 댓글순 @Override public List findTopByOrderByCommentCountDesc() { return jpaQueryFactory diff --git a/src/main/java/com/example/spot/post/presentation/controller/command/LikePostCommentController.java b/src/main/java/com/example/spot/post/presentation/controller/command/LikePostCommentController.java deleted file mode 100644 index 588419cf..00000000 --- a/src/main/java/com/example/spot/post/presentation/controller/command/LikePostCommentController.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.example.spot.post.presentation.controller.command; - -import com.example.spot.comment.presentation.dto.CommentLikeResponse; -import com.example.spot.common.api.ApiResponse; -import com.example.spot.common.api.code.status.SuccessStatus; -import com.example.spot.common.security.utils.SecurityUtils; -import com.example.spot.post.application.command.LikePostCommentUseCase; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@Validated -@RestController -@RequiredArgsConstructor -@RequestMapping("/spot/posts") -public class LikePostCommentController { - - private final LikePostCommentUseCase likePostCommentUseCase; - - //게시글 댓글 좋아요 - @Tag(name = "게시판 - 댓글", description = "댓글 관련 API") - @Operation(summary = "[게시판] 댓글 좋아요 API", description = "댓글 ID와 회원 ID를 받아 댓글에 좋아요를 추가합니다.") - @PostMapping("/comments/{commentId}/like") - public ApiResponse likeComment( - @PathVariable Long commentId - ) { - CommentLikeResponse response = likePostCommentUseCase.likeComment(commentId, SecurityUtils.getCurrentUserId()); - return ApiResponse.onSuccess(SuccessStatus._OK, response); - } - - @Tag(name = "게시판 - 댓글", description = "댓글 관련 API") - @Operation(summary = "[게시판] 댓글 좋아요 취소 API", description = "댓글 ID와 회원 ID를 받아 댓글에 좋아요를 취소합니다.") - @DeleteMapping("/comments/{commentId}/like") - public ApiResponse cancelCommentLike( - @PathVariable Long commentId - ) { - CommentLikeResponse response = likePostCommentUseCase.cancelCommentLike(commentId, SecurityUtils.getCurrentUserId()); - return ApiResponse.onSuccess(SuccessStatus._NO_CONTENT, response); - } - - //게시글 댓글 싫어요 - @Tag(name = "게시판 - 댓글", description = "댓글 관련 API") - @Operation(summary = "[게시판] 댓글 싫어요 API", description = "댓글 ID와 회원 ID를 받아 댓글에 싫어요를 추가합니다.") - @PostMapping("/comments/{commentId}/dislike") - public ApiResponse dislikeComment( - @PathVariable Long commentId - ) { - CommentLikeResponse response = likePostCommentUseCase.dislikeComment(commentId, SecurityUtils.getCurrentUserId()); - return ApiResponse.onSuccess(SuccessStatus._OK, response); - } - - @Tag(name = "게시판 - 댓글", description = "댓글 관련 API") - @Operation(summary = "[게시판] 댓글 싫어요 취소 API", description = "댓글 ID와 회원 ID를 받아 댓글에 싫어요를 취소합니다.") - @DeleteMapping("/comments/{commentId}/dislike") - public ApiResponse cancelCommentDislike( - @PathVariable Long commentId - ) { - CommentLikeResponse response = likePostCommentUseCase.cancelCommentDislike(commentId, SecurityUtils.getCurrentUserId()); - return ApiResponse.onSuccess(SuccessStatus._NO_CONTENT, response); - } - -} diff --git a/src/main/java/com/example/spot/post/presentation/controller/command/LikePostController.java b/src/main/java/com/example/spot/post/presentation/controller/command/LikePostController.java index 4b0216b5..c671f448 100644 --- a/src/main/java/com/example/spot/post/presentation/controller/command/LikePostController.java +++ b/src/main/java/com/example/spot/post/presentation/controller/command/LikePostController.java @@ -4,7 +4,7 @@ import com.example.spot.common.api.code.status.SuccessStatus; import com.example.spot.common.security.utils.SecurityUtils; import com.example.spot.post.application.command.LikePostUseCase; -import com.example.spot.post.presentation.dto.response.PostLikeResponse; +import com.example.spot.post.presentation.dto.response.post.PostLikeResponse; import com.example.spot.post.presentation.validator.ExistPost; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/com/example/spot/post/presentation/controller/command/ManagePostCommentController.java b/src/main/java/com/example/spot/post/presentation/controller/command/ManagePostCommentController.java index e7e82f4a..44d8a05e 100644 --- a/src/main/java/com/example/spot/post/presentation/controller/command/ManagePostCommentController.java +++ b/src/main/java/com/example/spot/post/presentation/controller/command/ManagePostCommentController.java @@ -1,7 +1,7 @@ package com.example.spot.post.presentation.controller.command; -import com.example.spot.comment.presentation.dto.CommentCreateRequest; -import com.example.spot.comment.presentation.dto.CommentCreateResponse; +import com.example.spot.post.presentation.dto.request.comment.CommentCreateRequest; +import com.example.spot.post.presentation.dto.response.comment.CommentCreateResponse; import com.example.spot.common.api.ApiResponse; import com.example.spot.common.api.code.status.SuccessStatus; import com.example.spot.common.security.utils.SecurityUtils; @@ -29,19 +29,20 @@ public class ManagePostCommentController { @Tag(name = "게시판 - 댓글", description = "댓글 관련 API") @Operation(summary = "[게시판] 댓글 생성 API", description = """ - 게시글 Id와 회원 Id를 받아 댓글을 생성합니다. - - 댓글일 경우 parentCommentId는 0이고, 대댓글일 경우 부모댓글 parentCommentId를 받습니다. - - 익명 여부 선택할 수 있습니다. - - 생성된 댓글의 고유 ID와 부모댓글 ID(parentCommentId가 0일 경우 null로 반환), 댓글 내용, 작성자를 반환합니다. - """) + 게시글 Id와 회원 Id를 받아 댓글을 생성합니다. + + 댓글일 경우 parentCommentId는 0이고, 대댓글일 경우 부모댓글 parentCommentId를 받습니다. + + 익명 여부 선택할 수 있습니다. + + 생성된 댓글의 고유 ID와 부모댓글 ID(parentCommentId가 0일 경우 null로 반환), 댓글 내용, 작성자를 반환합니다. + """) @PostMapping("/{postId}/comments") public ApiResponse createComment( @PathVariable @ExistPost Long postId, @RequestBody CommentCreateRequest request) { - CommentCreateResponse response = managePostCommentUseCase.createComment(postId, SecurityUtils.getCurrentUserId(), request); + CommentCreateResponse response = managePostCommentUseCase.createComment(postId, + SecurityUtils.getCurrentUserId(), request); return ApiResponse.onSuccess(SuccessStatus._CREATED, response); } } diff --git a/src/main/java/com/example/spot/post/presentation/controller/command/ManagePostController.java b/src/main/java/com/example/spot/post/presentation/controller/command/ManagePostController.java index c496c562..f1e1d63a 100644 --- a/src/main/java/com/example/spot/post/presentation/controller/command/ManagePostController.java +++ b/src/main/java/com/example/spot/post/presentation/controller/command/ManagePostController.java @@ -5,9 +5,9 @@ import com.example.spot.common.api.code.status.SuccessStatus; import com.example.spot.common.security.utils.SecurityUtils; import com.example.spot.post.application.command.ManagePostUseCase; -import com.example.spot.post.presentation.dto.request.PostCreateRequest; -import com.example.spot.post.presentation.dto.request.PostUpdateRequest; -import com.example.spot.post.presentation.dto.response.PostCreateResponse; +import com.example.spot.post.presentation.dto.request.post.PostCreateRequest; +import com.example.spot.post.presentation.dto.request.post.PostUpdateRequest; +import com.example.spot.post.presentation.dto.response.post.PostCreateResponse; import com.example.spot.post.presentation.validator.ExistPost; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -38,14 +38,14 @@ public class ManagePostController { @Operation( summary = "[게시판] 게시글 등록 API", description = """ - 입력 받은 값으로 게시글을 하나 등록 합니다. - - 게시글 종류는 PASS_EXPERIENCE, INFORMATION_SHARING, COUNSELING, JOB_TALK, FREE_TALK, SPOT_ANNOUNCEMENT 중 하나입니다. - - 익명 여부를 선택할 수 있습니다. - - 생성된 게시글의 고유 ID와 게시글 종류, 생성 시간을 반환합니다. 요청 시, 요청 타입은 Multipart/form-data로 보내야 합니다. - """, + 입력 받은 값으로 게시글을 하나 등록 합니다. + + 게시글 종류는 PASS_EXPERIENCE, INFORMATION_SHARING, COUNSELING, JOB_TALK, FREE_TALK, SPOT_ANNOUNCEMENT 중 하나입니다. + + 익명 여부를 선택할 수 있습니다. + + 생성된 게시글의 고유 ID와 게시글 종류, 생성 시간을 반환합니다. 요청 시, 요청 타입은 Multipart/form-data로 보내야 합니다. + """, security = @SecurityRequirement(name = "accessToken") ) @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @@ -60,8 +60,9 @@ public ApiResponse create( @Tag(name = "게시판", description = "게시판 관련 API") @Operation( summary = "[게시판] 게시글 수정 API", - description = "게시글 Id를 받아 게시글을 수정합니다. existingImage는 기존 이미지 URL입니다. 수정할 이미지가 없을 경우 null로 보내주세요. 요청 시, 요청 타입은 Multipart/form-data로 보내야 합니다." - + "\n" + "existingImage와 image 둘 중 하나만 보내주세요. 둘 다 보내면 기존 이미지로 덮어씌워집니다.", + description = + "게시글 Id를 받아 게시글을 수정합니다. existingImage는 기존 이미지 URL입니다. 수정할 이미지가 없을 경우 null로 보내주세요. 요청 시, 요청 타입은 Multipart/form-data로 보내야 합니다." + + "\n" + "existingImage와 image 둘 중 하나만 보내주세요. 둘 다 보내면 기존 이미지로 덮어씌워집니다.", security = @SecurityRequirement(name = "accessToken") ) @PatchMapping(value = "/{postId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @@ -76,7 +77,8 @@ public ApiResponse update( ) @ModelAttribute PostUpdateRequest postUpdateRequest ) { - PostCreateResponse response = managePostUseCase.updatePost(SecurityUtils.getCurrentUserId(), postId, postUpdateRequest); + PostCreateResponse response = managePostUseCase.updatePost(SecurityUtils.getCurrentUserId(), postId, + postUpdateRequest); return ApiResponse.onSuccess(SuccessStatus._OK, response); } diff --git a/src/main/java/com/example/spot/post/presentation/controller/command/ScrapPostController.java b/src/main/java/com/example/spot/post/presentation/controller/command/ScrapPostController.java index f9d7f3d0..5cfa2d5a 100644 --- a/src/main/java/com/example/spot/post/presentation/controller/command/ScrapPostController.java +++ b/src/main/java/com/example/spot/post/presentation/controller/command/ScrapPostController.java @@ -4,25 +4,19 @@ import com.example.spot.common.api.code.status.SuccessStatus; import com.example.spot.common.security.utils.SecurityUtils; import com.example.spot.post.application.command.ScrapPostUseCase; -import com.example.spot.post.presentation.dto.request.ScrapAllDeleteRequest; -import com.example.spot.post.presentation.dto.response.PostPagingResponse; -import com.example.spot.post.presentation.dto.response.ScrapPostResponse; -import com.example.spot.post.presentation.dto.response.ScrapsPostDeleteResponse; +import com.example.spot.post.presentation.dto.request.post.ScrapAllDeleteRequest; +import com.example.spot.post.presentation.dto.response.post.ScrapPostResponse; +import com.example.spot.post.presentation.dto.response.post.ScrapsPostDeleteResponse; import com.example.spot.post.presentation.validator.ExistPost; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @Validated diff --git a/src/main/java/com/example/spot/post/presentation/controller/query/GetPostController.java b/src/main/java/com/example/spot/post/presentation/controller/query/GetPostController.java index 1efef87c..34f5c90e 100644 --- a/src/main/java/com/example/spot/post/presentation/controller/query/GetPostController.java +++ b/src/main/java/com/example/spot/post/presentation/controller/query/GetPostController.java @@ -1,14 +1,14 @@ package com.example.spot.post.presentation.controller.query; -import com.example.spot.comment.presentation.dto.CommentResponse; +import com.example.spot.post.presentation.dto.response.comment.CommentResponse; import com.example.spot.common.api.ApiResponse; import com.example.spot.common.api.code.status.SuccessStatus; import com.example.spot.post.application.query.GetPostUseCase; -import com.example.spot.post.presentation.dto.response.PostAnnouncementResponse; -import com.example.spot.post.presentation.dto.response.PostBest5Response; -import com.example.spot.post.presentation.dto.response.PostPagingResponse; -import com.example.spot.post.presentation.dto.response.PostRepresentativeResponse; -import com.example.spot.post.presentation.dto.response.PostSingleResponse; +import com.example.spot.post.presentation.dto.response.post.PostAnnouncementResponse; +import com.example.spot.post.presentation.dto.response.post.PostBest5Response; +import com.example.spot.post.presentation.dto.response.post.PostPagingResponse; +import com.example.spot.post.presentation.dto.response.post.PostRepresentativeResponse; +import com.example.spot.post.presentation.dto.response.post.PostSingleResponse; import com.example.spot.post.presentation.validator.ExistPost; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -37,12 +37,12 @@ public class GetPostController { @Operation( summary = "[게시판] 게시글 단건 조회 API", description = """ - 게시글 ID를 받아 게시글을 조회합니다. - - 해당 게시글에 대한 상세 정보를 반환합니다. - - 좋아요나 스크랩으로 인한 조회 시 그 여부를 받습니다. - """, + 게시글 ID를 받아 게시글을 조회합니다. + + 해당 게시글에 대한 상세 정보를 반환합니다. + + 좋아요나 스크랩으로 인한 조회 시 그 여부를 받습니다. + """, security = @SecurityRequirement(name = "accessToken") ) @GetMapping("/{postId}") @@ -59,14 +59,14 @@ public ApiResponse singlePost( @Operation( summary = "[게시판] 게시글 페이지 조회 API", description = """ - 게시글 종류를 받아 페이지 번호와 페이지 크기에 해당하는 게시글을 조회합니다. - - 게시글 종류는 ALL, PASS_EXPERIENCE, INFORMATION_SHARING, COUNSELING, JOB_TALK, FREE_TALK, SPOT_ANNOUNCEMENT 중 하나입니다. - - 페이지 번호는 0부터 시작하며 기본값은 0입니다. - - 페이지 크기는 1부터 시작하며 기본값은 10입니다. - """ + 게시글 종류를 받아 페이지 번호와 페이지 크기에 해당하는 게시글을 조회합니다. + + 게시글 종류는 ALL, PASS_EXPERIENCE, INFORMATION_SHARING, COUNSELING, JOB_TALK, FREE_TALK, SPOT_ANNOUNCEMENT 중 하나입니다. + + 페이지 번호는 0부터 시작하며 기본값은 0입니다. + + 페이지 크기는 1부터 시작하며 기본값은 10입니다. + """ ) @GetMapping public ApiResponse getPagingPost( @@ -119,14 +119,14 @@ public ApiResponse getPostAnnouncement() { @Operation( summary = "[마이페이지] 게시글 스크랩 페이지 조회 API", description = """ - 로그인한 회원이 스크랩한 게시글을 게시글 종류와 페이지 번호, 페이지 크기를 받아 조회합니다. - - 게시글 종류는 ALL, PASS_EXPERIENCE, INFORMATION_SHARING, COUNSELING, JOB_TALK, FREE_TALK, SPOT_ANNOUNCEMENT 중 하나입니다. - - 페이지 번호는 0부터 시작하며 기본값은 0입니다. - - 페이지 크기는 1부터 시작하며 기본값은 10입니다. - """ + 로그인한 회원이 스크랩한 게시글을 게시글 종류와 페이지 번호, 페이지 크기를 받아 조회합니다. + + 게시글 종류는 ALL, PASS_EXPERIENCE, INFORMATION_SHARING, COUNSELING, JOB_TALK, FREE_TALK, SPOT_ANNOUNCEMENT 중 하나입니다. + + 페이지 번호는 0부터 시작하며 기본값은 0입니다. + + 페이지 크기는 1부터 시작하며 기본값은 10입니다. + """ ) @GetMapping("/scraps") public ApiResponse getScrapPagingPost( diff --git a/src/main/java/com/example/spot/comment/presentation/dto/CommentCreateRequest.java b/src/main/java/com/example/spot/post/presentation/dto/request/comment/CommentCreateRequest.java similarity index 90% rename from src/main/java/com/example/spot/comment/presentation/dto/CommentCreateRequest.java rename to src/main/java/com/example/spot/post/presentation/dto/request/comment/CommentCreateRequest.java index 18f43afb..4c41109c 100644 --- a/src/main/java/com/example/spot/comment/presentation/dto/CommentCreateRequest.java +++ b/src/main/java/com/example/spot/post/presentation/dto/request/comment/CommentCreateRequest.java @@ -1,4 +1,4 @@ -package com.example.spot.comment.presentation.dto; +package com.example.spot.post.presentation.dto.request.comment; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/example/spot/post/presentation/dto/request/PostCreateRequest.java b/src/main/java/com/example/spot/post/presentation/dto/request/post/PostCreateRequest.java similarity index 95% rename from src/main/java/com/example/spot/post/presentation/dto/request/PostCreateRequest.java rename to src/main/java/com/example/spot/post/presentation/dto/request/post/PostCreateRequest.java index 714c5e2b..0b4fec13 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/request/PostCreateRequest.java +++ b/src/main/java/com/example/spot/post/presentation/dto/request/post/PostCreateRequest.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.request; +package com.example.spot.post.presentation.dto.request.post; import com.example.spot.post.domain.enums.Board; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/src/main/java/com/example/spot/post/presentation/dto/request/PostLikeRequest.java b/src/main/java/com/example/spot/post/presentation/dto/request/post/PostLikeRequest.java similarity index 84% rename from src/main/java/com/example/spot/post/presentation/dto/request/PostLikeRequest.java rename to src/main/java/com/example/spot/post/presentation/dto/request/post/PostLikeRequest.java index 35af0f70..919503c6 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/request/PostLikeRequest.java +++ b/src/main/java/com/example/spot/post/presentation/dto/request/post/PostLikeRequest.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.request; +package com.example.spot.post.presentation.dto.request.post; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Builder; diff --git a/src/main/java/com/example/spot/post/presentation/dto/request/PostUpdateRequest.java b/src/main/java/com/example/spot/post/presentation/dto/request/post/PostUpdateRequest.java similarity index 87% rename from src/main/java/com/example/spot/post/presentation/dto/request/PostUpdateRequest.java rename to src/main/java/com/example/spot/post/presentation/dto/request/post/PostUpdateRequest.java index 24b67576..893868f1 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/request/PostUpdateRequest.java +++ b/src/main/java/com/example/spot/post/presentation/dto/request/post/PostUpdateRequest.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.request; +package com.example.spot.post.presentation.dto.request.post; import com.example.spot.post.domain.enums.Board; import io.swagger.v3.oas.annotations.media.Schema; @@ -29,7 +29,8 @@ public class PostUpdateRequest { @Schema( description = "게시글 타입입니다. 아래와 같이 작성해주세요.", - allowableValues = {"ALL", "PASS_EXPERIENCE", "INFORMATION_SHARING", "COUNSELING", "JOB_TALK", "FREE_TALK", "SPOT_ANNOUNCEMENT"} + allowableValues = {"ALL", "PASS_EXPERIENCE", "INFORMATION_SHARING", "COUNSELING", "JOB_TALK", "FREE_TALK", + "SPOT_ANNOUNCEMENT"} ) private String type; diff --git a/src/main/java/com/example/spot/post/presentation/dto/request/ScrapAllDeleteRequest.java b/src/main/java/com/example/spot/post/presentation/dto/request/post/ScrapAllDeleteRequest.java similarity index 68% rename from src/main/java/com/example/spot/post/presentation/dto/request/ScrapAllDeleteRequest.java rename to src/main/java/com/example/spot/post/presentation/dto/request/post/ScrapAllDeleteRequest.java index d6643f97..a9ea91ad 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/request/ScrapAllDeleteRequest.java +++ b/src/main/java/com/example/spot/post/presentation/dto/request/post/ScrapAllDeleteRequest.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.request; +package com.example.spot.post.presentation.dto.request.post; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; @@ -11,6 +11,6 @@ @NoArgsConstructor @AllArgsConstructor public class ScrapAllDeleteRequest { - @Schema (description = "삭제할 게시글 Id 리스트 입니다.") + @Schema(description = "삭제할 게시글 Id 리스트 입니다.") private List deletePostIds; } diff --git a/src/main/java/com/example/spot/comment/presentation/dto/CommentCreateResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/comment/CommentCreateResponse.java similarity index 92% rename from src/main/java/com/example/spot/comment/presentation/dto/CommentCreateResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/comment/CommentCreateResponse.java index b54c4dff..b137dce6 100644 --- a/src/main/java/com/example/spot/comment/presentation/dto/CommentCreateResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/comment/CommentCreateResponse.java @@ -1,6 +1,6 @@ -package com.example.spot.comment.presentation.dto; +package com.example.spot.post.presentation.dto.response.comment; -import com.example.spot.comment.domain.PostComment; +import com.example.spot.post.domain.PostComment; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/example/spot/comment/presentation/dto/CommentDetailResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/comment/CommentDetailResponse.java similarity index 85% rename from src/main/java/com/example/spot/comment/presentation/dto/CommentDetailResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/comment/CommentDetailResponse.java index da93ae2b..a04da25f 100644 --- a/src/main/java/com/example/spot/comment/presentation/dto/CommentDetailResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/comment/CommentDetailResponse.java @@ -1,6 +1,6 @@ -package com.example.spot.comment.presentation.dto; +package com.example.spot.post.presentation.dto.response.comment; -import com.example.spot.comment.domain.PostComment; +import com.example.spot.post.domain.PostComment; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -77,11 +77,13 @@ public class CommentDetailResponse { // ) // private int disLikeCount; - public static CommentDetailResponse toDTO(PostComment comment, long likeCount, boolean likedByCurrentUser, boolean dislikedByCurrentUser, String defaultProfileImageUrl) { + public static CommentDetailResponse toDTO(PostComment comment, long likeCount, boolean likedByCurrentUser, + boolean dislikedByCurrentUser, String defaultProfileImageUrl) { // 작성자가 익명인지 확인하여 작성자 이름 설정 String writerName = judgeAnonymous(comment.isAnonymous(), comment.getMember().getName()); // 작성자가 익명인지 확인하여 프로필 반환 - String writerImage = anonymousProfileImage(comment.isAnonymous(), comment.getMember().getProfileImage(), defaultProfileImageUrl); + String writerImage = anonymousProfileImage(comment.isAnonymous(), comment.getMember().getProfileImage(), + defaultProfileImageUrl); return CommentDetailResponse.builder() .commentId(comment.getId()) @@ -90,12 +92,14 @@ public static CommentDetailResponse toDTO(PostComment comment, long likeCount, b .parentCommentId(comment.getParentComment() != null ? comment.getParentComment().getId() : null) .writer(writerName) .anonymous(comment.isAnonymous()) - .writtenTime(comment.getCreatedAt() != null ? comment.getCreatedAt().toString() : LocalDateTime.now().toString()) + .writtenTime(comment.getCreatedAt() != null ? comment.getCreatedAt().toString() + : LocalDateTime.now().toString()) .likeCount(likeCount) .likedByCurrentUser(likedByCurrentUser) .dislikedByCurrentUser(dislikedByCurrentUser) .build(); } + public static String judgeAnonymous(Boolean isAnonymous, String writer) { if (isAnonymous) { @@ -105,7 +109,8 @@ public static String judgeAnonymous(Boolean isAnonymous, String writer) { return writer; } - public static String anonymousProfileImage(Boolean isAnonymous, String profileImage, String defaultProfileImageUrl) { + public static String anonymousProfileImage(Boolean isAnonymous, String profileImage, + String defaultProfileImageUrl) { if (isAnonymous) { return defaultProfileImageUrl; } diff --git a/src/main/java/com/example/spot/comment/presentation/dto/CommentResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/comment/CommentResponse.java similarity index 81% rename from src/main/java/com/example/spot/comment/presentation/dto/CommentResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/comment/CommentResponse.java index 1a5f0540..f1aa6b6a 100644 --- a/src/main/java/com/example/spot/comment/presentation/dto/CommentResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/comment/CommentResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.comment.presentation.dto; +package com.example.spot.post.presentation.dto.response.comment; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostAnnouncementResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostAnnouncementResponse.java similarity index 79% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostAnnouncementResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostAnnouncementResponse.java index e0e86b26..b4c20f5c 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostAnnouncementResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostAnnouncementResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostBest5DetailResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostBest5DetailResponse.java similarity index 94% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostBest5DetailResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostBest5DetailResponse.java index 1e28abcb..20d9d08e 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostBest5DetailResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostBest5DetailResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import com.example.spot.post.domain.Post; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostBest5Response.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostBest5Response.java similarity index 91% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostBest5Response.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostBest5Response.java index 5abea7ac..dbe33673 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostBest5Response.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostBest5Response.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostBoard5Response.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostBoard5Response.java similarity index 87% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostBoard5Response.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostBoard5Response.java index 34614444..70b274e7 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostBoard5Response.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostBoard5Response.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import com.example.spot.post.domain.enums.Board; import io.swagger.v3.oas.annotations.media.Schema; @@ -19,7 +19,7 @@ public class PostBoard5Response { @AllArgsConstructor @Getter - private static class PostDetail5Response{ + private static class PostDetail5Response { @Schema(description = "게시글 내용입니다.", format = "string") diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostCreateResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostCreateResponse.java similarity index 88% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostCreateResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostCreateResponse.java index fb67ead5..afd2830f 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostCreateResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostCreateResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import com.example.spot.post.domain.Post; import com.example.spot.post.domain.enums.Board; @@ -22,7 +22,8 @@ public class PostCreateResponse { @Schema( description = "생성된 게시글 타입입니다.", example = "PASS_EXPERIENCE", - allowableValues = {"PASS_EXPERIENCE", "INFORMATION_SHARING", "COUNSELING", "JOB_TALK", "FREE_TALK", "SPOT_ANNOUNCEMENT"} + allowableValues = {"PASS_EXPERIENCE", "INFORMATION_SHARING", "COUNSELING", "JOB_TALK", "FREE_TALK", + "SPOT_ANNOUNCEMENT"} ) private String type; diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostHomeResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostHomeResponse.java similarity index 83% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostHomeResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostHomeResponse.java index 59f4cc26..9f3f7554 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostHomeResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostHomeResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostLikeResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostLikeResponse.java similarity index 85% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostLikeResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostLikeResponse.java index f3193068..5acd0ec0 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostLikeResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostLikeResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostPagingDetailResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostPagingDetailResponse.java similarity index 93% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostPagingDetailResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostPagingDetailResponse.java index 7213f1f3..35f2b881 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostPagingDetailResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostPagingDetailResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import com.example.spot.post.domain.Post; import io.swagger.v3.oas.annotations.media.Schema; @@ -80,7 +80,9 @@ public static String judgeAnonymous(Boolean isAnonymous, String writer) { } return writer; } - public static PostPagingDetailResponse toDTO(Post post, long likeCount, long scrapCount, boolean likedByCurrentUser, boolean scrapedByCurrentUser) { + + public static PostPagingDetailResponse toDTO(Post post, long likeCount, long scrapCount, boolean likedByCurrentUser, + boolean scrapedByCurrentUser) { // 작성자가 익명인지 확인하여 작성자 이름 설정 String writerName = judgeAnonymous(post.isAnonymous(), post.getMember().getName()); diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostPagingResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostPagingResponse.java similarity index 88% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostPagingResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostPagingResponse.java index 2b5786b3..0a09f8db 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostPagingResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostPagingResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; @@ -14,7 +14,8 @@ public class PostPagingResponse { @Schema( description = "게시글 타입입니다. 아래와 같이 작성해주세요.", - allowableValues = {"ALL", "PASS_EXPERIENCE", "INFORMATION_SHARING", "COUNSELING", "JOB_TALK", "FREE_TALK", "SPOT_ANNOUNCEMENT"} + allowableValues = {"ALL", "PASS_EXPERIENCE", "INFORMATION_SHARING", "COUNSELING", "JOB_TALK", "FREE_TALK", + "SPOT_ANNOUNCEMENT"} ) private String postType; diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostRepresentativeDetailResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostRepresentativeDetailResponse.java similarity index 94% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostRepresentativeDetailResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostRepresentativeDetailResponse.java index 35922242..7c96cffe 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostRepresentativeDetailResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostRepresentativeDetailResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import com.example.spot.post.domain.Post; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostRepresentativeResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostRepresentativeResponse.java similarity index 80% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostRepresentativeResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostRepresentativeResponse.java index 179b4b7d..43d3e932 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostRepresentativeResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostRepresentativeResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/PostSingleResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostSingleResponse.java similarity index 87% rename from src/main/java/com/example/spot/post/presentation/dto/response/PostSingleResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/PostSingleResponse.java index 7360f16f..f50e99d7 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/PostSingleResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/PostSingleResponse.java @@ -1,6 +1,6 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; -import com.example.spot.comment.presentation.dto.CommentResponse; +import com.example.spot.post.presentation.dto.response.comment.CommentResponse; import com.example.spot.post.domain.Post; import com.example.spot.post.domain.enums.Board; import io.swagger.v3.oas.annotations.media.Schema; @@ -117,7 +117,8 @@ public static String judgeAnonymous(Boolean isAnonymous, String writer) { return writer; } - public static String anonymousProfileImage(Boolean isAnonymous, String profileImage, String defaultProfileImageUrl) { + public static String anonymousProfileImage(Boolean isAnonymous, String profileImage, + String defaultProfileImageUrl) { if (isAnonymous) { return defaultProfileImageUrl; @@ -126,11 +127,14 @@ public static String anonymousProfileImage(Boolean isAnonymous, String profileIm return profileImage; } - public static PostSingleResponse toDTO(Post post, long likeCount, long scrapCount, CommentResponse commentResponse, boolean likedByCurrentUser, boolean scrapedByCurrentUser, boolean createdByCurrentUser, String defaultProfileImageUrl) { + public static PostSingleResponse toDTO(Post post, long likeCount, long scrapCount, CommentResponse commentResponse, + boolean likedByCurrentUser, boolean scrapedByCurrentUser, + boolean createdByCurrentUser, String defaultProfileImageUrl) { // 작성자가 익명인지 확인하여 작성자 이름 설정 String writerName = judgeAnonymous(post.isAnonymous(), post.getMember().getNickname()); // 작성자가 익명인지 확인하여 프로필 반환 - String writerImage = anonymousProfileImage(post.isAnonymous(), post.getMember().getProfileImage(), defaultProfileImageUrl); + String writerImage = anonymousProfileImage(post.isAnonymous(), post.getMember().getProfileImage(), + defaultProfileImageUrl); return PostSingleResponse.builder() .type(post.getBoard().name()) diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/ScrapPostResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/ScrapPostResponse.java similarity index 85% rename from src/main/java/com/example/spot/post/presentation/dto/response/ScrapPostResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/ScrapPostResponse.java index 1c0d2dcb..d622de2c 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/ScrapPostResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/ScrapPostResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/example/spot/post/presentation/dto/response/ScrapsPostDeleteResponse.java b/src/main/java/com/example/spot/post/presentation/dto/response/post/ScrapsPostDeleteResponse.java similarity index 82% rename from src/main/java/com/example/spot/post/presentation/dto/response/ScrapsPostDeleteResponse.java rename to src/main/java/com/example/spot/post/presentation/dto/response/post/ScrapsPostDeleteResponse.java index 9c4dfc79..04006ad2 100644 --- a/src/main/java/com/example/spot/post/presentation/dto/response/ScrapsPostDeleteResponse.java +++ b/src/main/java/com/example/spot/post/presentation/dto/response/post/ScrapsPostDeleteResponse.java @@ -1,4 +1,4 @@ -package com.example.spot.post.presentation.dto.response; +package com.example.spot.post.presentation.dto.response.post; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/test/java/com/example/spot/service/post/GetPostUseCaseTest.java b/src/test/java/com/example/spot/service/post/GetPostUseCaseTest.java index 0681f7be..d5c736ae 100644 --- a/src/test/java/com/example/spot/service/post/GetPostUseCaseTest.java +++ b/src/test/java/com/example/spot/service/post/GetPostUseCaseTest.java @@ -5,11 +5,11 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.when; -import com.example.spot.comment.domain.PostComment; -import com.example.spot.comment.domain.PostCommentRepository; -import com.example.spot.comment.domain.association.LikedPostComment; -import com.example.spot.comment.domain.association.LikedPostCommentRepository; -import com.example.spot.comment.presentation.dto.CommentResponse; +import com.example.spot.post.domain.PostComment; +import com.example.spot.post.domain.PostCommentRepository; +import com.example.spot.post.domain.association.LikedPostComment; +import com.example.spot.post.domain.association.LikedPostCommentRepository; +import com.example.spot.post.presentation.dto.response.comment.CommentResponse; import com.example.spot.common.api.exception.handler.PostHandler; import com.example.spot.member.domain.Member; import com.example.spot.member.infrastructure.MemberRepository; @@ -24,11 +24,11 @@ import com.example.spot.post.domain.association.MemberScrapRepository; import com.example.spot.post.domain.enums.Board; import com.example.spot.post.domain.enums.PostStatus; -import com.example.spot.post.presentation.dto.response.PostAnnouncementResponse; -import com.example.spot.post.presentation.dto.response.PostBest5Response; -import com.example.spot.post.presentation.dto.response.PostPagingResponse; -import com.example.spot.post.presentation.dto.response.PostRepresentativeResponse; -import com.example.spot.post.presentation.dto.response.PostSingleResponse; +import com.example.spot.post.presentation.dto.response.post.PostAnnouncementResponse; +import com.example.spot.post.presentation.dto.response.post.PostBest5Response; +import com.example.spot.post.presentation.dto.response.post.PostPagingResponse; +import com.example.spot.post.presentation.dto.response.post.PostRepresentativeResponse; +import com.example.spot.post.presentation.dto.response.post.PostSingleResponse; import com.example.spot.report.domain.PostReportRepository; import java.time.LocalDateTime; import java.util.Collections; diff --git a/src/test/java/com/example/spot/service/post/PostCommandServiceTest.java b/src/test/java/com/example/spot/service/post/PostCommandServiceTest.java index d8db1633..030e495b 100644 --- a/src/test/java/com/example/spot/service/post/PostCommandServiceTest.java +++ b/src/test/java/com/example/spot/service/post/PostCommandServiceTest.java @@ -6,17 +6,9 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; -import com.example.spot.comment.domain.PostComment; -import com.example.spot.comment.domain.PostCommentRepository; -import com.example.spot.comment.domain.association.LikedPostComment; -import com.example.spot.comment.domain.association.LikedPostCommentRepository; -import com.example.spot.comment.presentation.dto.CommentCreateRequest; -import com.example.spot.comment.presentation.dto.CommentCreateResponse; -import com.example.spot.comment.presentation.dto.CommentLikeResponse; import com.example.spot.common.api.exception.handler.PostHandler; import com.example.spot.member.domain.Member; import com.example.spot.member.infrastructure.MemberRepository; -import com.example.spot.post.application.command.impl.LikePostCommentUseCaseImpl; import com.example.spot.post.application.command.impl.LikePostUseCaseImpl; import com.example.spot.post.application.command.impl.ManagePostCommentUseCaseImpl; import com.example.spot.post.application.command.impl.ManagePostUseCaseImpl; @@ -24,19 +16,25 @@ import com.example.spot.post.application.query.GetLikedPostCommentUseCase; import com.example.spot.post.application.query.GetLikedPostUseCase; import com.example.spot.post.domain.Post; +import com.example.spot.post.domain.PostComment; +import com.example.spot.post.domain.PostCommentRepository; import com.example.spot.post.domain.PostRepository; import com.example.spot.post.domain.association.LikedPost; +import com.example.spot.post.domain.association.LikedPostComment; +import com.example.spot.post.domain.association.LikedPostCommentRepository; import com.example.spot.post.domain.association.LikedPostRepository; import com.example.spot.post.domain.association.MemberScrap; import com.example.spot.post.domain.association.MemberScrapRepository; import com.example.spot.post.domain.enums.Board; -import com.example.spot.post.presentation.dto.request.PostCreateRequest; -import com.example.spot.post.presentation.dto.request.PostUpdateRequest; -import com.example.spot.post.presentation.dto.request.ScrapAllDeleteRequest; -import com.example.spot.post.presentation.dto.response.PostCreateResponse; -import com.example.spot.post.presentation.dto.response.PostLikeResponse; -import com.example.spot.post.presentation.dto.response.ScrapPostResponse; -import com.example.spot.post.presentation.dto.response.ScrapsPostDeleteResponse; +import com.example.spot.post.presentation.dto.request.comment.CommentCreateRequest; +import com.example.spot.post.presentation.dto.request.post.PostCreateRequest; +import com.example.spot.post.presentation.dto.request.post.PostUpdateRequest; +import com.example.spot.post.presentation.dto.request.post.ScrapAllDeleteRequest; +import com.example.spot.post.presentation.dto.response.comment.CommentCreateResponse; +import com.example.spot.post.presentation.dto.response.post.PostCreateResponse; +import com.example.spot.post.presentation.dto.response.post.PostLikeResponse; +import com.example.spot.post.presentation.dto.response.post.ScrapPostResponse; +import com.example.spot.post.presentation.dto.response.post.ScrapsPostDeleteResponse; import com.example.spot.report.application.ReportCommandServiceImpl; import com.example.spot.report.domain.PostReport; import com.example.spot.report.domain.PostReportRepository; @@ -90,9 +88,6 @@ class PostCommandServiceTest { @Mock private GetLikedPostCommentUseCase getLikedPostCommentUseCase; - @InjectMocks - private LikePostCommentUseCaseImpl likePostCommentUseCase; - @InjectMocks private LikePostUseCaseImpl likePostUseCase; @@ -595,255 +590,6 @@ void createComment_NotExisted_Fail() { () -> managePostCommentUseCase.createComment(postId, memberId, commentCreateRequest)); } - @Test - @DisplayName("댓글 작성 - 상위 댓글이 존재하지 않는 경우 (실패)") - void createComment_InvalidParent_Fail() { - - // given - Long memberId = 1L; - Long postId = 2L; - getAuthentication(memberId); - - CommentCreateRequest commentCreateRequest = CommentCreateRequest.builder() - .content("댓글3") - .anonymous(false) - .parentCommentId(3L) - .build(); - - // when & then - assertThrows(PostHandler.class, - () -> managePostCommentUseCase.createComment(postId, memberId, commentCreateRequest)); - } - - /*-------------------------------------------------------- 댓글 좋아요 ------------------------------------------------------------------------*/ - - @Test - @DisplayName("댓글 좋아요 - (성공)") - void likeComment_Success() { - - // given - Long memberId = 1L; - Long commentId = 1L; - getAuthentication(memberId); - - when(likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedTrue(memberId, commentId)) - .thenReturn(Optional.empty()); - when(likedPostCommentRepository.saveAndFlush(any(LikedPostComment.class))) - .thenReturn(member1LikedComment1); - when(getLikedPostCommentUseCase.countByPostCommentIdAndIsLikedTrue(commentId)) - .thenReturn(1L); - - // when - CommentLikeResponse result = likePostCommentUseCase.likeComment(commentId, memberId); - - // then - assertNotNull(result); - assertThat(result.getCommentId()).isEqualTo(1L); - assertThat(result.getLikeCount()).isEqualTo(1L); - assertThat(result.getDisLikeCount()).isEqualTo(1L); - } - - @Test - @DisplayName("댓글 좋아요 - 댓글이 존재하지 않는 경우 (실패)") - void likeComment_NotExisted_Fail() { - - // given - Long memberId = 1L; - Long commentId = 3L; - getAuthentication(memberId); - - // when & then - assertThrows(PostHandler.class, () -> likePostCommentUseCase.likeComment(commentId, memberId)); - } - - @Test - @DisplayName("댓글 좋아요 - 이미 좋아요 한 경우 (실패)") - void likeComment_AlreadyLiked_Fail() { - - // given - Long memberId = 1L; - Long commentId = 3L; - getAuthentication(memberId); - - when(likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedTrue(memberId, commentId)) - .thenReturn(Optional.of(member1LikedComment1)); - - // when & then - assertThrows(PostHandler.class, () -> likePostCommentUseCase.likeComment(commentId, memberId)); - } - - /*-------------------------------------------------------- 댓글 좋아요 취소 ------------------------------------------------------------------------*/ - - @Test - @DisplayName("댓글 좋아요 취소 - (성공)") - void cancelCommentLike_Success() { - - // given - Long memberId = 1L; - Long commentId = 1L; - getAuthentication(memberId); - - when(likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedTrue(memberId, commentId)) - .thenReturn(Optional.of(member1LikedComment1)); - when(getLikedPostCommentUseCase.countByPostCommentIdAndIsLikedTrue(commentId)) - .thenReturn(0L); - - // when - CommentLikeResponse result = likePostCommentUseCase.cancelCommentLike(commentId, memberId); - - // then - assertNotNull(result); - assertThat(result.getCommentId()).isEqualTo(1L); - assertThat(result.getLikeCount()).isEqualTo(0L); - assertThat(result.getDisLikeCount()).isEqualTo(1L); - } - - @Test - @DisplayName("댓글 좋아요 취소 - 댓글이 존재하지 않는 경우 (실패)") - void cancelCommentLike_NotExisted_Fail() { - - // given - Long memberId = 1L; - Long commentId = 3L; - getAuthentication(memberId); - - // when & then - assertThrows(PostHandler.class, () -> likePostCommentUseCase.cancelCommentLike(commentId, memberId)); - } - - @Test - @DisplayName("댓글 좋아요 취소 - 좋아요 한 댓글이 아닌 경우 (실패)") - void cancelCommentLike_NotLiked_Fail() { - - // given - Long memberId = 1L; - Long commentId = 2L; - getAuthentication(memberId); - - when(likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedTrue(memberId, commentId)) - .thenReturn(Optional.empty()); - - // when & then - assertThrows(PostHandler.class, () -> likePostCommentUseCase.cancelCommentLike(commentId, memberId)); - } - - /*-------------------------------------------------------- 댓글 싫어요 ------------------------------------------------------------------------*/ - - @Test - @DisplayName("댓글 싫어요 - (성공)") - void dislikeComment_Success() { - - // given - Long memberId = 1L; - Long commentId = 1L; - getAuthentication(memberId); - - when(likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedFalse(memberId, commentId)) - .thenReturn(Optional.empty()); - when(likedPostCommentRepository.saveAndFlush(any(LikedPostComment.class))) - .thenReturn(member1LikedComment1); - when(getLikedPostCommentUseCase.countByPostCommentIdAndIsLikedTrue(commentId)) - .thenReturn(1L); - when(likedPostCommentRepository.countByPostCommentIdAndIsLikedFalse(commentId)) - .thenReturn(1L); - - // when - CommentLikeResponse result = likePostCommentUseCase.dislikeComment(commentId, memberId); - - // then - assertNotNull(result); - assertThat(result.getCommentId()).isEqualTo(1L); - assertThat(result.getLikeCount()).isEqualTo(1L); - assertThat(result.getDisLikeCount()).isEqualTo(1L); - } - - @Test - @DisplayName("댓글 싫어요 - 댓글이 존재하지 않는 경우 (실패)") - void dislikeComment_NotExisted_Fail() { - - // given - Long memberId = 1L; - Long commentId = 3L; - getAuthentication(memberId); - - // when & then - assertThrows(PostHandler.class, () -> likePostCommentUseCase.dislikeComment(commentId, memberId)); - - } - - @Test - @DisplayName("댓글 싫어요 - 이미 싫어요 한 경우 (실패)") - void dislikeComment_AlreadyDisliked_Fail() { - - // given - Long memberId = 2L; - Long commentId = 1L; - getAuthentication(memberId); - - when(likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedFalse(memberId, commentId)) - .thenReturn(Optional.of(member2LikedComment1)); - - // when & then - assertThrows(PostHandler.class, () -> likePostCommentUseCase.dislikeComment(commentId, memberId)); - } - - /*-------------------------------------------------------- 댓글 싫어요 취소 ------------------------------------------------------------------------*/ - - @Test - @DisplayName("댓글 싫어요 취소 - (성공)") - void cancelCommentDislike_Success() { - - // given - Long memberId = 2L; - Long commentId = 1L; - getAuthentication(memberId); - - when(likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedFalse(memberId, commentId)) - .thenReturn(Optional.of(member2LikedComment1)); - when(getLikedPostCommentUseCase.countByPostCommentIdAndIsLikedTrue(commentId)) - .thenReturn(1L); - when(likedPostCommentRepository.countByPostCommentIdAndIsLikedFalse(commentId)) - .thenReturn(0L); - - // when - CommentLikeResponse result = likePostCommentUseCase.cancelCommentDislike(commentId, memberId); - - // then - assertNotNull(result); - assertThat(result.getCommentId()).isEqualTo(1L); - assertThat(result.getLikeCount()).isEqualTo(1L); - assertThat(result.getDisLikeCount()).isEqualTo(0L); - } - - @Test - @DisplayName("댓글 싫어요 취소 - 댓글이 존재하지 않는 경우 (실패)") - void cancelCommentDislike_NotExisted_Fail() { - - // given - Long memberId = 2L; - Long commentId = 3L; - getAuthentication(memberId); - - // when & then - assertThrows(PostHandler.class, () -> likePostCommentUseCase.cancelCommentDislike(commentId, memberId)); - } - - @Test - @DisplayName("댓글 싫어요 취소 - 싫어요 한 댓글이 아닌 경우 (실패)") - void cancelCommentDislike_NotDisliked_Fail() { - - // given - Long memberId = 1L; - Long commentId = 1L; - getAuthentication(memberId); - - when(likedPostCommentRepository.findByMemberIdAndPostCommentIdAndIsLikedFalse(memberId, commentId)) - .thenReturn(Optional.empty()); - - // when & then - assertThrows(PostHandler.class, () -> likePostCommentUseCase.cancelCommentDislike(commentId, memberId)); - } - /*-------------------------------------------------------- 게시글 스크랩 ------------------------------------------------------------------------*/ @Test From 1ba97718d0ddaa80c33bffd4cebee377ce511976 Mon Sep 17 00:00:00 2001 From: msk226 Date: Sat, 9 Aug 2025 18:57:35 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[SPOT-304][REFACTOR]=20=EB=8B=B4=EB=8B=B9?= =?UTF-8?q?=20=EB=8F=84=EB=A9=94=EC=9D=B8=EC=97=90=20=EB=8C=80=ED=95=B4=20?= =?UTF-8?q?JPA=20Repository=20domain=20to=20infrastructure=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/legacy/AuthServiceImpl.java | 10 ++++----- .../refactor/impl/JwtTokenService.java | 4 ++-- .../refactor/impl/OAuthMemberProcessor.java | 10 ++++----- .../jpa}/RefreshTokenRepository.java | 7 ++++-- .../application/admin/AdminServiceImpl.java | 4 ++-- .../scheduler/PostSortCommentsScheduler.java | 4 ++-- .../scheduler/PostSortLikesScheduler.java | 4 ++-- .../scheduler/PostSortRealTimeScheduler.java | 4 ++-- .../impl/MemberInfoServiceImpl.java | 2 +- .../impl/MemberPreferenceServiceImpl.java | 8 +++---- .../impl/MemberTestSupportServiceImpl.java | 4 ++-- .../validator/ExistMemberValidator.java | 2 +- .../{ => jpa}/MemberRepository.java | 2 +- .../{ => jpa}/PreferredRegionRepository.java | 2 +- .../{ => jpa}/PreferredStudyRepository.java | 2 +- .../{ => jpa}/PreferredThemeRepository.java | 2 +- .../{ => jpa}/StudyJoinReasonRepository.java | 2 +- .../impl/GetNotificationUseCaseImpl.java | 2 +- ...eAppliedStudyParticipationUseCaseImpl.java | 2 +- .../impl/ReadNotificationUseCaseImpl.java | 2 +- .../jpa}/NotificationRepository.java | 11 +++++++--- .../command/impl/LikePostUseCaseImpl.java | 6 ++--- .../impl/ManagePostCommentUseCaseImpl.java | 6 ++--- .../command/impl/ManagePostUseCaseImpl.java | 4 ++-- .../command/impl/ScrapPostUseCaseImpl.java | 6 ++--- .../impl/GetLikedPostCommentUseCaseImpl.java | 2 +- .../query/impl/GetLikedPostUseCaseImpl.java | 4 +++- .../query/impl/GetPostUseCaseImpl.java | 8 +++---- .../jpa}/LikedPostCommentRepository.java | 3 ++- .../jpa}/LikedPostRepository.java | 3 ++- .../jpa}/MemberScrapRepository.java | 6 +++-- .../jpa}/PostCommentRepository.java | 4 +++- .../jpa}/PostRepository.java | 6 +++-- .../jpa}/PostScheduleCommentsRepository.java | 3 ++- .../jpa}/PostScheduleLikesRepository.java | 3 ++- .../jpa}/PostScheduleRealTimeRepository.java | 3 ++- .../PostCommentRepositoryCustom.java | 3 ++- .../querydsl}/PostRepositoryCustom.java | 3 ++- .../impl}/PostCommentRepositoryImpl.java | 4 ++-- .../impl}/PostRepositoryImpl.java | 4 ++-- .../{ => validator}/ExistPostValidator.java | 9 ++++---- .../presentation/validator/ExistPost.java | 6 +++-- .../application/ReportCommandServiceImpl.java | 10 ++++----- .../jpa}/MemberReportRepository.java | 3 ++- .../jpa}/PostReportRepository.java | 3 ++- .../jpa}/StoryReportRepository.java | 3 ++- .../ScheduleCommandServiceImpl.java | 4 ++-- .../application/ScheduleQueryServiceImpl.java | 2 +- .../domain/repository/QuizRepository.java | 3 ++- .../validator/ExistQuizValidator.java | 3 ++- .../validator/ExistScheduleValidator.java | 3 ++- .../application/StoryCommandServiceImpl.java | 6 ++--- .../application/StoryQueryServiceImpl.java | 2 +- .../application/StudyCommandServiceImpl.java | 4 ++-- .../StudyMemberCommandServiceImpl.java | 8 +++---- .../StudyMemberQueryServiceImpl.java | 2 +- .../application/StudyQueryServiceImpl.java | 8 +++---- .../impl/ManageToDoUseCaseImpl.java | 2 +- .../impl/ToggleToDoUseCaseImpl.java | 2 +- .../application/VoteCommandServiceImpl.java | 2 +- .../application/VoteQueryServiceImpl.java | 2 +- .../NotificationCommandServiceTest.java | 2 +- .../NotificationQueryServiceTest.java | 2 +- .../spot/service/post/GetPostUseCaseTest.java | 14 ++++++------ .../service/post/PostCommandServiceTest.java | 14 ++++++------ .../AttendanceCommandServiceTest.java | 2 +- .../schedule/AttendanceQueryServiceTest.java | 2 +- .../schedule/ScheduleCommandServiceTest.java | 4 ++-- .../schedule/ScheduleQueryServiceTest.java | 2 +- .../story/StoryCommandServiceTest.java | 6 ++--- .../service/story/StoryQueryServiceTest.java | 2 +- .../study/StudyCommandServiceTest.java | 2 +- .../service/study/StudyQueryServiceTest.java | 8 +++---- .../StudyMemberCommandServiceTest.java | 2 +- .../StudyMemberQueryServiceTest.java | 22 ++++++++++++------- .../service/todo/ToDoCommandServiceTest.java | 2 +- 76 files changed, 191 insertions(+), 153 deletions(-) rename src/main/java/com/example/spot/auth/{domain => infrastructure/jpa}/RefreshTokenRepository.java (80%) rename src/main/java/com/example/spot/member/infrastructure/{ => jpa}/MemberRepository.java (95%) rename src/main/java/com/example/spot/member/infrastructure/{ => jpa}/PreferredRegionRepository.java (89%) rename src/main/java/com/example/spot/member/infrastructure/{ => jpa}/PreferredStudyRepository.java (93%) rename src/main/java/com/example/spot/member/infrastructure/{ => jpa}/PreferredThemeRepository.java (90%) rename src/main/java/com/example/spot/member/infrastructure/{ => jpa}/StudyJoinReasonRepository.java (88%) rename src/main/java/com/example/spot/notification/{domain => infrastructure/jpa}/NotificationRepository.java (63%) rename src/main/java/com/example/spot/post/{domain/association => infrastructure/jpa}/LikedPostCommentRepository.java (88%) rename src/main/java/com/example/spot/post/{domain/association => infrastructure/jpa}/LikedPostRepository.java (81%) rename src/main/java/com/example/spot/post/{domain/association => infrastructure/jpa}/MemberScrapRepository.java (82%) rename src/main/java/com/example/spot/post/{domain => infrastructure/jpa}/PostCommentRepository.java (55%) rename src/main/java/com/example/spot/post/{domain => infrastructure/jpa}/PostRepository.java (61%) rename src/main/java/com/example/spot/post/{domain/schedule => infrastructure/jpa}/PostScheduleCommentsRepository.java (58%) rename src/main/java/com/example/spot/post/{domain/schedule => infrastructure/jpa}/PostScheduleLikesRepository.java (58%) rename src/main/java/com/example/spot/post/{domain/schedule => infrastructure/jpa}/PostScheduleRealTimeRepository.java (58%) rename src/main/java/com/example/spot/post/{domain => infrastructure/querydsl}/PostCommentRepositoryCustom.java (55%) rename src/main/java/com/example/spot/post/{domain => infrastructure/querydsl}/PostRepositoryCustom.java (87%) rename src/main/java/com/example/spot/post/infrastructure/{ => querydsl/impl}/PostCommentRepositoryImpl.java (85%) rename src/main/java/com/example/spot/post/infrastructure/{ => querydsl/impl}/PostRepositoryImpl.java (96%) rename src/main/java/com/example/spot/post/infrastructure/{ => validator}/ExistPostValidator.java (83%) rename src/main/java/com/example/spot/report/{domain => infrastructure/jpa}/MemberReportRepository.java (67%) rename src/main/java/com/example/spot/report/{domain => infrastructure/jpa}/PostReportRepository.java (79%) rename src/main/java/com/example/spot/report/{domain => infrastructure/jpa}/StoryReportRepository.java (71%) diff --git a/src/main/java/com/example/spot/auth/application/legacy/AuthServiceImpl.java b/src/main/java/com/example/spot/auth/application/legacy/AuthServiceImpl.java index 7bc55423..f38f2f21 100644 --- a/src/main/java/com/example/spot/auth/application/legacy/AuthServiceImpl.java +++ b/src/main/java/com/example/spot/auth/application/legacy/AuthServiceImpl.java @@ -2,7 +2,7 @@ import com.example.spot.auth.domain.RefreshToken; -import com.example.spot.auth.domain.RefreshTokenRepository; +import com.example.spot.auth.infrastructure.jpa.RefreshTokenRepository; import com.example.spot.auth.domain.RsaKey; import com.example.spot.auth.domain.VerificationCode; import com.example.spot.auth.domain.rsa.RSAKeyRepository; @@ -22,10 +22,10 @@ import com.example.spot.member.domain.enums.Gender; import com.example.spot.member.domain.enums.LoginType; import com.example.spot.member.domain.enums.Status; -import com.example.spot.member.infrastructure.MemberRepository; -import com.example.spot.member.infrastructure.PreferredRegionRepository; -import com.example.spot.member.infrastructure.PreferredThemeRepository; -import com.example.spot.member.infrastructure.StudyJoinReasonRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; +import com.example.spot.member.infrastructure.jpa.PreferredRegionRepository; +import com.example.spot.member.infrastructure.jpa.PreferredThemeRepository; +import com.example.spot.member.infrastructure.jpa.StudyJoinReasonRepository; import com.example.spot.member.presentation.dto.MemberRequestDTO; import com.example.spot.member.presentation.dto.MemberRequestDTO.SignUpDetailDTO; import com.example.spot.member.presentation.dto.MemberResponseDTO; diff --git a/src/main/java/com/example/spot/auth/application/refactor/impl/JwtTokenService.java b/src/main/java/com/example/spot/auth/application/refactor/impl/JwtTokenService.java index 254ee01d..16d5f83e 100644 --- a/src/main/java/com/example/spot/auth/application/refactor/impl/JwtTokenService.java +++ b/src/main/java/com/example/spot/auth/application/refactor/impl/JwtTokenService.java @@ -2,13 +2,13 @@ import com.example.spot.auth.application.refactor.TokenService; import com.example.spot.auth.domain.RefreshToken; -import com.example.spot.auth.domain.RefreshTokenRepository; +import com.example.spot.auth.infrastructure.jpa.RefreshTokenRepository; import com.example.spot.auth.presentation.dto.token.TokenResponseDTO; import com.example.spot.common.api.code.status.ErrorStatus; import com.example.spot.common.api.exception.GeneralException; import com.example.spot.common.security.utils.JwtTokenProvider; import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import java.util.Objects; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/spot/auth/application/refactor/impl/OAuthMemberProcessor.java b/src/main/java/com/example/spot/auth/application/refactor/impl/OAuthMemberProcessor.java index 1a5fd29c..dfffb1f2 100644 --- a/src/main/java/com/example/spot/auth/application/refactor/impl/OAuthMemberProcessor.java +++ b/src/main/java/com/example/spot/auth/application/refactor/impl/OAuthMemberProcessor.java @@ -1,17 +1,17 @@ package com.example.spot.auth.application.refactor.impl; import com.example.spot.auth.domain.RefreshToken; -import com.example.spot.auth.domain.RefreshTokenRepository; +import com.example.spot.auth.infrastructure.jpa.RefreshTokenRepository; import com.example.spot.auth.presentation.dto.token.TokenResponseDTO; import com.example.spot.common.api.code.status.ErrorStatus; import com.example.spot.common.api.exception.GeneralException; import com.example.spot.common.security.utils.JwtTokenProvider; import com.example.spot.member.domain.Member; import com.example.spot.member.domain.enums.LoginType; -import com.example.spot.member.infrastructure.MemberRepository; -import com.example.spot.member.infrastructure.PreferredRegionRepository; -import com.example.spot.member.infrastructure.PreferredThemeRepository; -import com.example.spot.member.infrastructure.StudyJoinReasonRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; +import com.example.spot.member.infrastructure.jpa.PreferredRegionRepository; +import com.example.spot.member.infrastructure.jpa.PreferredThemeRepository; +import com.example.spot.member.infrastructure.jpa.StudyJoinReasonRepository; import com.example.spot.member.presentation.dto.MemberResponseDTO; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; diff --git a/src/main/java/com/example/spot/auth/domain/RefreshTokenRepository.java b/src/main/java/com/example/spot/auth/infrastructure/jpa/RefreshTokenRepository.java similarity index 80% rename from src/main/java/com/example/spot/auth/domain/RefreshTokenRepository.java rename to src/main/java/com/example/spot/auth/infrastructure/jpa/RefreshTokenRepository.java index 8db5e4b9..cce10993 100644 --- a/src/main/java/com/example/spot/auth/domain/RefreshTokenRepository.java +++ b/src/main/java/com/example/spot/auth/infrastructure/jpa/RefreshTokenRepository.java @@ -1,14 +1,17 @@ -package com.example.spot.auth.domain; +package com.example.spot.auth.infrastructure.jpa; +import com.example.spot.auth.domain.RefreshToken; import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface RefreshTokenRepository extends JpaRepository{ +public interface RefreshTokenRepository extends JpaRepository { Optional findByToken(String token); + void deleteByMemberId(Long memberId); + void deleteAllByMemberId(Long memberId); boolean existsByMemberId(Long memberId); diff --git a/src/main/java/com/example/spot/common/application/admin/AdminServiceImpl.java b/src/main/java/com/example/spot/common/application/admin/AdminServiceImpl.java index a3533ee4..8837d128 100644 --- a/src/main/java/com/example/spot/common/application/admin/AdminServiceImpl.java +++ b/src/main/java/com/example/spot/common/application/admin/AdminServiceImpl.java @@ -1,12 +1,12 @@ package com.example.spot.common.application.admin; -import com.example.spot.auth.domain.RefreshTokenRepository; +import com.example.spot.auth.infrastructure.jpa.RefreshTokenRepository; import com.example.spot.common.api.code.status.ErrorStatus; import com.example.spot.common.api.exception.handler.MemberHandler; import com.example.spot.common.presentation.dto.admin.AdminResponseDTO; import com.example.spot.common.security.utils.SecurityUtils; import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import java.time.LocalDateTime; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/spot/common/scheduler/PostSortCommentsScheduler.java b/src/main/java/com/example/spot/common/scheduler/PostSortCommentsScheduler.java index 26a64d4a..ceda8c5d 100644 --- a/src/main/java/com/example/spot/common/scheduler/PostSortCommentsScheduler.java +++ b/src/main/java/com/example/spot/common/scheduler/PostSortCommentsScheduler.java @@ -2,8 +2,8 @@ import com.example.spot.post.domain.Post; import com.example.spot.post.domain.schedule.PostScheduleComments; -import com.example.spot.post.domain.PostRepository; -import com.example.spot.post.domain.schedule.PostScheduleCommentsRepository; +import com.example.spot.post.infrastructure.jpa.PostRepository; +import com.example.spot.post.infrastructure.jpa.PostScheduleCommentsRepository; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/spot/common/scheduler/PostSortLikesScheduler.java b/src/main/java/com/example/spot/common/scheduler/PostSortLikesScheduler.java index e3a019f7..2699e463 100644 --- a/src/main/java/com/example/spot/common/scheduler/PostSortLikesScheduler.java +++ b/src/main/java/com/example/spot/common/scheduler/PostSortLikesScheduler.java @@ -2,8 +2,8 @@ import com.example.spot.post.domain.Post; import com.example.spot.post.domain.schedule.PostScheduleLikes; -import com.example.spot.post.domain.PostRepository; -import com.example.spot.post.domain.schedule.PostScheduleLikesRepository; +import com.example.spot.post.infrastructure.jpa.PostRepository; +import com.example.spot.post.infrastructure.jpa.PostScheduleLikesRepository; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/spot/common/scheduler/PostSortRealTimeScheduler.java b/src/main/java/com/example/spot/common/scheduler/PostSortRealTimeScheduler.java index 410ab2f5..7ba2a8b1 100644 --- a/src/main/java/com/example/spot/common/scheduler/PostSortRealTimeScheduler.java +++ b/src/main/java/com/example/spot/common/scheduler/PostSortRealTimeScheduler.java @@ -2,8 +2,8 @@ import com.example.spot.post.domain.Post; import com.example.spot.post.domain.schedule.PostScheduleRealTime; -import com.example.spot.post.domain.PostRepository; -import com.example.spot.post.domain.schedule.PostScheduleRealTimeRepository; +import com.example.spot.post.infrastructure.jpa.PostRepository; +import com.example.spot.post.infrastructure.jpa.PostScheduleRealTimeRepository; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/spot/member/application/impl/MemberInfoServiceImpl.java b/src/main/java/com/example/spot/member/application/impl/MemberInfoServiceImpl.java index eba07245..a9e51fe0 100644 --- a/src/main/java/com/example/spot/member/application/impl/MemberInfoServiceImpl.java +++ b/src/main/java/com/example/spot/member/application/impl/MemberInfoServiceImpl.java @@ -3,7 +3,7 @@ import com.example.spot.common.api.exception.handler.MemberHandler; import com.example.spot.member.application.MemberInfoService; import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import com.example.spot.member.presentation.dto.MemberRequestDTO.MemberUpdateDTO; import com.example.spot.member.presentation.dto.MemberResponseDTO; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/spot/member/application/impl/MemberPreferenceServiceImpl.java b/src/main/java/com/example/spot/member/application/impl/MemberPreferenceServiceImpl.java index b5a3a382..e5ea694f 100644 --- a/src/main/java/com/example/spot/member/application/impl/MemberPreferenceServiceImpl.java +++ b/src/main/java/com/example/spot/member/application/impl/MemberPreferenceServiceImpl.java @@ -11,10 +11,10 @@ import com.example.spot.member.domain.association.PreferredTheme; import com.example.spot.member.domain.association.StudyJoinReason; import com.example.spot.member.domain.enums.Reason; -import com.example.spot.member.infrastructure.MemberRepository; -import com.example.spot.member.infrastructure.PreferredRegionRepository; -import com.example.spot.member.infrastructure.PreferredThemeRepository; -import com.example.spot.member.infrastructure.StudyJoinReasonRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; +import com.example.spot.member.infrastructure.jpa.PreferredRegionRepository; +import com.example.spot.member.infrastructure.jpa.PreferredThemeRepository; +import com.example.spot.member.infrastructure.jpa.StudyJoinReasonRepository; import com.example.spot.member.presentation.dto.MemberRequestDTO; import com.example.spot.member.presentation.dto.MemberResponseDTO; import com.example.spot.member.presentation.dto.MemberResponseDTO.MemberRegionDTO; diff --git a/src/main/java/com/example/spot/member/application/impl/MemberTestSupportServiceImpl.java b/src/main/java/com/example/spot/member/application/impl/MemberTestSupportServiceImpl.java index e2e441ec..107239f1 100644 --- a/src/main/java/com/example/spot/member/application/impl/MemberTestSupportServiceImpl.java +++ b/src/main/java/com/example/spot/member/application/impl/MemberTestSupportServiceImpl.java @@ -1,7 +1,7 @@ package com.example.spot.member.application.impl; import com.example.spot.auth.domain.RefreshToken; -import com.example.spot.auth.domain.RefreshTokenRepository; +import com.example.spot.auth.infrastructure.jpa.RefreshTokenRepository; import com.example.spot.auth.presentation.dto.token.TokenResponseDTO; import com.example.spot.common.api.code.status.ErrorStatus; import com.example.spot.common.api.exception.handler.MemberHandler; @@ -11,7 +11,7 @@ import com.example.spot.member.domain.enums.Gender; import com.example.spot.member.domain.enums.LoginType; import com.example.spot.member.domain.enums.Status; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import com.example.spot.member.presentation.dto.MemberRequestDTO; import com.example.spot.member.presentation.dto.MemberResponseDTO; import java.util.UUID; diff --git a/src/main/java/com/example/spot/member/domain/validation/validator/ExistMemberValidator.java b/src/main/java/com/example/spot/member/domain/validation/validator/ExistMemberValidator.java index a73fa1e3..6120a3e1 100644 --- a/src/main/java/com/example/spot/member/domain/validation/validator/ExistMemberValidator.java +++ b/src/main/java/com/example/spot/member/domain/validation/validator/ExistMemberValidator.java @@ -2,7 +2,7 @@ import com.example.spot.common.api.code.status.ErrorStatus; import com.example.spot.member.domain.validation.annotation.ExistMember; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/spot/member/infrastructure/MemberRepository.java b/src/main/java/com/example/spot/member/infrastructure/jpa/MemberRepository.java similarity index 95% rename from src/main/java/com/example/spot/member/infrastructure/MemberRepository.java rename to src/main/java/com/example/spot/member/infrastructure/jpa/MemberRepository.java index a56042f4..b5270f62 100644 --- a/src/main/java/com/example/spot/member/infrastructure/MemberRepository.java +++ b/src/main/java/com/example/spot/member/infrastructure/jpa/MemberRepository.java @@ -1,4 +1,4 @@ -package com.example.spot.member.infrastructure; +package com.example.spot.member.infrastructure.jpa; import com.example.spot.common.api.code.status.ErrorStatus; import com.example.spot.common.api.exception.handler.MemberHandler; diff --git a/src/main/java/com/example/spot/member/infrastructure/PreferredRegionRepository.java b/src/main/java/com/example/spot/member/infrastructure/jpa/PreferredRegionRepository.java similarity index 89% rename from src/main/java/com/example/spot/member/infrastructure/PreferredRegionRepository.java rename to src/main/java/com/example/spot/member/infrastructure/jpa/PreferredRegionRepository.java index 980227c1..02505b5f 100644 --- a/src/main/java/com/example/spot/member/infrastructure/PreferredRegionRepository.java +++ b/src/main/java/com/example/spot/member/infrastructure/jpa/PreferredRegionRepository.java @@ -1,4 +1,4 @@ -package com.example.spot.member.infrastructure; +package com.example.spot.member.infrastructure.jpa; import com.example.spot.member.domain.association.PreferredRegion; import java.util.List; diff --git a/src/main/java/com/example/spot/member/infrastructure/PreferredStudyRepository.java b/src/main/java/com/example/spot/member/infrastructure/jpa/PreferredStudyRepository.java similarity index 93% rename from src/main/java/com/example/spot/member/infrastructure/PreferredStudyRepository.java rename to src/main/java/com/example/spot/member/infrastructure/jpa/PreferredStudyRepository.java index 6b276abb..43cb4415 100644 --- a/src/main/java/com/example/spot/member/infrastructure/PreferredStudyRepository.java +++ b/src/main/java/com/example/spot/member/infrastructure/jpa/PreferredStudyRepository.java @@ -1,4 +1,4 @@ -package com.example.spot.member.infrastructure; +package com.example.spot.member.infrastructure.jpa; import com.example.spot.member.domain.association.PreferredStudy; import com.example.spot.study.domain.enums.StudyLikeStatus; diff --git a/src/main/java/com/example/spot/member/infrastructure/PreferredThemeRepository.java b/src/main/java/com/example/spot/member/infrastructure/jpa/PreferredThemeRepository.java similarity index 90% rename from src/main/java/com/example/spot/member/infrastructure/PreferredThemeRepository.java rename to src/main/java/com/example/spot/member/infrastructure/jpa/PreferredThemeRepository.java index 982b0d6c..57199189 100644 --- a/src/main/java/com/example/spot/member/infrastructure/PreferredThemeRepository.java +++ b/src/main/java/com/example/spot/member/infrastructure/jpa/PreferredThemeRepository.java @@ -1,4 +1,4 @@ -package com.example.spot.member.infrastructure; +package com.example.spot.member.infrastructure.jpa; import com.example.spot.member.domain.association.PreferredTheme; import java.util.List; diff --git a/src/main/java/com/example/spot/member/infrastructure/StudyJoinReasonRepository.java b/src/main/java/com/example/spot/member/infrastructure/jpa/StudyJoinReasonRepository.java similarity index 88% rename from src/main/java/com/example/spot/member/infrastructure/StudyJoinReasonRepository.java rename to src/main/java/com/example/spot/member/infrastructure/jpa/StudyJoinReasonRepository.java index 14fdc8f8..f7a20d6c 100644 --- a/src/main/java/com/example/spot/member/infrastructure/StudyJoinReasonRepository.java +++ b/src/main/java/com/example/spot/member/infrastructure/jpa/StudyJoinReasonRepository.java @@ -1,4 +1,4 @@ -package com.example.spot.member.infrastructure; +package com.example.spot.member.infrastructure.jpa; import com.example.spot.member.domain.association.StudyJoinReason; import java.util.List; diff --git a/src/main/java/com/example/spot/notification/application/impl/GetNotificationUseCaseImpl.java b/src/main/java/com/example/spot/notification/application/impl/GetNotificationUseCaseImpl.java index 5ede71d4..0e9d22aa 100644 --- a/src/main/java/com/example/spot/notification/application/impl/GetNotificationUseCaseImpl.java +++ b/src/main/java/com/example/spot/notification/application/impl/GetNotificationUseCaseImpl.java @@ -4,7 +4,7 @@ import com.example.spot.common.api.exception.GeneralException; import com.example.spot.notification.application.GetNotificationUseCase; import com.example.spot.notification.domain.Notification; -import com.example.spot.notification.domain.NotificationRepository; +import com.example.spot.notification.infrastructure.jpa.NotificationRepository; import com.example.spot.notification.domain.enums.NotifyType; import com.example.spot.notification.presentation.dto.response.NotificationResponseDTO.NotificationListDTO; import com.example.spot.notification.presentation.dto.response.NotificationResponseDTO.NotificationListDTO.NotificationDTO; diff --git a/src/main/java/com/example/spot/notification/application/impl/HandleAppliedStudyParticipationUseCaseImpl.java b/src/main/java/com/example/spot/notification/application/impl/HandleAppliedStudyParticipationUseCaseImpl.java index 55b0e79e..5226f544 100644 --- a/src/main/java/com/example/spot/notification/application/impl/HandleAppliedStudyParticipationUseCaseImpl.java +++ b/src/main/java/com/example/spot/notification/application/impl/HandleAppliedStudyParticipationUseCaseImpl.java @@ -4,7 +4,7 @@ import com.example.spot.common.api.exception.GeneralException; import com.example.spot.notification.application.HandleAppliedStudyParticipationUseCase; import com.example.spot.notification.domain.Notification; -import com.example.spot.notification.domain.NotificationRepository; +import com.example.spot.notification.infrastructure.jpa.NotificationRepository; import com.example.spot.notification.domain.enums.NotifyType; import com.example.spot.notification.presentation.dto.response.NotificationResponseDTO.NotificationProcessDTO; import com.example.spot.study.domain.association.StudyMember; diff --git a/src/main/java/com/example/spot/notification/application/impl/ReadNotificationUseCaseImpl.java b/src/main/java/com/example/spot/notification/application/impl/ReadNotificationUseCaseImpl.java index aa2f94ec..4cd3fca1 100644 --- a/src/main/java/com/example/spot/notification/application/impl/ReadNotificationUseCaseImpl.java +++ b/src/main/java/com/example/spot/notification/application/impl/ReadNotificationUseCaseImpl.java @@ -4,7 +4,7 @@ import com.example.spot.common.api.exception.GeneralException; import com.example.spot.notification.application.ReadNotificationUseCase; import com.example.spot.notification.domain.Notification; -import com.example.spot.notification.domain.NotificationRepository; +import com.example.spot.notification.infrastructure.jpa.NotificationRepository; import com.example.spot.notification.presentation.dto.response.NotificationResponseDTO.NotificationProcessDTO; import java.util.Objects; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/spot/notification/domain/NotificationRepository.java b/src/main/java/com/example/spot/notification/infrastructure/jpa/NotificationRepository.java similarity index 63% rename from src/main/java/com/example/spot/notification/domain/NotificationRepository.java rename to src/main/java/com/example/spot/notification/infrastructure/jpa/NotificationRepository.java index 69f50130..51f1c161 100644 --- a/src/main/java/com/example/spot/notification/domain/NotificationRepository.java +++ b/src/main/java/com/example/spot/notification/infrastructure/jpa/NotificationRepository.java @@ -1,5 +1,6 @@ -package com.example.spot.notification.domain; +package com.example.spot.notification.infrastructure.jpa; +import com.example.spot.notification.domain.Notification; import com.example.spot.notification.domain.enums.NotifyType; import java.util.Optional; @@ -11,9 +12,13 @@ @Repository public interface NotificationRepository extends JpaRepository { - Optional findByMemberIdAndStudyIdAndTypeAndIsChecked(Long memberId, Long studyId, NotifyType type, boolean isChecked); + Optional findByMemberIdAndStudyIdAndTypeAndIsChecked(Long memberId, Long studyId, NotifyType type, + boolean isChecked); + List findByMemberIdAndTypeNot(Long memberId, Pageable pageable, NotifyType type); - List findByMemberIdAndTypeAndIsChecked(Long memberId, Pageable pageable, NotifyType type, boolean isChecked); + + List findByMemberIdAndTypeAndIsChecked(Long memberId, Pageable pageable, NotifyType type, + boolean isChecked); List findByType(NotifyType type); } diff --git a/src/main/java/com/example/spot/post/application/command/impl/LikePostUseCaseImpl.java b/src/main/java/com/example/spot/post/application/command/impl/LikePostUseCaseImpl.java index 10fcb288..e9fb2e56 100644 --- a/src/main/java/com/example/spot/post/application/command/impl/LikePostUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/command/impl/LikePostUseCaseImpl.java @@ -4,13 +4,13 @@ import com.example.spot.common.api.exception.handler.MemberHandler; import com.example.spot.common.api.exception.handler.PostHandler; import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import com.example.spot.post.application.command.LikePostUseCase; import com.example.spot.post.application.query.GetLikedPostUseCase; import com.example.spot.post.domain.Post; -import com.example.spot.post.domain.PostRepository; +import com.example.spot.post.infrastructure.jpa.PostRepository; import com.example.spot.post.domain.association.LikedPost; -import com.example.spot.post.domain.association.LikedPostRepository; +import com.example.spot.post.infrastructure.jpa.LikedPostRepository; import com.example.spot.post.presentation.dto.response.post.PostLikeResponse; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/spot/post/application/command/impl/ManagePostCommentUseCaseImpl.java b/src/main/java/com/example/spot/post/application/command/impl/ManagePostCommentUseCaseImpl.java index f1699343..99cb039a 100644 --- a/src/main/java/com/example/spot/post/application/command/impl/ManagePostCommentUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/command/impl/ManagePostCommentUseCaseImpl.java @@ -1,17 +1,17 @@ package com.example.spot.post.application.command.impl; import com.example.spot.post.domain.PostComment; -import com.example.spot.post.domain.PostCommentRepository; +import com.example.spot.post.infrastructure.jpa.PostCommentRepository; import com.example.spot.post.presentation.dto.request.comment.CommentCreateRequest; import com.example.spot.post.presentation.dto.response.comment.CommentCreateResponse; import com.example.spot.common.api.code.status.ErrorStatus; import com.example.spot.common.api.exception.handler.MemberHandler; import com.example.spot.common.api.exception.handler.PostHandler; import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import com.example.spot.post.application.command.ManagePostCommentUseCase; import com.example.spot.post.domain.Post; -import com.example.spot.post.domain.PostRepository; +import com.example.spot.post.infrastructure.jpa.PostRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/example/spot/post/application/command/impl/ManagePostUseCaseImpl.java b/src/main/java/com/example/spot/post/application/command/impl/ManagePostUseCaseImpl.java index 15cd5b29..4302cfed 100644 --- a/src/main/java/com/example/spot/post/application/command/impl/ManagePostUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/command/impl/ManagePostUseCaseImpl.java @@ -7,10 +7,10 @@ import com.example.spot.common.presentation.dto.util.response.ImageResponse.ImageUploadResponse; import com.example.spot.common.presentation.dto.util.response.ImageResponse.Images; import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import com.example.spot.post.application.command.ManagePostUseCase; import com.example.spot.post.domain.Post; -import com.example.spot.post.domain.PostRepository; +import com.example.spot.post.infrastructure.jpa.PostRepository; import com.example.spot.post.domain.enums.Board; import com.example.spot.post.presentation.dto.request.post.PostCreateRequest; import com.example.spot.post.presentation.dto.request.post.PostUpdateRequest; diff --git a/src/main/java/com/example/spot/post/application/command/impl/ScrapPostUseCaseImpl.java b/src/main/java/com/example/spot/post/application/command/impl/ScrapPostUseCaseImpl.java index d5412a30..b5638da4 100644 --- a/src/main/java/com/example/spot/post/application/command/impl/ScrapPostUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/command/impl/ScrapPostUseCaseImpl.java @@ -6,12 +6,12 @@ import com.example.spot.common.api.exception.handler.MemberHandler; import com.example.spot.common.api.exception.handler.PostHandler; import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import com.example.spot.post.application.command.ScrapPostUseCase; import com.example.spot.post.domain.Post; -import com.example.spot.post.domain.PostRepository; +import com.example.spot.post.infrastructure.jpa.PostRepository; import com.example.spot.post.domain.association.MemberScrap; -import com.example.spot.post.domain.association.MemberScrapRepository; +import com.example.spot.post.infrastructure.jpa.MemberScrapRepository; import com.example.spot.post.presentation.dto.request.post.ScrapAllDeleteRequest; import com.example.spot.post.presentation.dto.response.post.ScrapPostResponse; import com.example.spot.post.presentation.dto.response.post.ScrapsPostDeleteResponse; diff --git a/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostCommentUseCaseImpl.java b/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostCommentUseCaseImpl.java index cc85d912..0f2109a4 100644 --- a/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostCommentUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostCommentUseCaseImpl.java @@ -1,6 +1,6 @@ package com.example.spot.post.application.query.impl; -import com.example.spot.post.domain.association.LikedPostCommentRepository; +import com.example.spot.post.infrastructure.jpa.LikedPostCommentRepository; import com.example.spot.post.application.query.GetLikedPostCommentUseCase; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostUseCaseImpl.java b/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostUseCaseImpl.java index 5c8ab172..ae46c3b4 100644 --- a/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/query/impl/GetLikedPostUseCaseImpl.java @@ -1,7 +1,7 @@ package com.example.spot.post.application.query.impl; import com.example.spot.post.application.query.GetLikedPostUseCase; -import com.example.spot.post.domain.association.LikedPostRepository; +import com.example.spot.post.infrastructure.jpa.LikedPostRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -17,6 +17,7 @@ public class GetLikedPostUseCaseImpl implements GetLikedPostUseCase { /** * 게시글의 좋아요 수를 반환합니다. + * * @param postId 게시글 ID * @return 게시글의 좋아요 수 */ @@ -27,6 +28,7 @@ public long countByPostId(Long postId) { /** * 현재 사용자의 게시글 좋아요 여부를 true/false로 반환합니다. + * * @param postId 게시글 ID * @return 현재 사용자의 게시글 좋아요 여부 */ diff --git a/src/main/java/com/example/spot/post/application/query/impl/GetPostUseCaseImpl.java b/src/main/java/com/example/spot/post/application/query/impl/GetPostUseCaseImpl.java index 4504eb0b..d7bdd95b 100644 --- a/src/main/java/com/example/spot/post/application/query/impl/GetPostUseCaseImpl.java +++ b/src/main/java/com/example/spot/post/application/query/impl/GetPostUseCaseImpl.java @@ -10,10 +10,10 @@ import com.example.spot.post.domain.enums.Board; import com.example.spot.post.domain.enums.PostStatus; import com.example.spot.post.domain.association.MemberScrap; -import com.example.spot.post.domain.association.MemberScrapRepository; -import com.example.spot.post.domain.PostCommentRepository; -import com.example.spot.report.domain.PostReportRepository; -import com.example.spot.post.domain.PostRepository; +import com.example.spot.post.infrastructure.jpa.MemberScrapRepository; +import com.example.spot.post.infrastructure.jpa.PostCommentRepository; +import com.example.spot.report.infrastructure.jpa.PostReportRepository; +import com.example.spot.post.infrastructure.jpa.PostRepository; import com.example.spot.post.presentation.dto.response.comment.CommentDetailResponse; import com.example.spot.post.presentation.dto.response.comment.CommentResponse; import com.example.spot.post.presentation.dto.response.post.PostAnnouncementResponse; diff --git a/src/main/java/com/example/spot/post/domain/association/LikedPostCommentRepository.java b/src/main/java/com/example/spot/post/infrastructure/jpa/LikedPostCommentRepository.java similarity index 88% rename from src/main/java/com/example/spot/post/domain/association/LikedPostCommentRepository.java rename to src/main/java/com/example/spot/post/infrastructure/jpa/LikedPostCommentRepository.java index 62cf0bbe..3b4d2025 100644 --- a/src/main/java/com/example/spot/post/domain/association/LikedPostCommentRepository.java +++ b/src/main/java/com/example/spot/post/infrastructure/jpa/LikedPostCommentRepository.java @@ -1,5 +1,6 @@ -package com.example.spot.post.domain.association; +package com.example.spot.post.infrastructure.jpa; +import com.example.spot.post.domain.association.LikedPostComment; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; diff --git a/src/main/java/com/example/spot/post/domain/association/LikedPostRepository.java b/src/main/java/com/example/spot/post/infrastructure/jpa/LikedPostRepository.java similarity index 81% rename from src/main/java/com/example/spot/post/domain/association/LikedPostRepository.java rename to src/main/java/com/example/spot/post/infrastructure/jpa/LikedPostRepository.java index c1a305cc..7b444a02 100644 --- a/src/main/java/com/example/spot/post/domain/association/LikedPostRepository.java +++ b/src/main/java/com/example/spot/post/infrastructure/jpa/LikedPostRepository.java @@ -1,5 +1,6 @@ -package com.example.spot.post.domain.association; +package com.example.spot.post.infrastructure.jpa; +import com.example.spot.post.domain.association.LikedPost; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; diff --git a/src/main/java/com/example/spot/post/domain/association/MemberScrapRepository.java b/src/main/java/com/example/spot/post/infrastructure/jpa/MemberScrapRepository.java similarity index 82% rename from src/main/java/com/example/spot/post/domain/association/MemberScrapRepository.java rename to src/main/java/com/example/spot/post/infrastructure/jpa/MemberScrapRepository.java index bdf2b330..b5ba0b20 100644 --- a/src/main/java/com/example/spot/post/domain/association/MemberScrapRepository.java +++ b/src/main/java/com/example/spot/post/infrastructure/jpa/MemberScrapRepository.java @@ -1,5 +1,6 @@ -package com.example.spot.post.domain.association; +package com.example.spot.post.infrastructure.jpa; +import com.example.spot.post.domain.association.MemberScrap; import com.example.spot.post.domain.enums.Board; import org.springframework.data.domain.Page; @@ -21,5 +22,6 @@ public interface MemberScrapRepository extends JpaRepository Page findByMemberId(@Param("memberId") Long memberId, Pageable pageable); @Query("SELECT ms FROM MemberScrap ms LEFT JOIN FETCH ms.post p WHERE ms.member.id = :memberId AND p.board = :board ORDER BY ms.createdAt DESC") - Page findByMemberIdAndPost_Board(@Param("memberId") Long memberId, @Param("board") Board board, Pageable pageable); + Page findByMemberIdAndPost_Board(@Param("memberId") Long memberId, @Param("board") Board board, + Pageable pageable); } diff --git a/src/main/java/com/example/spot/post/domain/PostCommentRepository.java b/src/main/java/com/example/spot/post/infrastructure/jpa/PostCommentRepository.java similarity index 55% rename from src/main/java/com/example/spot/post/domain/PostCommentRepository.java rename to src/main/java/com/example/spot/post/infrastructure/jpa/PostCommentRepository.java index 4b8c8ac7..6c76aa03 100644 --- a/src/main/java/com/example/spot/post/domain/PostCommentRepository.java +++ b/src/main/java/com/example/spot/post/infrastructure/jpa/PostCommentRepository.java @@ -1,5 +1,7 @@ -package com.example.spot.post.domain; +package com.example.spot.post.infrastructure.jpa; +import com.example.spot.post.domain.PostComment; +import com.example.spot.post.infrastructure.querydsl.PostCommentRepositoryCustom; import org.springframework.data.jpa.repository.JpaRepository; public interface PostCommentRepository extends JpaRepository, PostCommentRepositoryCustom { diff --git a/src/main/java/com/example/spot/post/domain/PostRepository.java b/src/main/java/com/example/spot/post/infrastructure/jpa/PostRepository.java similarity index 61% rename from src/main/java/com/example/spot/post/domain/PostRepository.java rename to src/main/java/com/example/spot/post/infrastructure/jpa/PostRepository.java index bc83d918..7a579ea5 100644 --- a/src/main/java/com/example/spot/post/domain/PostRepository.java +++ b/src/main/java/com/example/spot/post/infrastructure/jpa/PostRepository.java @@ -1,5 +1,7 @@ -package com.example.spot.post.domain; +package com.example.spot.post.infrastructure.jpa; +import com.example.spot.post.domain.Post; +import com.example.spot.post.infrastructure.querydsl.PostRepositoryCustom; import com.example.spot.post.domain.enums.Board; import org.springframework.data.domain.Page; @@ -8,7 +10,7 @@ public interface PostRepository extends JpaRepository, PostRepositoryCustom { // 정렬 - Page findByBoardAndPostReportListIsEmptyOrderByCreatedAtDesc(Board board, Pageable pageable); + Page findByBoardAndPostReportListIsEmptyOrderByCreatedAtDesc(Board board, Pageable pageable); // 정렬 조건 필요 Page findByPostReportListIsEmptyOrderByCreatedAtDesc(Pageable pageable); diff --git a/src/main/java/com/example/spot/post/domain/schedule/PostScheduleCommentsRepository.java b/src/main/java/com/example/spot/post/infrastructure/jpa/PostScheduleCommentsRepository.java similarity index 58% rename from src/main/java/com/example/spot/post/domain/schedule/PostScheduleCommentsRepository.java rename to src/main/java/com/example/spot/post/infrastructure/jpa/PostScheduleCommentsRepository.java index 5d464bb2..7065d1f9 100644 --- a/src/main/java/com/example/spot/post/domain/schedule/PostScheduleCommentsRepository.java +++ b/src/main/java/com/example/spot/post/infrastructure/jpa/PostScheduleCommentsRepository.java @@ -1,5 +1,6 @@ -package com.example.spot.post.domain.schedule; +package com.example.spot.post.infrastructure.jpa; +import com.example.spot.post.domain.schedule.PostScheduleComments; import org.springframework.data.jpa.repository.JpaRepository; public interface PostScheduleCommentsRepository extends JpaRepository { diff --git a/src/main/java/com/example/spot/post/domain/schedule/PostScheduleLikesRepository.java b/src/main/java/com/example/spot/post/infrastructure/jpa/PostScheduleLikesRepository.java similarity index 58% rename from src/main/java/com/example/spot/post/domain/schedule/PostScheduleLikesRepository.java rename to src/main/java/com/example/spot/post/infrastructure/jpa/PostScheduleLikesRepository.java index 52145bef..1e8f0048 100644 --- a/src/main/java/com/example/spot/post/domain/schedule/PostScheduleLikesRepository.java +++ b/src/main/java/com/example/spot/post/infrastructure/jpa/PostScheduleLikesRepository.java @@ -1,5 +1,6 @@ -package com.example.spot.post.domain.schedule; +package com.example.spot.post.infrastructure.jpa; +import com.example.spot.post.domain.schedule.PostScheduleLikes; import org.springframework.data.jpa.repository.JpaRepository; public interface PostScheduleLikesRepository extends JpaRepository { diff --git a/src/main/java/com/example/spot/post/domain/schedule/PostScheduleRealTimeRepository.java b/src/main/java/com/example/spot/post/infrastructure/jpa/PostScheduleRealTimeRepository.java similarity index 58% rename from src/main/java/com/example/spot/post/domain/schedule/PostScheduleRealTimeRepository.java rename to src/main/java/com/example/spot/post/infrastructure/jpa/PostScheduleRealTimeRepository.java index 73a36e2a..7a9a6d73 100644 --- a/src/main/java/com/example/spot/post/domain/schedule/PostScheduleRealTimeRepository.java +++ b/src/main/java/com/example/spot/post/infrastructure/jpa/PostScheduleRealTimeRepository.java @@ -1,5 +1,6 @@ -package com.example.spot.post.domain.schedule; +package com.example.spot.post.infrastructure.jpa; +import com.example.spot.post.domain.schedule.PostScheduleRealTime; import org.springframework.data.jpa.repository.JpaRepository; public interface PostScheduleRealTimeRepository extends JpaRepository { diff --git a/src/main/java/com/example/spot/post/domain/PostCommentRepositoryCustom.java b/src/main/java/com/example/spot/post/infrastructure/querydsl/PostCommentRepositoryCustom.java similarity index 55% rename from src/main/java/com/example/spot/post/domain/PostCommentRepositoryCustom.java rename to src/main/java/com/example/spot/post/infrastructure/querydsl/PostCommentRepositoryCustom.java index 5a64e88d..b7a4f686 100644 --- a/src/main/java/com/example/spot/post/domain/PostCommentRepositoryCustom.java +++ b/src/main/java/com/example/spot/post/infrastructure/querydsl/PostCommentRepositoryCustom.java @@ -1,5 +1,6 @@ -package com.example.spot.post.domain; +package com.example.spot.post.infrastructure.querydsl; +import com.example.spot.post.domain.PostComment; import java.util.List; public interface PostCommentRepositoryCustom { diff --git a/src/main/java/com/example/spot/post/domain/PostRepositoryCustom.java b/src/main/java/com/example/spot/post/infrastructure/querydsl/PostRepositoryCustom.java similarity index 87% rename from src/main/java/com/example/spot/post/domain/PostRepositoryCustom.java rename to src/main/java/com/example/spot/post/infrastructure/querydsl/PostRepositoryCustom.java index 50953af4..b50bf046 100644 --- a/src/main/java/com/example/spot/post/domain/PostRepositoryCustom.java +++ b/src/main/java/com/example/spot/post/infrastructure/querydsl/PostRepositoryCustom.java @@ -1,5 +1,6 @@ -package com.example.spot.post.domain; +package com.example.spot.post.infrastructure.querydsl; +import com.example.spot.post.domain.Post; import java.util.List; public interface PostRepositoryCustom { diff --git a/src/main/java/com/example/spot/post/infrastructure/PostCommentRepositoryImpl.java b/src/main/java/com/example/spot/post/infrastructure/querydsl/impl/PostCommentRepositoryImpl.java similarity index 85% rename from src/main/java/com/example/spot/post/infrastructure/PostCommentRepositoryImpl.java rename to src/main/java/com/example/spot/post/infrastructure/querydsl/impl/PostCommentRepositoryImpl.java index bba96e45..2e043442 100644 --- a/src/main/java/com/example/spot/post/infrastructure/PostCommentRepositoryImpl.java +++ b/src/main/java/com/example/spot/post/infrastructure/querydsl/impl/PostCommentRepositoryImpl.java @@ -1,10 +1,10 @@ -package com.example.spot.post.infrastructure; +package com.example.spot.post.infrastructure.querydsl.impl; import static com.example.spot.post.domain.QPostComment.postComment; import com.example.spot.post.domain.PostComment; -import com.example.spot.post.domain.PostCommentRepositoryCustom; +import com.example.spot.post.infrastructure.querydsl.PostCommentRepositoryCustom; import com.querydsl.jpa.impl.JPAQueryFactory; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/spot/post/infrastructure/PostRepositoryImpl.java b/src/main/java/com/example/spot/post/infrastructure/querydsl/impl/PostRepositoryImpl.java similarity index 96% rename from src/main/java/com/example/spot/post/infrastructure/PostRepositoryImpl.java rename to src/main/java/com/example/spot/post/infrastructure/querydsl/impl/PostRepositoryImpl.java index 6dc15166..64eb6c02 100644 --- a/src/main/java/com/example/spot/post/infrastructure/PostRepositoryImpl.java +++ b/src/main/java/com/example/spot/post/infrastructure/querydsl/impl/PostRepositoryImpl.java @@ -1,11 +1,11 @@ -package com.example.spot.post.infrastructure; +package com.example.spot.post.infrastructure.querydsl.impl; import com.example.spot.post.domain.Post; -import com.example.spot.post.domain.PostRepositoryCustom; import com.example.spot.post.domain.QPost; import com.example.spot.post.domain.QPostComment; import com.example.spot.post.domain.association.QLikedPost; import com.example.spot.post.domain.enums.Board; +import com.example.spot.post.infrastructure.querydsl.PostRepositoryCustom; import com.querydsl.jpa.impl.JPAQueryFactory; import java.time.LocalDateTime; import java.util.ArrayList; diff --git a/src/main/java/com/example/spot/post/infrastructure/ExistPostValidator.java b/src/main/java/com/example/spot/post/infrastructure/validator/ExistPostValidator.java similarity index 83% rename from src/main/java/com/example/spot/post/infrastructure/ExistPostValidator.java rename to src/main/java/com/example/spot/post/infrastructure/validator/ExistPostValidator.java index e837903f..bfdf0683 100644 --- a/src/main/java/com/example/spot/post/infrastructure/ExistPostValidator.java +++ b/src/main/java/com/example/spot/post/infrastructure/validator/ExistPostValidator.java @@ -1,7 +1,7 @@ -package com.example.spot.post.infrastructure; +package com.example.spot.post.infrastructure.validator; import com.example.spot.common.api.code.status.ErrorStatus; -import com.example.spot.post.domain.PostRepository; +import com.example.spot.post.infrastructure.jpa.PostRepository; import com.example.spot.post.presentation.validator.ExistPost; import jakarta.validation.ConstraintValidator; @@ -16,7 +16,8 @@ public class ExistPostValidator implements ConstraintValidator private final PostRepository postRepository; @Override - public void initialize(ExistPost constraintAnnotation) {} + public void initialize(ExistPost constraintAnnotation) { + } @Override public boolean isValid(Long postId, ConstraintValidatorContext context) { @@ -36,7 +37,7 @@ public boolean isValid(Long postId, ConstraintValidatorContext context) { if (!isValid) { context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate(errorStatus.getMessage()) - .addConstraintViolation(); + .addConstraintViolation(); } return isValid; diff --git a/src/main/java/com/example/spot/post/presentation/validator/ExistPost.java b/src/main/java/com/example/spot/post/presentation/validator/ExistPost.java index da1fbccf..e01139e6 100644 --- a/src/main/java/com/example/spot/post/presentation/validator/ExistPost.java +++ b/src/main/java/com/example/spot/post/presentation/validator/ExistPost.java @@ -1,6 +1,6 @@ package com.example.spot.post.presentation.validator; -import com.example.spot.post.infrastructure.ExistPostValidator; +import com.example.spot.post.infrastructure.validator.ExistPostValidator; import jakarta.validation.Constraint; import jakarta.validation.Payload; @@ -12,10 +12,12 @@ @Documented @Constraint(validatedBy = ExistPostValidator.class) -@Target( { ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER }) +@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface ExistPost { String message() default "해당하는 게시글이 존재하지 않습니다."; + Class[] groups() default {}; + Class[] payload() default {}; } diff --git a/src/main/java/com/example/spot/report/application/ReportCommandServiceImpl.java b/src/main/java/com/example/spot/report/application/ReportCommandServiceImpl.java index caf15c9b..a19f407d 100644 --- a/src/main/java/com/example/spot/report/application/ReportCommandServiceImpl.java +++ b/src/main/java/com/example/spot/report/application/ReportCommandServiceImpl.java @@ -6,17 +6,17 @@ import com.example.spot.common.api.exception.handler.StudyHandler; import com.example.spot.common.security.utils.SecurityUtils; import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import com.example.spot.member.presentation.dto.MemberResponseDTO; import com.example.spot.post.domain.Post; -import com.example.spot.post.domain.PostRepository; +import com.example.spot.post.infrastructure.jpa.PostRepository; import com.example.spot.post.domain.enums.PostStatus; import com.example.spot.report.domain.MemberReport; -import com.example.spot.report.domain.MemberReportRepository; +import com.example.spot.report.infrastructure.jpa.MemberReportRepository; import com.example.spot.report.domain.PostReport; -import com.example.spot.report.domain.PostReportRepository; +import com.example.spot.report.infrastructure.jpa.PostReportRepository; import com.example.spot.report.domain.StoryReport; -import com.example.spot.report.domain.StoryReportRepository; +import com.example.spot.report.infrastructure.jpa.StoryReportRepository; import com.example.spot.report.presentation.dto.PostReportDTO; import com.example.spot.report.presentation.dto.StudyMemberReportDTO; import com.example.spot.story.domain.Story; diff --git a/src/main/java/com/example/spot/report/domain/MemberReportRepository.java b/src/main/java/com/example/spot/report/infrastructure/jpa/MemberReportRepository.java similarity index 67% rename from src/main/java/com/example/spot/report/domain/MemberReportRepository.java rename to src/main/java/com/example/spot/report/infrastructure/jpa/MemberReportRepository.java index 0c488924..9a896411 100644 --- a/src/main/java/com/example/spot/report/domain/MemberReportRepository.java +++ b/src/main/java/com/example/spot/report/infrastructure/jpa/MemberReportRepository.java @@ -1,5 +1,6 @@ -package com.example.spot.report.domain; +package com.example.spot.report.infrastructure.jpa; +import com.example.spot.report.domain.MemberReport; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/example/spot/report/domain/PostReportRepository.java b/src/main/java/com/example/spot/report/infrastructure/jpa/PostReportRepository.java similarity index 79% rename from src/main/java/com/example/spot/report/domain/PostReportRepository.java rename to src/main/java/com/example/spot/report/infrastructure/jpa/PostReportRepository.java index 522e0424..a803941e 100644 --- a/src/main/java/com/example/spot/report/domain/PostReportRepository.java +++ b/src/main/java/com/example/spot/report/infrastructure/jpa/PostReportRepository.java @@ -1,6 +1,7 @@ -package com.example.spot.report.domain; +package com.example.spot.report.infrastructure.jpa; import com.example.spot.post.domain.enums.PostStatus; +import com.example.spot.report.domain.PostReport; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/example/spot/report/domain/StoryReportRepository.java b/src/main/java/com/example/spot/report/infrastructure/jpa/StoryReportRepository.java similarity index 71% rename from src/main/java/com/example/spot/report/domain/StoryReportRepository.java rename to src/main/java/com/example/spot/report/infrastructure/jpa/StoryReportRepository.java index 16d70dd6..b34c8939 100644 --- a/src/main/java/com/example/spot/report/domain/StoryReportRepository.java +++ b/src/main/java/com/example/spot/report/infrastructure/jpa/StoryReportRepository.java @@ -1,5 +1,6 @@ -package com.example.spot.report.domain; +package com.example.spot.report.infrastructure.jpa; +import com.example.spot.report.domain.StoryReport; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/example/spot/schedule/application/ScheduleCommandServiceImpl.java b/src/main/java/com/example/spot/schedule/application/ScheduleCommandServiceImpl.java index 342690b3..16cf4f73 100644 --- a/src/main/java/com/example/spot/schedule/application/ScheduleCommandServiceImpl.java +++ b/src/main/java/com/example/spot/schedule/application/ScheduleCommandServiceImpl.java @@ -5,9 +5,9 @@ import com.example.spot.common.api.exception.handler.StudyHandler; import com.example.spot.common.security.utils.SecurityUtils; import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import com.example.spot.notification.domain.Notification; -import com.example.spot.notification.domain.NotificationRepository; +import com.example.spot.notification.infrastructure.jpa.NotificationRepository; import com.example.spot.notification.domain.enums.NotifyType; import com.example.spot.schedule.domain.Schedule; import com.example.spot.schedule.domain.ScheduleRepository; diff --git a/src/main/java/com/example/spot/schedule/application/ScheduleQueryServiceImpl.java b/src/main/java/com/example/spot/schedule/application/ScheduleQueryServiceImpl.java index b3898ba2..ca75d2b6 100644 --- a/src/main/java/com/example/spot/schedule/application/ScheduleQueryServiceImpl.java +++ b/src/main/java/com/example/spot/schedule/application/ScheduleQueryServiceImpl.java @@ -5,7 +5,7 @@ import com.example.spot.common.api.exception.handler.StudyHandler; import com.example.spot.common.security.utils.SecurityUtils; import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import com.example.spot.schedule.domain.Schedule; import com.example.spot.schedule.domain.ScheduleRepository; import com.example.spot.schedule.domain.association.Quiz; diff --git a/src/main/java/com/example/spot/schedule/domain/repository/QuizRepository.java b/src/main/java/com/example/spot/schedule/domain/repository/QuizRepository.java index fcb3070a..803a2afb 100644 --- a/src/main/java/com/example/spot/schedule/domain/repository/QuizRepository.java +++ b/src/main/java/com/example/spot/schedule/domain/repository/QuizRepository.java @@ -10,5 +10,6 @@ @Repository public interface QuizRepository extends JpaRepository { - List findAllByScheduleIdAndCreatedAtBetween(Long scheduleId, LocalDateTime startOfDay, LocalDateTime endOfDay); + List findAllByScheduleIdAndCreatedAtBetween(Long scheduleId, LocalDateTime startOfDay, + LocalDateTime endOfDay); } diff --git a/src/main/java/com/example/spot/schedule/domain/validation/validator/ExistQuizValidator.java b/src/main/java/com/example/spot/schedule/domain/validation/validator/ExistQuizValidator.java index de98aa91..5725a1c0 100644 --- a/src/main/java/com/example/spot/schedule/domain/validation/validator/ExistQuizValidator.java +++ b/src/main/java/com/example/spot/schedule/domain/validation/validator/ExistQuizValidator.java @@ -15,7 +15,8 @@ public class ExistQuizValidator implements ConstraintValidator private final QuizRepository quizRepository; @Override - public void initialize(ExistQuiz constraintAnnotation) {} + public void initialize(ExistQuiz constraintAnnotation) { + } @Override public boolean isValid(Long quizId, ConstraintValidatorContext context) { diff --git a/src/main/java/com/example/spot/schedule/domain/validation/validator/ExistScheduleValidator.java b/src/main/java/com/example/spot/schedule/domain/validation/validator/ExistScheduleValidator.java index c5e398df..db1d1d23 100644 --- a/src/main/java/com/example/spot/schedule/domain/validation/validator/ExistScheduleValidator.java +++ b/src/main/java/com/example/spot/schedule/domain/validation/validator/ExistScheduleValidator.java @@ -15,7 +15,8 @@ public class ExistScheduleValidator implements ConstraintValidator studyMemberQueryService.findStudyMembers(studyId)); diff --git a/src/test/java/com/example/spot/service/todo/ToDoCommandServiceTest.java b/src/test/java/com/example/spot/service/todo/ToDoCommandServiceTest.java index 567d7def..28d9d2e1 100644 --- a/src/test/java/com/example/spot/service/todo/ToDoCommandServiceTest.java +++ b/src/test/java/com/example/spot/service/todo/ToDoCommandServiceTest.java @@ -11,7 +11,7 @@ import com.example.spot.common.api.exception.handler.StudyHandler; import com.example.spot.member.domain.Member; -import com.example.spot.member.infrastructure.MemberRepository; +import com.example.spot.member.infrastructure.jpa.MemberRepository; import com.example.spot.study.domain.Study; import com.example.spot.study.domain.StudyRepository; import com.example.spot.study.domain.association.StudyMember;