From 4bc94c8d740025bf5f46062030fc1f9df2330f20 Mon Sep 17 00:00:00 2001 From: toychip Date: Fri, 28 Feb 2025 02:00:42 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[BE]=20feat:=20Direct,=20DirectMember=20Ent?= =?UTF-8?q?ity=20BaseEntity=20=EC=83=81=EC=86=8D=20(#90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/asyncgate/guild_server/domain/Direct.java | 5 ++++- .../asyncgate/guild_server/domain/DirectMember.java | 10 ++++++++++ .../asyncgate/guild_server/entity/DirectEntity.java | 2 +- .../guild_server/entity/DirectMemberEntity.java | 6 ++++-- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/domain/Direct.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/domain/Direct.java index c95fef57..f43ba2e6 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/domain/Direct.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/domain/Direct.java @@ -3,6 +3,7 @@ import lombok.Builder; import lombok.Getter; +import java.time.LocalDateTime; import java.util.List; import java.util.UUID; @@ -10,10 +11,12 @@ public class Direct { private final String id; + private LocalDateTime createdDate; @Builder - private Direct(String id, String name) { + private Direct(String id, LocalDateTime createdDate) { this.id = id; + this.createdDate = createdDate; } public static Direct create() { diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/domain/DirectMember.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/domain/DirectMember.java index 4e16d5dc..21a50ee2 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/domain/DirectMember.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/domain/DirectMember.java @@ -3,6 +3,7 @@ import lombok.Builder; import lombok.Getter; +import java.time.LocalDateTime; import java.util.UUID; @Getter @@ -11,8 +12,17 @@ public class DirectMember { private final String directId; private final String memberId; private final String memberName; + private LocalDateTime createdDate; @Builder + private DirectMember(String id, String directId, String memberId, String memberName, LocalDateTime createdDate) { + this.id = id; + this.directId = directId; + this.memberId = memberId; + this.memberName = memberName; + this.createdDate = createdDate; + } + private DirectMember(String id, String directId, String memberId, String memberName) { this.id = id; this.directId = directId; diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/entity/DirectEntity.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/entity/DirectEntity.java index 6d79674e..b267bdb3 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/entity/DirectEntity.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/entity/DirectEntity.java @@ -12,7 +12,7 @@ @Entity @Table(name = "direct") @NoArgsConstructor(access = AccessLevel.PROTECTED) -public class DirectEntity { +public class DirectEntity extends BaseEntity { @Id private String id; diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/entity/DirectMemberEntity.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/entity/DirectMemberEntity.java index 44cfcc3b..c6b9601f 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/entity/DirectMemberEntity.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/entity/DirectMemberEntity.java @@ -12,16 +12,18 @@ @Entity @Table(name = "direct_member") @NoArgsConstructor(access = AccessLevel.PROTECTED) -public class DirectMemberEntity { +public class DirectMemberEntity extends BaseEntity { @Id private String id; + private String directId; private String memberId; private String memberName; @Builder - private DirectMemberEntity(String id, String memberId, String memberName) { + private DirectMemberEntity(String id, String directId, String memberId, String memberName) { this.id = id; + this.directId = directId; this.memberId = memberId; this.memberName = memberName; } From 47d7b7173cb8575471db2887110d4f3f8a617295 Mon Sep 17 00:00:00 2001 From: toychip Date: Fri, 28 Feb 2025 02:01:30 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[BE]=20fix:=20guild-server-local=20jpa=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20application-local.yml=EB=A1=9C=20=EC=9C=84?= =?UTF-8?q?=EC=9E=84=20(#90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/guild-server-local.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/config/guild-server-local.yml b/config/guild-server-local.yml index d1b3c1ac..7de62f28 100644 --- a/config/guild-server-local.yml +++ b/config/guild-server-local.yml @@ -18,9 +18,6 @@ spring: hikari: data-source-properties: serverTimezone: Asia/Seoul - jpa: - hibernate: - ddl-auto: none cloud: aws: From 8f4e2ae6882bf7323b3907486429c495526656c5 Mon Sep 17 00:00:00 2001 From: toychip Date: Fri, 28 Feb 2025 02:06:01 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[BE]=20feat:=20Direct=20=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=20=EC=A1=B0=ED=9A=8C=20API=20(#90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DirectController.java | 16 ++++-- .../dto/response/DirectResponse.java | 2 +- .../dto/response/DirectResponses.java | 10 ++++ .../DirectMemberQueryDslRepository.java | 29 +++++++++++ .../DirectMemberRepositoryImpl.java | 2 +- .../repository/DirectRepository.java | 5 ++ .../repository/DirectRepositoryImpl.java | 15 +++++- .../guild_server/service/DirectService.java | 3 ++ .../service/DirectServiceImpl.java | 52 ++++++++++++++++++- .../support/utility/DomainUtil.java | 3 ++ 10 files changed, 129 insertions(+), 8 deletions(-) create mode 100644 src/backend/guild-server/src/main/java/com/asyncgate/guild_server/dto/response/DirectResponses.java create mode 100644 src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberQueryDslRepository.java diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/controller/DirectController.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/controller/DirectController.java index af21209c..fdaad2fd 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/controller/DirectController.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/controller/DirectController.java @@ -2,14 +2,12 @@ import com.asyncgate.guild_server.dto.request.DirectChannelCreateRequest; import com.asyncgate.guild_server.dto.response.DirectResponse; +import com.asyncgate.guild_server.dto.response.DirectResponses; import com.asyncgate.guild_server.service.DirectService; import com.asyncgate.guild_server.support.response.SuccessResponse; import lombok.RequiredArgsConstructor; import org.springframework.security.core.annotation.AuthenticationPrincipal; -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.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor @@ -27,4 +25,14 @@ public SuccessResponse create( directService.create(currentUserId, request) ); } + + @GetMapping + public SuccessResponse get( + final @AuthenticationPrincipal String currentUserId + ) { + return SuccessResponse.ok( + directService.getDirectList(currentUserId) + ); + } + } diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/dto/response/DirectResponse.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/dto/response/DirectResponse.java index fbe10c42..a2d877b0 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/dto/response/DirectResponse.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/dto/response/DirectResponse.java @@ -2,7 +2,7 @@ import com.asyncgate.guild_server.client.UserClientInfoResponses; -public record DirectResponse(String directId,UserClientInfoResponses members) { +public record DirectResponse(String directId, UserClientInfoResponses members) { public static DirectResponse of(final String directId, final UserClientInfoResponses members) { return new DirectResponse(directId, members); } diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/dto/response/DirectResponses.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/dto/response/DirectResponses.java new file mode 100644 index 00000000..d36ff4b1 --- /dev/null +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/dto/response/DirectResponses.java @@ -0,0 +1,10 @@ +package com.asyncgate.guild_server.dto.response; + +import java.util.List; + +public record DirectResponses(List directResponses) { + + public static DirectResponses from(final List directResponses) { + return new DirectResponses(directResponses); + } +} diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberQueryDslRepository.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberQueryDslRepository.java new file mode 100644 index 00000000..ec64fac8 --- /dev/null +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberQueryDslRepository.java @@ -0,0 +1,29 @@ +package com.asyncgate.guild_server.repository; + +import com.asyncgate.guild_server.entity.DirectMemberEntity; +import com.asyncgate.guild_server.entity.QDirectMemberEntity; +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +@RequiredArgsConstructor +public class DirectMemberQueryDslRepository { + + private final JPAQueryFactory queryFactory; + private final QDirectMemberEntity directMemberEntity = QDirectMemberEntity.directMemberEntity; + + public List getDirectMessageList(final String currentUserId) { + return queryFactory + .select(directMemberEntity) + .from(directMemberEntity) + .where( + directMemberEntity.memberId.eq(currentUserId), + directMemberEntity.deleted.isFalse() + ) + .fetch(); + + } +} diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepositoryImpl.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepositoryImpl.java index 81e00ca1..ab15659d 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepositoryImpl.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepositoryImpl.java @@ -14,7 +14,7 @@ public class DirectMemberRepositoryImpl implements DirectMemberRepository { private final DirectMemberJpaRepository jpaRepository; @Override - public void saveAll(List directMembers) { + public void saveAll(final List directMembers) { jpaRepository.saveAll( directMembers.stream() .map(DomainUtil.DirectMemberMapper::toEntity) diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepository.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepository.java index eb6d48f0..e4bd2f8f 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepository.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepository.java @@ -1,7 +1,12 @@ package com.asyncgate.guild_server.repository; import com.asyncgate.guild_server.domain.Direct; +import com.asyncgate.guild_server.domain.DirectMember; + +import java.util.List; public interface DirectRepository { void save(Direct direct); + + List getDirectMessageList(String currentUserId); } diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepositoryImpl.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepositoryImpl.java index b4d402c4..4ddc4c94 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepositoryImpl.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepositoryImpl.java @@ -1,19 +1,32 @@ package com.asyncgate.guild_server.repository; import com.asyncgate.guild_server.domain.Direct; +import com.asyncgate.guild_server.domain.DirectMember; import com.asyncgate.guild_server.support.utility.DomainUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository @RequiredArgsConstructor public class DirectRepositoryImpl implements DirectRepository { private final DirectJpaRepository jpaRepository; + private final DirectMemberQueryDslRepository queryDslRepository; @Override - public void save(Direct direct) { + public void save(final Direct direct) { jpaRepository.save( DomainUtil.DirectMapper.toEntity(direct) ); } + + @Override + public List getDirectMessageList(final String currentUserId) { + return queryDslRepository.getDirectMessageList(currentUserId).stream() + .map( + DomainUtil.DirectMemberMapper::toDomain + ) + .toList(); + } } diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectService.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectService.java index fdd951bb..9c9f0629 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectService.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectService.java @@ -2,7 +2,10 @@ import com.asyncgate.guild_server.dto.request.DirectChannelCreateRequest; import com.asyncgate.guild_server.dto.response.DirectResponse; +import com.asyncgate.guild_server.dto.response.DirectResponses; public interface DirectService { DirectResponse create(String currentUserId, DirectChannelCreateRequest request); + + DirectResponses getDirectList(String currentUserId); } diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectServiceImpl.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectServiceImpl.java index fe2ba512..2f090b56 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectServiceImpl.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectServiceImpl.java @@ -2,17 +2,21 @@ import com.asyncgate.guild_server.client.UserClient; import com.asyncgate.guild_server.client.UserClientInfoResponses; +import com.asyncgate.guild_server.client.UserClientInfoResponses.UserClientInfoResponse; import com.asyncgate.guild_server.domain.Direct; import com.asyncgate.guild_server.domain.DirectMember; import com.asyncgate.guild_server.dto.request.DirectChannelCreateRequest; import com.asyncgate.guild_server.dto.response.DirectResponse; +import com.asyncgate.guild_server.dto.response.DirectResponses; import com.asyncgate.guild_server.repository.DirectMemberRepository; import com.asyncgate.guild_server.repository.DirectRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -46,4 +50,50 @@ public DirectResponse create(final String currentUserId, final DirectChannelCrea return DirectResponse.of(direct.getId(), usersInfo); } + + @Override + public DirectResponses getDirectList(final String currentUserId) { + // 1. 현재 사용자의 다이렉트 메시지 목록 조회 + List directMembers = directRepository.getDirectMessageList(currentUserId); + + // 2. 다이렉트 ID별로 DirectMember 그룹화 + Map> directGroups = directMembers.stream() + .collect(Collectors.groupingBy(DirectMember::getDirectId)); + + // 3. 모든 그룹에서 고유한 사용자 ID 수집 (한 번의 배치 API 호출을 위함) + Set uniqueMemberIds = directMembers.stream() + .map(DirectMember::getMemberId) + .collect(Collectors.toSet()); + + // 4. 배치 API 호출로 모든 사용자 프로필 정보 조회 + UserClientInfoResponses userInfos = userClient + .getUsersInfo(new ArrayList<>(uniqueMemberIds)) + .getResult(); + + // 5. 사용자 ID별 프로필 정보를 빠르게 조회할 수 있도록 Map으로 변환 + Map userInfoMap = userInfos.responses().stream() + .collect( + Collectors.toMap( + UserClientInfoResponse::userId, + Function.identity() + ) + ); + + // 6. 각 다이렉트 그룹별로 응답 객체를 생성 + List responses = directGroups.entrySet().stream() + .map(entry -> { + String directId = entry.getKey(); + List membersInGroup = entry.getValue(); + + // 해당 그룹에 속한 멤버들의 프로필 정보를 매핑 (null은 필터링) + List memberProfiles = membersInGroup.stream() + .map(directMember -> userInfoMap.get(directMember.getMemberId())) + .filter(Objects::nonNull) + .toList(); + + return DirectResponse.of(directId, new UserClientInfoResponses(memberProfiles)); + }).toList(); + return DirectResponses.from(responses); + } + } diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/support/utility/DomainUtil.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/support/utility/DomainUtil.java index 24c6e27a..a03ce15a 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/support/utility/DomainUtil.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/support/utility/DomainUtil.java @@ -101,6 +101,7 @@ public static DirectEntity toEntity(final Direct domain) { public static Direct toDomain(final DirectEntity entity) { return Direct.builder() .id(entity.getId()) + .createdDate(entity.getCreatedDate()) .build(); } } @@ -109,6 +110,7 @@ public static class DirectMemberMapper { public static DirectMemberEntity toEntity(final DirectMember directMember) { return DirectMemberEntity.builder() .id(directMember.getId()) + .directId(directMember.getDirectId()) .memberId(directMember.getMemberId()) .memberName(directMember.getMemberName()) .build(); @@ -119,6 +121,7 @@ public static DirectMember toDomain(final DirectMemberEntity entity) { .id(entity.getId()) .memberId(entity.getMemberId()) .memberName(entity.getMemberName()) + .createdDate(entity.getCreatedDate()) .build(); } } From 79a471f721ccbc1ecae98431c25f8fef378067d2 Mon Sep 17 00:00:00 2001 From: toychip Date: Fri, 28 Feb 2025 02:12:33 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[BE]=20refactor:=20DirectMemberQueryDslRepo?= =?UTF-8?q?sitory=20=EC=9D=98=EC=A1=B4=EC=84=B1=20DirectMemberRepository?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=8F=99=20=20(#90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/DirectMemberRepository.java | 2 ++ .../repository/DirectMemberRepositoryImpl.java | 10 ++++++++++ .../guild_server/repository/DirectRepository.java | 5 ----- .../repository/DirectRepositoryImpl.java | 13 ------------- .../guild_server/service/DirectServiceImpl.java | 2 +- 5 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepository.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepository.java index d808003d..e7b09e4b 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepository.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepository.java @@ -6,4 +6,6 @@ public interface DirectMemberRepository { void saveAll(List directMembers); + + List getDirectMessageList(String currentUserId); } diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepositoryImpl.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepositoryImpl.java index ab15659d..620b4ad3 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepositoryImpl.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberRepositoryImpl.java @@ -12,6 +12,7 @@ public class DirectMemberRepositoryImpl implements DirectMemberRepository { private final DirectMemberJpaRepository jpaRepository; + private final DirectMemberQueryDslRepository queryDslRepository; @Override public void saveAll(final List directMembers) { @@ -21,4 +22,13 @@ public void saveAll(final List directMembers) { .toList() ); } + + @Override + public List getDirectMessageList(final String currentUserId) { + return queryDslRepository.getDirectMessageList(currentUserId).stream() + .map( + DomainUtil.DirectMemberMapper::toDomain + ) + .toList(); + } } diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepository.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepository.java index e4bd2f8f..eb6d48f0 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepository.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepository.java @@ -1,12 +1,7 @@ package com.asyncgate.guild_server.repository; import com.asyncgate.guild_server.domain.Direct; -import com.asyncgate.guild_server.domain.DirectMember; - -import java.util.List; public interface DirectRepository { void save(Direct direct); - - List getDirectMessageList(String currentUserId); } diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepositoryImpl.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepositoryImpl.java index 4ddc4c94..86c60a4a 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepositoryImpl.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectRepositoryImpl.java @@ -1,18 +1,14 @@ package com.asyncgate.guild_server.repository; import com.asyncgate.guild_server.domain.Direct; -import com.asyncgate.guild_server.domain.DirectMember; import com.asyncgate.guild_server.support.utility.DomainUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; -import java.util.List; - @Repository @RequiredArgsConstructor public class DirectRepositoryImpl implements DirectRepository { private final DirectJpaRepository jpaRepository; - private final DirectMemberQueryDslRepository queryDslRepository; @Override public void save(final Direct direct) { @@ -20,13 +16,4 @@ public void save(final Direct direct) { DomainUtil.DirectMapper.toEntity(direct) ); } - - @Override - public List getDirectMessageList(final String currentUserId) { - return queryDslRepository.getDirectMessageList(currentUserId).stream() - .map( - DomainUtil.DirectMemberMapper::toDomain - ) - .toList(); - } } diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectServiceImpl.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectServiceImpl.java index 2f090b56..6d20f9a0 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectServiceImpl.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/service/DirectServiceImpl.java @@ -54,7 +54,7 @@ public DirectResponse create(final String currentUserId, final DirectChannelCrea @Override public DirectResponses getDirectList(final String currentUserId) { // 1. 현재 사용자의 다이렉트 메시지 목록 조회 - List directMembers = directRepository.getDirectMessageList(currentUserId); + List directMembers = directMemberRepository.getDirectMessageList(currentUserId); // 2. 다이렉트 ID별로 DirectMember 그룹화 Map> directGroups = directMembers.stream()