diff --git a/src/main/java/com/tenten/linkhub/domain/member/controller/MemberController.java b/src/main/java/com/tenten/linkhub/domain/member/controller/MemberController.java index 48877f34..5c751d9e 100644 --- a/src/main/java/com/tenten/linkhub/domain/member/controller/MemberController.java +++ b/src/main/java/com/tenten/linkhub/domain/member/controller/MemberController.java @@ -20,8 +20,6 @@ import com.tenten.linkhub.domain.member.controller.dto.MemberUpdateApiRequest; import com.tenten.linkhub.domain.member.controller.dto.MemberUpdateApiResponse; import com.tenten.linkhub.domain.member.controller.mapper.MemberApiMapper; -import com.tenten.linkhub.domain.member.facade.MemberFacade; -import com.tenten.linkhub.domain.member.facade.dto.MemberSpacesFindByQueryFacadeResponses; import com.tenten.linkhub.domain.member.service.MemberService; import com.tenten.linkhub.domain.member.service.dto.MailSendResponse; import com.tenten.linkhub.domain.member.service.dto.MailVerificationRequest; @@ -35,6 +33,7 @@ import com.tenten.linkhub.domain.member.service.dto.MemberSearchResponses; import com.tenten.linkhub.domain.member.service.dto.MemberUpdateResponse; import com.tenten.linkhub.domain.space.service.SpaceService; +import com.tenten.linkhub.domain.space.service.dto.space.SpacesFindByQueryResponses; import com.tenten.linkhub.global.response.ErrorResponse; import com.tenten.linkhub.global.util.email.EmailDto; import io.swagger.v3.oas.annotations.Operation; @@ -68,13 +67,11 @@ public class MemberController { private final MemberService memberService; private final SpaceService spaceService; - private final MemberFacade memberFacade; private final MemberApiMapper mapper; - public MemberController(MemberService memberService, SpaceService spaceService, MemberFacade memberFacade, MemberApiMapper mapper) { + public MemberController(MemberService memberService, SpaceService spaceService, MemberApiMapper mapper) { this.memberService = memberService; this.spaceService = spaceService; - this.memberFacade = memberFacade; this.mapper = mapper; } @@ -344,7 +341,7 @@ public ResponseEntity findMySpaces( PageRequest pageRequest = PageRequest.of(request.pageNumber(), request.pageSize()); Long requestMemberId = Objects.isNull(memberDetails) ? null : memberDetails.memberId(); - MemberSpacesFindByQueryFacadeResponses responses = memberFacade.findMemberSpacesByQuery( + SpacesFindByQueryResponses responses = spaceService.findMemberSpacesByQuery( mapper.toMemberSpacesFindRequest(pageRequest, request, requestMemberId, memberId) ); diff --git a/src/main/java/com/tenten/linkhub/domain/member/controller/dto/MemberSpacesFindApiResponses.java b/src/main/java/com/tenten/linkhub/domain/member/controller/dto/MemberSpacesFindApiResponses.java index c0c099b8..fd95a765 100644 --- a/src/main/java/com/tenten/linkhub/domain/member/controller/dto/MemberSpacesFindApiResponses.java +++ b/src/main/java/com/tenten/linkhub/domain/member/controller/dto/MemberSpacesFindApiResponses.java @@ -1,6 +1,6 @@ package com.tenten.linkhub.domain.member.controller.dto; -import com.tenten.linkhub.domain.member.facade.dto.MemberSpacesFindByQueryFacadeResponses; +import com.tenten.linkhub.domain.space.service.dto.space.SpacesFindByQueryResponses; import com.tenten.linkhub.global.util.PageMetaData; import org.springframework.data.domain.Slice; @@ -10,7 +10,7 @@ public record MemberSpacesFindApiResponses( List responses, PageMetaData metaData ) { - public static MemberSpacesFindApiResponses from(MemberSpacesFindByQueryFacadeResponses responses){ + public static MemberSpacesFindApiResponses from(SpacesFindByQueryResponses responses){ Slice mapResponses = responses.responses() .map(r -> new MemberSpacesFindApiResponse( r.spaceId(), diff --git a/src/main/java/com/tenten/linkhub/domain/member/facade/MemberFacade.java b/src/main/java/com/tenten/linkhub/domain/member/facade/MemberFacade.java deleted file mode 100644 index 3175676b..00000000 --- a/src/main/java/com/tenten/linkhub/domain/member/facade/MemberFacade.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.tenten.linkhub.domain.member.facade; - -import com.tenten.linkhub.domain.member.facade.dto.MemberSpacesFindByQueryFacadeResponses; -import com.tenten.linkhub.domain.member.service.MemberService; -import com.tenten.linkhub.domain.member.service.dto.MemberNicknames; -import com.tenten.linkhub.domain.space.service.SpaceService; -import com.tenten.linkhub.domain.space.service.dto.space.MemberSpacesFindRequest; -import com.tenten.linkhub.domain.space.service.dto.space.SpacesFindByQueryResponse; -import com.tenten.linkhub.domain.space.service.dto.space.SpacesFindByQueryResponses; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -import java.util.List; - -@RequiredArgsConstructor -@Service -public class MemberFacade { - private final MemberService memberService; - private final SpaceService spaceService; - - public MemberSpacesFindByQueryFacadeResponses findMemberSpacesByQuery(MemberSpacesFindRequest request) { - SpacesFindByQueryResponses serviceResponses = spaceService.findMemberSpacesByQuery(request); - - List memberIds = getMemberIds(serviceResponses); - MemberNicknames memberNicknames = memberService.findMemberNicknamesByMemberIds(memberIds); - - return MemberSpacesFindByQueryFacadeResponses.of(serviceResponses, memberNicknames); - } - - private List getMemberIds(SpacesFindByQueryResponses serviceResponses) { - return serviceResponses.responses().getContent().stream() - .map(SpacesFindByQueryResponse::ownerId) - .toList(); - } -} diff --git a/src/main/java/com/tenten/linkhub/domain/member/facade/dto/MemberSpacesFindByQueryFacadeResponses.java b/src/main/java/com/tenten/linkhub/domain/member/facade/dto/MemberSpacesFindByQueryFacadeResponses.java deleted file mode 100644 index 094c366c..00000000 --- a/src/main/java/com/tenten/linkhub/domain/member/facade/dto/MemberSpacesFindByQueryFacadeResponses.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.tenten.linkhub.domain.member.facade.dto; - -import com.tenten.linkhub.domain.member.service.dto.MemberNicknames; -import com.tenten.linkhub.domain.space.model.category.Category; -import com.tenten.linkhub.domain.space.service.dto.space.SpacesFindByQueryResponses; -import org.springframework.data.domain.Slice; - -public record MemberSpacesFindByQueryFacadeResponses( - Slice responses -) { - - public static MemberSpacesFindByQueryFacadeResponses of(SpacesFindByQueryResponses spacesFindByQueryResponses, MemberNicknames memberNicknames) { - Slice mapResponses = spacesFindByQueryResponses.responses() - .map(r -> new MemberSpacesFindByQueryFacadeResponse( - r.spaceId(), - r.spaceName(), - r.description(), - r.category(), - r.isVisible(), - r.isComment(), - r.isLinkSummarizable(), - r.isReadMarkEnabled(), - r.viewCount(), - r.scrapCount(), - r.favoriteCount(), - r.spaceImagePath(), - memberNicknames.memberNicknames().get(r.ownerId()) - )); - - return new MemberSpacesFindByQueryFacadeResponses(mapResponses); - } - - public record MemberSpacesFindByQueryFacadeResponse( - Long spaceId, - String spaceName, - String description, - Category category, - Boolean isVisible, - Boolean isComment, - Boolean isLinkSummarizable, - Boolean isReadMarkEnabled, - Long viewCount, - Long scrapCount, - Long favoriteCount, - String spaceImagePath, - String ownerNickName - ) { } -} diff --git a/src/main/java/com/tenten/linkhub/domain/member/repository/member/DefaultMemberRepository.java b/src/main/java/com/tenten/linkhub/domain/member/repository/member/DefaultMemberRepository.java index 9945da0d..d4a41152 100644 --- a/src/main/java/com/tenten/linkhub/domain/member/repository/member/DefaultMemberRepository.java +++ b/src/main/java/com/tenten/linkhub/domain/member/repository/member/DefaultMemberRepository.java @@ -75,9 +75,4 @@ public Long findMemberIdByEmail(String email) { return memberJpaRepository.findMemberIdByEmail(email); } - @Override - public List findByMemberIds(List memberIds) { - return memberJpaRepository.findByIds(memberIds); - } - } diff --git a/src/main/java/com/tenten/linkhub/domain/member/repository/member/MemberJpaRepository.java b/src/main/java/com/tenten/linkhub/domain/member/repository/member/MemberJpaRepository.java index 4794c3c2..036c42d6 100644 --- a/src/main/java/com/tenten/linkhub/domain/member/repository/member/MemberJpaRepository.java +++ b/src/main/java/com/tenten/linkhub/domain/member/repository/member/MemberJpaRepository.java @@ -40,8 +40,5 @@ public interface MemberJpaRepository extends JpaRepository { @Query("SELECT m.id FROM Member m WHERE m.newsEmail = :email") Long findMemberIdByEmail(String email); - - @Query("SELECT m FROM Member m WHERE m.id IN :memberIds AND m.isDeleted = false") - List findByIds(List memberIds); } diff --git a/src/main/java/com/tenten/linkhub/domain/member/repository/member/MemberRepository.java b/src/main/java/com/tenten/linkhub/domain/member/repository/member/MemberRepository.java index b9fbf390..f2cf3bf6 100644 --- a/src/main/java/com/tenten/linkhub/domain/member/repository/member/MemberRepository.java +++ b/src/main/java/com/tenten/linkhub/domain/member/repository/member/MemberRepository.java @@ -30,6 +30,4 @@ public interface MemberRepository { Slice searchMember(MemberSearchQueryCondition queryCond); Long findMemberIdByEmail(String email); - - List findByMemberIds(List memberIds); } diff --git a/src/main/java/com/tenten/linkhub/domain/member/service/MemberService.java b/src/main/java/com/tenten/linkhub/domain/member/service/MemberService.java index dd354cf2..76855d09 100644 --- a/src/main/java/com/tenten/linkhub/domain/member/service/MemberService.java +++ b/src/main/java/com/tenten/linkhub/domain/member/service/MemberService.java @@ -12,7 +12,6 @@ import com.tenten.linkhub.domain.member.service.dto.MemberJoinRequest; import com.tenten.linkhub.domain.member.service.dto.MemberJoinResponse; import com.tenten.linkhub.domain.member.service.dto.MemberMyProfileResponse; -import com.tenten.linkhub.domain.member.service.dto.MemberNicknames; import com.tenten.linkhub.domain.member.service.dto.MemberProfileResponse; import com.tenten.linkhub.domain.member.service.dto.MemberSearchRequest; import com.tenten.linkhub.domain.member.service.dto.MemberSearchResponses; @@ -52,6 +51,4 @@ public interface MemberService { MemberSearchResponses searchMember(MemberSearchRequest memberSearchRequest); Long findMemberIdByEmail(String email); - - MemberNicknames findMemberNicknamesByMemberIds(List memberIds); } diff --git a/src/main/java/com/tenten/linkhub/domain/member/service/MemberServiceImpl.java b/src/main/java/com/tenten/linkhub/domain/member/service/MemberServiceImpl.java index cd1b745f..4a4aa04b 100644 --- a/src/main/java/com/tenten/linkhub/domain/member/service/MemberServiceImpl.java +++ b/src/main/java/com/tenten/linkhub/domain/member/service/MemberServiceImpl.java @@ -24,7 +24,6 @@ import com.tenten.linkhub.domain.member.service.dto.MemberJoinRequest; import com.tenten.linkhub.domain.member.service.dto.MemberJoinResponse; import com.tenten.linkhub.domain.member.service.dto.MemberMyProfileResponse; -import com.tenten.linkhub.domain.member.service.dto.MemberNicknames; import com.tenten.linkhub.domain.member.service.dto.MemberProfileResponse; import com.tenten.linkhub.domain.member.service.dto.MemberSearchRequest; import com.tenten.linkhub.domain.member.service.dto.MemberSearchResponses; @@ -273,12 +272,4 @@ public Long findMemberIdByEmail(String email) { return memberId; } - @Transactional - @Override - public MemberNicknames findMemberNicknamesByMemberIds(List memberIds) { - List members = memberRepository.findByMemberIds(memberIds); - - return MemberNicknames.from(members); - } - } diff --git a/src/main/java/com/tenten/linkhub/domain/member/service/dto/MemberNicknames.java b/src/main/java/com/tenten/linkhub/domain/member/service/dto/MemberNicknames.java deleted file mode 100644 index c34c1b94..00000000 --- a/src/main/java/com/tenten/linkhub/domain/member/service/dto/MemberNicknames.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.tenten.linkhub.domain.member.service.dto; - -import com.tenten.linkhub.domain.member.model.Member; - -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -public record MemberNicknames( - Map memberNicknames -) { - public static MemberNicknames from(List members) { - Map memberNicknames = members.stream() - .collect(Collectors.toMap( - Member::getId, - Member::getNickname - )); - - return new MemberNicknames(memberNicknames); - } -} diff --git a/src/main/java/com/tenten/linkhub/domain/space/controller/SpaceController.java b/src/main/java/com/tenten/linkhub/domain/space/controller/SpaceController.java index 9ace258a..2fad0ac7 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/controller/SpaceController.java +++ b/src/main/java/com/tenten/linkhub/domain/space/controller/SpaceController.java @@ -38,7 +38,6 @@ import com.tenten.linkhub.domain.space.facade.dto.RepliesAndMemberInfoResponses; import com.tenten.linkhub.domain.space.facade.dto.SpaceDetailGetByIdFacadeRequest; import com.tenten.linkhub.domain.space.facade.dto.SpaceDetailGetByIdFacadeResponse; -import com.tenten.linkhub.domain.space.facade.dto.SpacesWithNicknameFindByQueryFacadeResponses; import com.tenten.linkhub.domain.space.service.CommentService; import com.tenten.linkhub.domain.space.service.FavoriteService; import com.tenten.linkhub.domain.space.service.SpaceService; @@ -48,6 +47,7 @@ import com.tenten.linkhub.domain.space.service.dto.favorite.FavoriteSpacesFindResponses; import com.tenten.linkhub.domain.space.service.dto.favorite.SpaceRegisterInFavoriteResponse; import com.tenten.linkhub.domain.space.service.dto.space.PublicSpacesFindByQueryRequest; +import com.tenten.linkhub.domain.space.service.dto.space.SpacesFindByQueryResponses; import com.tenten.linkhub.domain.space.service.dto.space.SpaceTagGetResponses; import com.tenten.linkhub.domain.space.controller.annotation.SpaceViewList; import com.tenten.linkhub.global.response.ErrorResponse; @@ -123,7 +123,7 @@ public ResponseEntity findPublicSpacesByQue request.pageSize(), StringUtils.hasText(request.sort()) ? Sort.by(request.sort()) : Sort.unsorted()); - SpacesWithNicknameFindByQueryFacadeResponses responses = spaceFacade.findPublicSpacesWithNicknameByQuery( + SpacesFindByQueryResponses responses = spaceService.findPublicSpacesByQuery( spaceMapper.toPublicSpacesFindByQueryRequest(request, pageRequest) ); @@ -291,7 +291,7 @@ public ResponseEntity findPublicSpacesWit StringUtils.hasText(request.sort()) ? Sort.by(request.sort()) : Sort.unsorted()); PublicSpacesFindByQueryRequest serviceRequest = spaceMapper.toPublicSpacesFindByQueryRequest(request, pageRequest); - SpacesWithNicknameFindByQueryFacadeResponses responses = spaceFacade.findPublicSpacesWithNicknameByQuery(serviceRequest); + SpacesFindByQueryResponses responses = spaceService.findPublicSpacesByQuery(serviceRequest); PublicSpaceFindWithFilterApiResponses apiResponses = PublicSpaceFindWithFilterApiResponses.from(responses); diff --git a/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpaceFindWithFilterApiResponses.java b/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpaceFindWithFilterApiResponses.java index f769cdb1..b85b9445 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpaceFindWithFilterApiResponses.java +++ b/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpaceFindWithFilterApiResponses.java @@ -1,6 +1,6 @@ package com.tenten.linkhub.domain.space.controller.dto.space; -import com.tenten.linkhub.domain.space.facade.dto.SpacesWithNicknameFindByQueryFacadeResponses; +import com.tenten.linkhub.domain.space.service.dto.space.SpacesFindByQueryResponses; import com.tenten.linkhub.global.util.PageMetaData; import org.springframework.data.domain.Slice; @@ -10,7 +10,7 @@ public record PublicSpaceFindWithFilterApiResponses( List responses, PageMetaData metaData ) { - public static PublicSpaceFindWithFilterApiResponses from(SpacesWithNicknameFindByQueryFacadeResponses responses) { + public static PublicSpaceFindWithFilterApiResponses from(SpacesFindByQueryResponses responses) { Slice mapResponses = responses.responses() .map(r -> new PublicSpaceFindWithFilterApiResponse( r.spaceId(), diff --git a/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindByQueryApiResponses.java b/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindByQueryApiResponses.java index 46a1902c..94f3d438 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindByQueryApiResponses.java +++ b/src/main/java/com/tenten/linkhub/domain/space/controller/dto/space/PublicSpacesFindByQueryApiResponses.java @@ -1,6 +1,6 @@ package com.tenten.linkhub.domain.space.controller.dto.space; -import com.tenten.linkhub.domain.space.facade.dto.SpacesWithNicknameFindByQueryFacadeResponses; +import com.tenten.linkhub.domain.space.service.dto.space.SpacesFindByQueryResponses; import com.tenten.linkhub.global.util.PageMetaData; import org.springframework.data.domain.Slice; @@ -10,7 +10,7 @@ public record PublicSpacesFindByQueryApiResponses( List responses, PageMetaData metaData ) { - public static PublicSpacesFindByQueryApiResponses from(SpacesWithNicknameFindByQueryFacadeResponses responses) { + public static PublicSpacesFindByQueryApiResponses from(SpacesFindByQueryResponses responses) { Slice mapResponses = responses.responses() .map(r -> new PublicSpacesFindByQueryApiResponse( r.spaceId(), diff --git a/src/main/java/com/tenten/linkhub/domain/space/facade/SpaceFacade.java b/src/main/java/com/tenten/linkhub/domain/space/facade/SpaceFacade.java index 3f3a8f39..e33e01a7 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/facade/SpaceFacade.java +++ b/src/main/java/com/tenten/linkhub/domain/space/facade/SpaceFacade.java @@ -2,13 +2,11 @@ import com.tenten.linkhub.domain.member.service.MemberService; import com.tenten.linkhub.domain.member.service.dto.MemberInfos; -import com.tenten.linkhub.domain.member.service.dto.MemberNicknames; import com.tenten.linkhub.domain.space.facade.dto.NewSpacesScrapFacadeRequest; import com.tenten.linkhub.domain.space.facade.dto.SpaceCreateFacadeRequest; import com.tenten.linkhub.domain.space.facade.dto.SpaceDetailGetByIdFacadeRequest; import com.tenten.linkhub.domain.space.facade.dto.SpaceDetailGetByIdFacadeResponse; import com.tenten.linkhub.domain.space.facade.dto.SpaceUpdateFacadeRequest; -import com.tenten.linkhub.domain.space.facade.dto.SpacesWithNicknameFindByQueryFacadeResponses; import com.tenten.linkhub.domain.space.facade.mapper.SpaceFacadeMapper; import com.tenten.linkhub.domain.space.handler.dto.ScrapSaveEvent; import com.tenten.linkhub.domain.space.handler.dto.SpaceImageDeleteEvent; @@ -17,11 +15,8 @@ import com.tenten.linkhub.domain.space.service.SpaceImageUploader; import com.tenten.linkhub.domain.space.service.SpaceService; import com.tenten.linkhub.domain.space.service.dto.space.DeletedSpaceImageNames; -import com.tenten.linkhub.domain.space.service.dto.space.PublicSpacesFindByQueryRequest; import com.tenten.linkhub.domain.space.service.dto.space.SpaceMemberInfo; import com.tenten.linkhub.domain.space.service.dto.space.SpaceWithSpaceImageAndSpaceMemberInfo; -import com.tenten.linkhub.domain.space.service.dto.space.SpacesFindByQueryResponse; -import com.tenten.linkhub.domain.space.service.dto.space.SpacesFindByQueryResponses; import com.tenten.linkhub.global.aws.dto.ImageInfo; import java.util.List; @@ -93,27 +88,12 @@ public Long scrapAndCreateNewSpace(NewSpacesScrapFacadeRequest request) { return savedSpaceId; } - public SpacesWithNicknameFindByQueryFacadeResponses findPublicSpacesWithNicknameByQuery(PublicSpacesFindByQueryRequest request) { - SpacesFindByQueryResponses serviceResponses = spaceService.findPublicSpacesByQuery(request); - - List memberIds = getMemberIds(serviceResponses); - MemberNicknames memberNicknames = memberService.findMemberNicknamesByMemberIds(memberIds); - - return SpacesWithNicknameFindByQueryFacadeResponses.of(serviceResponses, memberNicknames); - } - private List getMemberIds(SpaceWithSpaceImageAndSpaceMemberInfo response) { return response.spaceMemberInfos().stream() .map(SpaceMemberInfo::memberId) .toList(); } - private List getMemberIds(SpacesFindByQueryResponses response) { - return response.responses().getContent().stream() - .map(SpacesFindByQueryResponse::ownerId) - .toList(); - } - private List increaseSpaceViewCountAndSetSpaceViews(List spaceViews, Long spaceId) { if (spaceViews.isEmpty()) { eventPublisher.publishEvent( @@ -135,4 +115,5 @@ private List increaseSpaceViewCountAndSetSpaceViews(List spaceViews, return spaceViews; } + } diff --git a/src/main/java/com/tenten/linkhub/domain/space/facade/dto/SpacesWithNicknameFindByQueryFacadeResponses.java b/src/main/java/com/tenten/linkhub/domain/space/facade/dto/SpacesWithNicknameFindByQueryFacadeResponses.java deleted file mode 100644 index e14fb0e2..00000000 --- a/src/main/java/com/tenten/linkhub/domain/space/facade/dto/SpacesWithNicknameFindByQueryFacadeResponses.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.tenten.linkhub.domain.space.facade.dto; - -import com.tenten.linkhub.domain.member.service.dto.MemberNicknames; -import com.tenten.linkhub.domain.space.model.category.Category; -import com.tenten.linkhub.domain.space.service.dto.space.SpacesFindByQueryResponses; -import org.springframework.data.domain.Slice; - -public record SpacesWithNicknameFindByQueryFacadeResponses( - Slice responses -) { - public static SpacesWithNicknameFindByQueryFacadeResponses of(SpacesFindByQueryResponses spacesFindByQueryResponses, MemberNicknames memberNicknames) { - Slice mapResponses = spacesFindByQueryResponses.responses() - .map(r -> new SpacesWithNicknameFindByQueryResponse( - r.spaceId(), - r.spaceName(), - r.description(), - r.category(), - r.isVisible(), - r.isComment(), - r.isLinkSummarizable(), - r.isReadMarkEnabled(), - r.viewCount(), - r.scrapCount(), - r.favoriteCount(), - r.spaceImagePath(), - memberNicknames.memberNicknames().get(r.ownerId()) - )); - - return new SpacesWithNicknameFindByQueryFacadeResponses(mapResponses); - } - - public record SpacesWithNicknameFindByQueryResponse( - Long spaceId, - String spaceName, - String description, - Category category, - Boolean isVisible, - Boolean isComment, - Boolean isLinkSummarizable, - Boolean isReadMarkEnabled, - Long viewCount, - Long scrapCount, - Long favoriteCount, - String spaceImagePath, - String ownerNickName - ) { } -} diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/common/dto/SpaceAndSpaceImage.java b/src/main/java/com/tenten/linkhub/domain/space/repository/common/dto/SpaceAndSpaceImage.java deleted file mode 100644 index 343a6cc1..00000000 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/common/dto/SpaceAndSpaceImage.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.tenten.linkhub.domain.space.repository.common.dto; - -import com.tenten.linkhub.domain.space.model.space.Space; -import com.tenten.linkhub.domain.space.model.space.SpaceImage; - -import java.util.List; - -public record SpaceAndSpaceImage( - Space space, - List spaceImages -) { -} diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/common/dto/SpaceAndSpaceImageOwnerNickNames.java b/src/main/java/com/tenten/linkhub/domain/space/repository/common/dto/SpaceAndSpaceImageOwnerNickNames.java index 98c9f659..f46a7be7 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/common/dto/SpaceAndSpaceImageOwnerNickNames.java +++ b/src/main/java/com/tenten/linkhub/domain/space/repository/common/dto/SpaceAndSpaceImageOwnerNickNames.java @@ -27,5 +27,4 @@ public static SpaceAndSpaceImageOwnerNickNames of(List sp return new SpaceAndSpaceImageOwnerNickNames(mapSpaceAndSpaceImageOwnerNickNames); } - } diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/common/dto/SpaceAndSpaceImages.java b/src/main/java/com/tenten/linkhub/domain/space/repository/common/dto/SpaceAndSpaceImages.java deleted file mode 100644 index d4987823..00000000 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/common/dto/SpaceAndSpaceImages.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.tenten.linkhub.domain.space.repository.common.dto; - -import com.tenten.linkhub.domain.space.model.space.Space; -import com.tenten.linkhub.domain.space.model.space.SpaceImage; - -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -public record SpaceAndSpaceImages( - List contents -) { - public static SpaceAndSpaceImages of(List spaces, List spaceImages) { - Map> spaceImageMap = spaceImages - .stream() - .collect(Collectors.groupingBy( - si -> si.getSpace().getId() - )); - - List mapSpaceAndSpaceImages = spaces - .stream() - .map(s -> new SpaceAndSpaceImage( - s, - spaceImageMap.get(s.getId()) - )) - .collect(Collectors.toList()); - - return new SpaceAndSpaceImages(mapSpaceAndSpaceImages); - } -} diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/favorite/FavoriteRepository.java b/src/main/java/com/tenten/linkhub/domain/space/repository/favorite/FavoriteRepository.java index ac7f78b7..8682a093 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/favorite/FavoriteRepository.java +++ b/src/main/java/com/tenten/linkhub/domain/space/repository/favorite/FavoriteRepository.java @@ -1,6 +1,7 @@ package com.tenten.linkhub.domain.space.repository.favorite; import com.tenten.linkhub.domain.space.model.space.Favorite; +import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndOwnerNickName; import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImageOwnerNickName; import com.tenten.linkhub.domain.space.repository.favorite.dto.MyFavoriteSpacesQueryCondition; import org.springframework.data.domain.Slice; diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/favorite/querydsl/FavoriteQueryDslRepository.java b/src/main/java/com/tenten/linkhub/domain/space/repository/favorite/querydsl/FavoriteQueryDslRepository.java index 70dd09db..1f9d19cb 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/favorite/querydsl/FavoriteQueryDslRepository.java +++ b/src/main/java/com/tenten/linkhub/domain/space/repository/favorite/querydsl/FavoriteQueryDslRepository.java @@ -52,7 +52,6 @@ public Slice findMyFavoriteSpacesByQuery(MyFavo List spaceIds = getSpaceIds(spaceAndOwnerNickNames); List spaceImages = findSpaceImagesBySpaceIds(spaceIds); - SpaceAndSpaceImageOwnerNickNames spaceAndSpaceImageOwnerNickNames = SpaceAndSpaceImageOwnerNickNames.of(spaceAndOwnerNickNames, spaceImages); List contents = spaceAndSpaceImageOwnerNickNames.contents(); diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/space/DefaultSpaceRepository.java b/src/main/java/com/tenten/linkhub/domain/space/repository/space/DefaultSpaceRepository.java index fe722b30..db361ee7 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/space/DefaultSpaceRepository.java +++ b/src/main/java/com/tenten/linkhub/domain/space/repository/space/DefaultSpaceRepository.java @@ -1,7 +1,7 @@ package com.tenten.linkhub.domain.space.repository.space; import com.tenten.linkhub.domain.space.model.space.Space; -import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImage; +import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImageOwnerNickName; import com.tenten.linkhub.domain.space.repository.space.dto.MemberSpacesQueryCondition; import com.tenten.linkhub.domain.space.repository.space.dto.QueryCondition; import com.tenten.linkhub.domain.space.repository.space.querydsl.SpaceQueryDslRepository; @@ -22,7 +22,7 @@ public DefaultSpaceRepository(SpaceJpaRepository spaceJpaRepository, SpaceQueryD } @Override - public Slice findPublicSpacesJoinSpaceImageByQuery(QueryCondition queryCondition) { + public Slice findPublicSpacesJoinSpaceImageByQuery(QueryCondition queryCondition) { return spaceQueryDslRepository.findPublicSpacesJoinSpaceImageByCondition(queryCondition); } @@ -44,7 +44,7 @@ public Space getSpaceJoinSpaceMemberById(Long spaceId) { } @Override - public Slice findMemberSpacesJoinSpaceImageByQuery(MemberSpacesQueryCondition queryCondition) { + public Slice findMemberSpacesJoinSpaceImageByQuery(MemberSpacesQueryCondition queryCondition) { return spaceQueryDslRepository.findMemberSpacesJoinSpaceImageByCondition(queryCondition); } diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/space/SpaceRepository.java b/src/main/java/com/tenten/linkhub/domain/space/repository/space/SpaceRepository.java index 75da5ff9..072a2b70 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/space/SpaceRepository.java +++ b/src/main/java/com/tenten/linkhub/domain/space/repository/space/SpaceRepository.java @@ -1,14 +1,14 @@ package com.tenten.linkhub.domain.space.repository.space; import com.tenten.linkhub.domain.space.model.space.Space; -import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImage; +import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImageOwnerNickName; import com.tenten.linkhub.domain.space.repository.space.dto.MemberSpacesQueryCondition; import com.tenten.linkhub.domain.space.repository.space.dto.QueryCondition; import org.springframework.data.domain.Slice; public interface SpaceRepository { - Slice findPublicSpacesJoinSpaceImageByQuery(QueryCondition queryCondition); + Slice findPublicSpacesJoinSpaceImageByQuery(QueryCondition queryCondition); Space save(Space space); @@ -16,7 +16,7 @@ public interface SpaceRepository { Space getSpaceJoinSpaceMemberById(Long spaceId); - Slice findMemberSpacesJoinSpaceImageByQuery(MemberSpacesQueryCondition queryCondition); + Slice findMemberSpacesJoinSpaceImageByQuery(MemberSpacesQueryCondition queryCondition); void increaseFavoriteCount(Long spaceId); diff --git a/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java b/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java index ce05194c..2ff9fe6d 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java +++ b/src/main/java/com/tenten/linkhub/domain/space/repository/space/querydsl/SpaceQueryDslRepository.java @@ -1,10 +1,11 @@ package com.tenten.linkhub.domain.space.repository.space.querydsl; import com.querydsl.jpa.impl.JPAQueryFactory; -import com.tenten.linkhub.domain.space.model.space.Space; import com.tenten.linkhub.domain.space.model.space.SpaceImage; -import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImage; -import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImages; +import com.tenten.linkhub.domain.space.repository.common.dto.QSpaceAndOwnerNickName; +import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndOwnerNickName; +import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImageOwnerNickName; +import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImageOwnerNickNames; import com.tenten.linkhub.domain.space.repository.space.dto.MemberSpacesQueryCondition; import com.tenten.linkhub.domain.space.repository.space.dto.QueryCondition; import org.springframework.data.domain.Slice; @@ -13,6 +14,7 @@ import java.util.List; +import static com.tenten.linkhub.domain.member.model.QMember.member; import static com.tenten.linkhub.domain.space.model.space.QSpace.space; import static com.tenten.linkhub.domain.space.model.space.QSpaceImage.spaceImage; import static com.tenten.linkhub.domain.space.model.space.QSpaceMember.spaceMember; @@ -28,10 +30,14 @@ public SpaceQueryDslRepository(JPAQueryFactory queryFactory) { this.dynamicQueryFactory = new DynamicQueryFactory(); } - public Slice findPublicSpacesJoinSpaceImageByCondition(QueryCondition condition) { - List spaces = queryFactory - .select(space) + public Slice findPublicSpacesJoinSpaceImageByCondition(QueryCondition condition) { + List spaceAndOwnerNickNames = queryFactory + .select(new QSpaceAndOwnerNickName( + space, + member.nickname + )) .from(space) + .join(member).on(space.memberId.eq(member.id)) .where(space.isDeleted.eq(false), space.isVisible.eq(true), dynamicQueryFactory.eqSpaceName(condition.keyWord()), @@ -42,13 +48,13 @@ public Slice findPublicSpacesJoinSpaceImageByCondition(Query .limit(condition.pageable().getPageSize() + 1) .fetch(); - List spaceIds = getSpaceIds(spaces); + List spaceIds = getSpaceIds(spaceAndOwnerNickNames); List spaceImages = findSpaceImagesBySpaceIds(spaceIds); - SpaceAndSpaceImages spaceAndSpaceImages = SpaceAndSpaceImages.of(spaces, spaceImages); + SpaceAndSpaceImageOwnerNickNames spaceAndSpaceImageOwnerNickNames = SpaceAndSpaceImageOwnerNickNames.of(spaceAndOwnerNickNames, spaceImages); - List contents = spaceAndSpaceImages.contents(); + List contents = spaceAndSpaceImageOwnerNickNames.contents(); boolean hasNext = false; if (contents.size() > condition.pageable().getPageSize()) { @@ -59,11 +65,15 @@ public Slice findPublicSpacesJoinSpaceImageByCondition(Query return new SliceImpl<>(contents, condition.pageable(), hasNext); } - public Slice findMemberSpacesJoinSpaceImageByCondition(MemberSpacesQueryCondition condition) { - List spaces = queryFactory - .select(space) + public Slice findMemberSpacesJoinSpaceImageByCondition(MemberSpacesQueryCondition condition) { + List spaceAndOwnerNickNames = queryFactory + .select(new QSpaceAndOwnerNickName( + space, + member.nickname + )) .from(space) .join(space.spaceMembers.spaceMemberList, spaceMember) + .join(member).on(space.memberId.eq(member.id)) .where(spaceMember.memberId.eq(condition.memberId()), space.isDeleted.eq(false), dynamicQueryFactory.eqIsVisible(condition.isMySpace()), @@ -75,13 +85,13 @@ public Slice findMemberSpacesJoinSpaceImageByCondition(Membe .limit(condition.pageable().getPageSize() + 1) .fetch(); - List spaceIds = getSpaceIds(spaces); + List spaceIds = getSpaceIds(spaceAndOwnerNickNames); List spaceImages = findSpaceImagesBySpaceIds(spaceIds); - SpaceAndSpaceImages spaceAndSpaceImages = SpaceAndSpaceImages.of(spaces, spaceImages); + SpaceAndSpaceImageOwnerNickNames spaceAndSpaceImageOwnerNickNames = SpaceAndSpaceImageOwnerNickNames.of(spaceAndOwnerNickNames, spaceImages); - List contents = spaceAndSpaceImages.contents(); + List contents = spaceAndSpaceImageOwnerNickNames.contents(); boolean hasNext = false; if (contents.size() > condition.pageable().getPageSize()) { @@ -100,10 +110,10 @@ private List findSpaceImagesBySpaceIds(List spaceIds) { .fetch(); } - private static List getSpaceIds(List spaces) { - return spaces + private static List getSpaceIds(List spaceAndOwnerNickNames) { + return spaceAndOwnerNickNames .stream() - .map(Space::getId) + .map(s -> s.space().getId()) .toList(); } diff --git a/src/main/java/com/tenten/linkhub/domain/space/service/DefaultSpaceService.java b/src/main/java/com/tenten/linkhub/domain/space/service/DefaultSpaceService.java index 5aea3d9c..e273a263 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/service/DefaultSpaceService.java +++ b/src/main/java/com/tenten/linkhub/domain/space/service/DefaultSpaceService.java @@ -4,7 +4,7 @@ import com.tenten.linkhub.domain.space.model.space.Space; import com.tenten.linkhub.domain.space.model.space.SpaceImage; import com.tenten.linkhub.domain.space.model.space.SpaceMember; -import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImage; +import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImageOwnerNickName; import com.tenten.linkhub.domain.space.repository.favorite.FavoriteRepository; import com.tenten.linkhub.domain.space.repository.link.LinkRepository; import com.tenten.linkhub.domain.space.repository.scrap.ScrapRepository; @@ -58,7 +58,7 @@ public class DefaultSpaceService implements SpaceService { @Transactional(readOnly = true) public SpacesFindByQueryResponses findPublicSpacesByQuery(PublicSpacesFindByQueryRequest request) { validateSearchKeWord(request.keyWord()); - Slice spaceAndSpaceImageOwnerNickName = spaceRepository.findPublicSpacesJoinSpaceImageByQuery(mapper.toQueryCond(request)); + Slice spaceAndSpaceImageOwnerNickName = spaceRepository.findPublicSpacesJoinSpaceImageByQuery(mapper.toQueryCond(request)); return SpacesFindByQueryResponses.from(spaceAndSpaceImageOwnerNickName); } @@ -128,7 +128,7 @@ public SpacesFindByQueryResponses findMemberSpacesByQuery(MemberSpacesFindReques Boolean isMySpace = Objects.equals(request.requestMemberId(), request.targetMemberId()); MemberSpacesQueryCondition queryCondition = mapper.toMemberSpacesQueryCondition(request, isMySpace); - Slice spaceAndSpaceImageOwnerNickName = spaceRepository.findMemberSpacesJoinSpaceImageByQuery(queryCondition); + Slice spaceAndSpaceImageOwnerNickName = spaceRepository.findMemberSpacesJoinSpaceImageByQuery(queryCondition); return SpacesFindByQueryResponses.from(spaceAndSpaceImageOwnerNickName); } diff --git a/src/main/java/com/tenten/linkhub/domain/space/service/dto/favorite/FavoriteSpacesFindResponses.java b/src/main/java/com/tenten/linkhub/domain/space/service/dto/favorite/FavoriteSpacesFindResponses.java index e4feedc1..0ceee965 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/service/dto/favorite/FavoriteSpacesFindResponses.java +++ b/src/main/java/com/tenten/linkhub/domain/space/service/dto/favorite/FavoriteSpacesFindResponses.java @@ -1,5 +1,6 @@ package com.tenten.linkhub.domain.space.service.dto.favorite; +import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndOwnerNickName; import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImageOwnerNickName; import org.springframework.data.domain.Slice; diff --git a/src/main/java/com/tenten/linkhub/domain/space/service/dto/space/SpacesFindByQueryResponse.java b/src/main/java/com/tenten/linkhub/domain/space/service/dto/space/SpacesFindByQueryResponse.java index f9f6d5c4..81681d77 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/service/dto/space/SpacesFindByQueryResponse.java +++ b/src/main/java/com/tenten/linkhub/domain/space/service/dto/space/SpacesFindByQueryResponse.java @@ -15,6 +15,6 @@ public record SpacesFindByQueryResponse( Long scrapCount, Long favoriteCount, String spaceImagePath, - Long ownerId + String ownerNickName ) { } diff --git a/src/main/java/com/tenten/linkhub/domain/space/service/dto/space/SpacesFindByQueryResponses.java b/src/main/java/com/tenten/linkhub/domain/space/service/dto/space/SpacesFindByQueryResponses.java index fb69357e..50855a69 100644 --- a/src/main/java/com/tenten/linkhub/domain/space/service/dto/space/SpacesFindByQueryResponses.java +++ b/src/main/java/com/tenten/linkhub/domain/space/service/dto/space/SpacesFindByQueryResponses.java @@ -1,13 +1,13 @@ package com.tenten.linkhub.domain.space.service.dto.space; -import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImage; +import com.tenten.linkhub.domain.space.repository.common.dto.SpaceAndSpaceImageOwnerNickName; import org.springframework.data.domain.Slice; import java.util.Objects; public record SpacesFindByQueryResponses(Slice responses) { - public static SpacesFindByQueryResponses from(Slice response){ + public static SpacesFindByQueryResponses from(Slice response){ Slice mapResponses = response.map(s -> new SpacesFindByQueryResponse( s.space().getId(), s.space().getSpaceName(), @@ -21,7 +21,7 @@ public static SpacesFindByQueryResponses from(Slice response s.space().getScrapCount(), s.space().getFavoriteCount(), s.spaceImages().isEmpty() ? null : s.spaceImages().get(0).getPath(), - s.space().getMemberId() + s.ownerNickName() )); return new SpacesFindByQueryResponses(mapResponses); diff --git a/src/test/java/com/tenten/linkhub/domain/member/facade/MemberFacadeTest.java b/src/test/java/com/tenten/linkhub/domain/member/facade/MemberFacadeTest.java deleted file mode 100644 index 728d2597..00000000 --- a/src/test/java/com/tenten/linkhub/domain/member/facade/MemberFacadeTest.java +++ /dev/null @@ -1,273 +0,0 @@ -package com.tenten.linkhub.domain.member.facade; - -import com.tenten.linkhub.IntegrationApplicationTest; -import com.tenten.linkhub.domain.member.facade.dto.MemberSpacesFindByQueryFacadeResponses; -import com.tenten.linkhub.domain.member.facade.dto.MemberSpacesFindByQueryFacadeResponses.MemberSpacesFindByQueryFacadeResponse; -import com.tenten.linkhub.domain.member.model.FavoriteCategory; -import com.tenten.linkhub.domain.member.model.Member; -import com.tenten.linkhub.domain.member.model.ProfileImage; -import com.tenten.linkhub.domain.member.model.Provider; -import com.tenten.linkhub.domain.member.repository.member.MemberJpaRepository; -import com.tenten.linkhub.domain.space.model.category.Category; -import com.tenten.linkhub.domain.space.model.space.Role; -import com.tenten.linkhub.domain.space.model.space.Space; -import com.tenten.linkhub.domain.space.model.space.SpaceImage; -import com.tenten.linkhub.domain.space.model.space.SpaceMember; -import com.tenten.linkhub.domain.space.repository.space.SpaceJpaRepository; -import com.tenten.linkhub.domain.space.service.dto.space.MemberSpacesFindRequest; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.PageRequest; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - -class MemberFacadeTest extends IntegrationApplicationTest { - - @Autowired - private MemberFacade memberFacade; - - @Autowired - private SpaceJpaRepository spaceJpaRepository; - - @Autowired - private MemberJpaRepository memberJpaRepository; - - private Member me; - private Member teamMember; - - private Long myMemberId; - private Long teamMemberId; - - private Space myPrivateSpace; - private Space myPublicSpace; - private Space teamMemberSpace; - - @BeforeEach - void setUp() { - setUpData(); - } - - @AfterEach - void tearDown() { - memberJpaRepository.deleteAll(); - spaceJpaRepository.deleteAll(); - } - - @Transactional - @Test - @DisplayName("유저는 자신의 프라이빗 스페이스를 포함한 자신의 모든 스페이스를 조회할 수 있다.") - void findMemberSpacesByQuery_findMySpaces() { - //given - MemberSpacesFindRequest request = new MemberSpacesFindRequest( - PageRequest.of(0, 10), - null, - null, - myMemberId, - myMemberId - ); - - //when - MemberSpacesFindByQueryFacadeResponses responses = memberFacade.findMemberSpacesByQuery(request); - - //then - List content = responses.responses().getContent(); - - assertThat(content.size()).isEqualTo(2); - assertThat(content.get(0).spaceName()).isEqualTo(myPrivateSpace.getSpaceName()); - assertThat(content.get(0).ownerNickName()).isEqualTo(me.getNickname()); - assertThat(content.get(1).spaceName()).isEqualTo(myPublicSpace.getSpaceName()); - assertThat(content.get(1).ownerNickName()).isEqualTo(me.getNickname()); - } - - @Transactional - @Test - @DisplayName("유저는 자신의 프라이빗 스페이스를 포함한 자신의 모든 스페이스를 필터 조회할 수 있다.") - void findMemberSpacesByQuery_filter() { - //given - MemberSpacesFindRequest request = new MemberSpacesFindRequest( - PageRequest.of(0, 10), - null, - Category.KNOWLEDGE_ISSUE_CAREER, - myMemberId, - myMemberId - ); - - //when - MemberSpacesFindByQueryFacadeResponses responses = memberFacade.findMemberSpacesByQuery(request); - - //then - List content = responses.responses().getContent(); - - assertThat(content.size()).isEqualTo(1); - assertThat(content.get(0).spaceName()).isEqualTo(myPublicSpace.getSpaceName()); - assertThat(content.get(0).ownerNickName()).isEqualTo(me.getNickname()); - assertThat(content.get(0).category()).isEqualTo(Category.KNOWLEDGE_ISSUE_CAREER); - } - - @Transactional - @Test - @DisplayName("유저는 다른 유저의 프라이빗 스페이스를 제외한 스페이스를 조회할 수 있다.") - void findMemberSpacesByQuery_findAnotherMemberSpaces() { - //given - MemberSpacesFindRequest request = new MemberSpacesFindRequest( - PageRequest.of(0, 10), - null, - null, - myMemberId + 5, - myMemberId - ); - - //when - MemberSpacesFindByQueryFacadeResponses responses = memberFacade.findMemberSpacesByQuery(request); - - //then - List content = responses.responses().getContent(); - - assertThat(content.size()).isEqualTo(1); - assertThat(content.get(0).spaceName()).isEqualTo(myPublicSpace.getSpaceName()); - assertThat(content.get(0).ownerNickName()).isEqualTo(me.getNickname()); - } - - @Transactional - @Test - @DisplayName("유저는 다른 유저가 만든 프라이빗 스페이스에 스페이스 멤버면 자신의 스페이스 조회에 해당 스페이스가 조회된다.") - void findMemberSpacesByQuery_findPrivateSpacesBySpaceMember() { - //given - MemberSpacesFindRequest request = new MemberSpacesFindRequest( - PageRequest.of(0, 10), - null, - null, - teamMemberId, - teamMemberId - ); - - //when - MemberSpacesFindByQueryFacadeResponses responses = memberFacade.findMemberSpacesByQuery(request); - - //then - List content = responses.responses().getContent(); - - assertThat(content.size()).isEqualTo(2); - assertThat(content.get(0).spaceName()).isEqualTo(myPrivateSpace.getSpaceName()); - assertThat(content.get(0).ownerNickName()).isEqualTo(me.getNickname()); - assertThat(content.get(1).spaceName()).isEqualTo(teamMemberSpace.getSpaceName()); - assertThat(content.get(1).ownerNickName()).isEqualTo(teamMember.getNickname()); - } - - @Test - @DisplayName("유저는 자신의 스페이스중 스페이스 이름을 검색할 수 있다.") - void findMemberSpacesByQuery_searchMySpace() { - //given - MemberSpacesFindRequest request = new MemberSpacesFindRequest( - PageRequest.of(0, 10), - myPrivateSpace.getSpaceName(), - null, - myMemberId, - myMemberId - ); - - //when - MemberSpacesFindByQueryFacadeResponses responses = memberFacade.findMemberSpacesByQuery(request); - - //then - List content = responses.responses().getContent(); - - assertThat(content.size()).isEqualTo(1); - assertThat(content.get(0).spaceName()).isEqualTo(myPrivateSpace.getSpaceName()); - assertThat(content.get(0).ownerNickName()).isEqualTo(me.getNickname()); - } - - private void setUpData() { - me = new Member( - "testSocialId", - Provider.kakao, - com.tenten.linkhub.domain.member.model.Role.USER, - "잠자는 사자의 콧털", - "테스트용 소개글", - "abc@gmail.com", - true, - new ProfileImage("https://testprofileimage", "테스트용 멤버 프로필 이미지"), - new FavoriteCategory(Category.KNOWLEDGE_ISSUE_CAREER) - ); - - teamMember = new Member( - "testSocialId", - Provider.kakao, - com.tenten.linkhub.domain.member.model.Role.USER, - "프롱이", - "프롱이 소개글", - "abc@gmail.com", - true, - new ProfileImage("https://testprofileimage", "테스트용 멤버 프로필 이미지"), - new FavoriteCategory(Category.KNOWLEDGE_ISSUE_CAREER) - ); - - Member member3 = new Member( - "testSocialId", - Provider.kakao, - com.tenten.linkhub.domain.member.model.Role.USER, - "백둥이", - "백둥이 소개글", - "abc@gmail.com", - true, - new ProfileImage("https://testprofileimage", "테스트용 멤버 프로필 이미지"), - new FavoriteCategory(Category.KNOWLEDGE_ISSUE_CAREER) - ); - - myMemberId = memberJpaRepository.save(me).getId(); - teamMemberId = memberJpaRepository.save(teamMember).getId(); - Long setUpMemberId3 = memberJpaRepository.save(member3).getId(); - - Space space = new Space( - myMemberId, - "나의 프라이빗 스페이스", - "나의 프라이빗 스페이스 소개글", - Category.ETC, - new SpaceImage("https://testimage", "테스트 이미지"), - new SpaceMember(myMemberId, Role.OWNER), - false, - true, - true, - true - ); - - Space space2 = new Space( - myMemberId, - "나의 퍼블릭 스페이스", - "나의 퍼블릭 스페이스 소개글", - Category.KNOWLEDGE_ISSUE_CAREER, - new SpaceImage("https://testimage1", "테스트 이미지1"), - new SpaceMember(myMemberId, Role.OWNER), - true, - true, - true, - true - ); - - Space space3 = new Space( - teamMemberId, - "팀 멤버의 스페이스", - "팀 멤버의 소개글", - Category.ETC, - new SpaceImage("https://testimage2", "테스트 이미지2"), - new SpaceMember(teamMemberId, Role.OWNER), - true, - true, - true, - true - ); - - space.addSpaceMember(new SpaceMember(teamMemberId, Role.CAN_VIEW)); - space.addSpaceMember(new SpaceMember(setUpMemberId3, Role.CAN_EDIT)); - - myPrivateSpace = spaceJpaRepository.save(space); - myPublicSpace = spaceJpaRepository.save(space2); - teamMemberSpace = spaceJpaRepository.save(space3); - } -} \ No newline at end of file diff --git a/src/test/java/com/tenten/linkhub/domain/space/facade/SpaceFacadeTest.java b/src/test/java/com/tenten/linkhub/domain/space/facade/SpaceFacadeTest.java index 93e0f6a2..4b0eccef 100644 --- a/src/test/java/com/tenten/linkhub/domain/space/facade/SpaceFacadeTest.java +++ b/src/test/java/com/tenten/linkhub/domain/space/facade/SpaceFacadeTest.java @@ -12,8 +12,6 @@ import com.tenten.linkhub.domain.space.facade.dto.SpaceDetailGetByIdFacadeResponse; import com.tenten.linkhub.domain.space.facade.dto.SpaceMemberDetailInfo; import com.tenten.linkhub.domain.space.facade.dto.SpaceUpdateFacadeRequest; -import com.tenten.linkhub.domain.space.facade.dto.SpacesWithNicknameFindByQueryFacadeResponses; -import com.tenten.linkhub.domain.space.facade.dto.SpacesWithNicknameFindByQueryFacadeResponses.SpacesWithNicknameFindByQueryResponse; import com.tenten.linkhub.domain.space.model.category.Category; import com.tenten.linkhub.domain.space.model.link.Link; import com.tenten.linkhub.domain.space.model.space.Favorite; @@ -27,17 +25,14 @@ import com.tenten.linkhub.domain.space.repository.space.SpaceJpaRepository; import com.tenten.linkhub.domain.space.service.LinkService; import com.tenten.linkhub.domain.space.service.dto.link.LinkCreateRequest; -import com.tenten.linkhub.domain.space.service.dto.space.PublicSpacesFindByQueryRequest; import com.tenten.linkhub.global.aws.dto.ImageInfo; import com.tenten.linkhub.global.exception.PolicyViolationException; import com.tenten.linkhub.global.exception.UnauthorizedAccessException; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.mockito.BDDMockito; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.PageRequest; import org.springframework.mock.web.MockMultipartFile; import org.springframework.transaction.annotation.Transactional; @@ -49,6 +44,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; +@Transactional class SpaceFacadeTest extends IntegrationApplicationTest { @Autowired @@ -83,16 +79,6 @@ void setUp() { setUpData(); } - @AfterEach - void tearDown() { - spaceJpaRepository.deleteAll(); - memberJpaRepository.deleteAll(); - favoriteJpaRepository.deleteAll(); - linkJpaRepository.deleteAll(); - scrapRepository.deleteAll(); - } - - @Transactional @Test @DisplayName("유저는 스페이스를 생성할 수 있다.") void createSpace() { @@ -127,7 +113,6 @@ void createSpace() { assertThat(spaceImage.getName()).isEqualTo("테스트 이미지3"); } - @Transactional @Test @DisplayName("유저는 spaceId를 통해 스페이스의 상세 정보를 조회할 수 있다.") void getSpaceDetailById() { @@ -157,7 +142,6 @@ void getSpaceDetailById() { assertThat(spaceMemberDetailInfos.get(0).profilePath()).isEqualTo("https://testprofileimage"); } - @Transactional @Test @DisplayName("프라이빗 스페이스의 상세 조회 시 권한이 없는 유저는 UnauthorizedAccessException가 발생한다.") void getSpaceDetailById_UnauthorizedAccessException() { @@ -172,7 +156,6 @@ void getSpaceDetailById_UnauthorizedAccessException() { .isInstanceOf(UnauthorizedAccessException.class); } - @Transactional @Test @DisplayName("스페이스 상세 정보 조회 시 스페이스 멤버들의 정보는 정렬되어 반환 받는다.") void getSpaceDetailById_orderTest() { @@ -198,7 +181,6 @@ void getSpaceDetailById_orderTest() { assertThat(spaceMemberDetailInfos.get(2).SpaceMemberRole()).isEqualTo(Role.CAN_VIEW); } - @Transactional @Test @DisplayName("유저는 스페이스 이미지를 포함한 스페이스의 정보들을 변경할 수 있다.") void updateSpace() { @@ -236,7 +218,6 @@ void updateSpace() { assertThat(space.getSpaceImages().get(0).getPath()).isEqualTo("https://updateimage"); } - @Transactional @Test @DisplayName("유저는 스페이스 이미지를 제외한 스페이스의 정보를 변경할 수 있다.") void updateSpace_emptySpaceImage() { @@ -273,7 +254,6 @@ void updateSpace_emptySpaceImage() { assertThat(space.getSpaceImages().get(0).getPath()).isEqualTo("https://testimage1"); } - @Transactional @Test @DisplayName("유저는 스페이스를 삭제할 수 있다.") void deleteSpace() { @@ -286,7 +266,6 @@ void deleteSpace() { assertThat(space.isEmpty()).isEqualTo(true); } - @Transactional @Test @DisplayName("스페이스의 주인이 아닌 유저가 스페이스를 삭제할 경우 UnauthorizedAccessException가 발생한다. ") void deleteSpace_UnauthorizedAccessException() { @@ -295,7 +274,6 @@ void deleteSpace_UnauthorizedAccessException() { .isInstanceOf(UnauthorizedAccessException.class); } - @Transactional @Test @DisplayName("유저는 다른 유저의 스페이스를 복사하여 자신의 새로운 스페이스로 생성할 수 있다.") void scrapAndCreateNewSpace() { @@ -327,7 +305,6 @@ void scrapAndCreateNewSpace() { assertThat(scrapedLinks.get(2).getLinkTags().get(0).getTag().getName()).isEqualTo("의류"); } - @Transactional @Test @DisplayName("유저가 스페이스를 삭제할 때 해당 스페이스가 가져오기한 스페이스면 해당 Scrap 엔티티도 삭제된다.") void deleteSpace_scrapSpace() { @@ -358,7 +335,6 @@ void deleteSpace_scrapSpace() { assertThat(isScrapExists).isFalse(); } - @Transactional @Test @DisplayName("유저가 같은 스페이스를 두번 복사할 경우 PolicyViolationException가 발생한다.") void scrapAndCreateNewSpace_PolicyViolationException() { @@ -383,73 +359,6 @@ void scrapAndCreateNewSpace_PolicyViolationException() { .isInstanceOf(PolicyViolationException.class); } - @Transactional - @Test - @DisplayName("유저는 공개 스페이스를 카테고리 필터링 없이 페이지네이션 조회할 수 있다.") - void findPublicSpacesWithNicknameByQuery_noFilter() { - //given - PublicSpacesFindByQueryRequest request = new PublicSpacesFindByQueryRequest( - PageRequest.of(0, 10), - null, - null - ); - - //when - SpacesWithNicknameFindByQueryFacadeResponses responses = spaceFacade.findPublicSpacesWithNicknameByQuery(request); - - //then - List content = responses.responses().getContent(); - - assertThat(content.size()).isEqualTo(2); - assertThat(content.get(0).spaceName()).isEqualTo("첫번째 스페이스"); - assertThat(content.get(0).ownerNickName()).isEqualTo("프롱이"); - assertThat(content.get(1).spaceName()).isEqualTo("두번째 스페이스"); - assertThat(content.get(1).ownerNickName()).isEqualTo("프롱이"); - } - - @Transactional - @Test - @DisplayName("유저는 공개 스페이스를 카테고리 필터조건과 함께 페이지네이션 조회할 수 있다.") - void findPublicSpacesWithNicknameByQuery_filter() { - //given - PublicSpacesFindByQueryRequest request = new PublicSpacesFindByQueryRequest( - PageRequest.of(0, 10), - null, - Category.KNOWLEDGE_ISSUE_CAREER - ); - - //when - SpacesWithNicknameFindByQueryFacadeResponses responses = spaceFacade.findPublicSpacesWithNicknameByQuery(request); - - //then - List content = responses.responses().getContent(); - - assertThat(content.size()).isEqualTo(1); - assertThat(content.get(0).spaceName()).isEqualTo("첫번째 스페이스"); - assertThat(content.get(0).ownerNickName()).isEqualTo("프롱이"); - } - - @Test - @DisplayName("유저는 공개 스페이스의 스페이스 네임을 검색할 수 있다.") - void findPublicSpacesWithNicknameByQuery_search() { - //given - PublicSpacesFindByQueryRequest request = new PublicSpacesFindByQueryRequest( - PageRequest.of(0, 10), - "두번째 스페이스", - null - ); - - //when - SpacesWithNicknameFindByQueryFacadeResponses responses = spaceFacade.findPublicSpacesWithNicknameByQuery(request); - - //then - List content = responses.responses().getContent(); - - assertThat(content.size()).isEqualTo(1); - assertThat(content.get(0).spaceName()).isEqualTo("두번째 스페이스"); - assertThat(content.get(0).ownerNickName()).isEqualTo("프롱이"); - } - private void setUpData() { Member member1 = new Member( "testSocialId", @@ -517,27 +426,14 @@ private void setUpData() { true ); - Space space3 = new Space( - anotherMemberId, - "두번째 스페이스", - "두번째 스페이스 소개글", - Category.ETC, - new SpaceImage("https://testimage2", "테스트 이미지2"), - new SpaceMember(anotherMemberId, Role.OWNER), - true, - true, - true, - true - ); - space.addSpaceMember(new SpaceMember(anotherMemberId, Role.CAN_VIEW)); space.addSpaceMember(new SpaceMember(setUpMemberId3, Role.CAN_EDIT)); - mySpaceId = spaceJpaRepository.save(space).getId(); + Space savedSpace = spaceJpaRepository.save(space); + mySpaceId = savedSpace.getId(); anotherSpaceId = spaceJpaRepository.save(space2).getId(); - spaceJpaRepository.save(space3).getId(); - Favorite favorite = new Favorite(space, myMemberId); + Favorite favorite = new Favorite(savedSpace, myMemberId); favoriteJpaRepository.save(favorite); linkService.createLink( diff --git a/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java b/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java index 707724cc..b0c57019 100644 --- a/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java +++ b/src/test/java/com/tenten/linkhub/domain/space/service/DefaultSpaceServiceTest.java @@ -91,6 +91,7 @@ void findSpacesByQuery() { assertThat(content.get(0).description()).isEqualTo("첫번째 스페이스 소개글"); assertThat(content.get(0).category()).isEqualTo(Category.KNOWLEDGE_ISSUE_CAREER); assertThat(content.get(0).spaceImagePath()).isEqualTo("https://testimage1"); + assertThat(content.get(0).ownerNickName()).isEqualTo("잠자는 사자의 콧털"); } @Test @@ -109,6 +110,7 @@ void findMemberSpacesByQuery_emptyKeyWord_emptyFilter() { assertThat(content.size()).isEqualTo(2); assertThat(content.get(1).spaceName()).isEqualTo("세번째 스페이스"); assertThat(content.get(1).spaceImagePath()).isEqualTo("https://testimage3"); + assertThat(content.get(1).ownerNickName()).isEqualTo("백둥이"); } @Test @@ -129,7 +131,9 @@ void findMemberSpacesByQuery_emptyKeyWord_emptyFilter_findMySpaces() { assertThat(content.get(0).description()).isEqualTo("첫번째 스페이스 소개글"); assertThat(content.get(0).category()).isEqualTo(Category.KNOWLEDGE_ISSUE_CAREER); assertThat(content.get(0).spaceImagePath()).isEqualTo("https://testimage1"); + assertThat(content.get(0).ownerNickName()).isEqualTo("잠자는 사자의 콧털"); assertThat(content.get(1).spaceName()).isEqualTo("두번째 스페이스"); + assertThat(content.get(1).ownerNickName()).isEqualTo("잠자는 사자의 콧털"); } @Test @@ -148,6 +152,7 @@ void findMemberSpacesByQuery_keyWord_emptyFilter_findMySpaces() { assertThat(content.size()).isEqualTo(1); assertThat(content.get(0).spaceName()).isEqualTo("두번째 스페이스"); assertThat(content.get(0).spaceImagePath()).isEqualTo("https://testimage2"); + assertThat(content.get(0).ownerNickName()).isEqualTo("잠자는 사자의 콧털"); } @Test @@ -166,6 +171,7 @@ void findMemberSpacesByQuery_emptyKeyWord_filter_findMySpaces() { assertThat(content.size()).isEqualTo(1); assertThat(content.get(0).spaceName()).isEqualTo("두번째 스페이스"); assertThat(content.get(0).spaceImagePath()).isEqualTo("https://testimage2"); + assertThat(content.get(0).ownerNickName()).isEqualTo("잠자는 사자의 콧털"); } @Transactional