Skip to content

Commit 771fdad

Browse files
committed
feat: 번개 조회에 채팅방 아이디 추가
1 parent c357323 commit 771fdad

File tree

10 files changed

+58
-10
lines changed

10 files changed

+58
-10
lines changed

src/main/java/com/codeit/side/chat/adapter/out/persistence/ChatRoomRepositoryImpl.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,19 @@ public ChatRoom getBy(Long id) {
3939
.orElseThrow(ChatRoomNotFoundException::new)
4040
.toDomain();
4141
}
42+
43+
@Override
44+
public ChatRoom getByLighteningId(Long lighteningId) {
45+
return chatRoomJpaRepository.findByLighteningId(lighteningId)
46+
.orElseThrow(ChatRoomNotFoundException::new)
47+
.toDomain();
48+
}
49+
50+
@Override
51+
public List<ChatRoom> findAllByLighteningIds(List<Long> lighteningIds) {
52+
return chatRoomJpaRepository.findAllByLighteningIdIn(lighteningIds)
53+
.stream()
54+
.map(ChatRoomEntity::toDomain)
55+
.toList();
56+
}
4257
}

src/main/java/com/codeit/side/chat/adapter/out/persistence/entity/ChatRoomEntity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class ChatRoomEntity extends BaseEntity {
1818

1919
private String name;
2020

21+
@Column(unique = true)
2122
private Long lighteningId;
2223

2324
private Long hostId;

src/main/java/com/codeit/side/chat/adapter/out/persistence/jpa/ChatRoomJpaRepository.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
import org.springframework.data.jpa.repository.JpaRepository;
55

66
import java.util.List;
7+
import java.util.Optional;
78

89
public interface ChatRoomJpaRepository extends JpaRepository<ChatRoomEntity, Long> {
9-
List<ChatRoomEntity> findByHostIdOrderByCreatedAtDesc(Long hostId);
10+
Optional<ChatRoomEntity> findByLighteningId(Long lighteningId);
11+
12+
List<ChatRoomEntity> findAllByLighteningIdIn(List<Long> lighteningIds);
1013
}

src/main/java/com/codeit/side/chat/application/port/in/ChatMessageUseCase.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.codeit.side.chat.domain.ChatMessage;
44
import com.codeit.side.chat.domain.ChatMessages;
5+
import com.codeit.side.chat.domain.ChatRoom;
56
import com.codeit.side.chat.domain.ChatRoomInfo;
67

78
import java.util.List;
@@ -18,4 +19,8 @@ public interface ChatMessageUseCase {
1819
ChatMessages findAllMessagesByRoomId(Long roomId, String email, Long offset, Integer size);
1920

2021
void joinChatRoom(Long id, String email);
22+
23+
ChatRoom getChatRoomByLighteningId(Long lighteningId);
24+
25+
List<ChatRoom> findAllChatRoomsByLighteningIds(List<Long> lighteningIds);
2126
}

src/main/java/com/codeit/side/chat/application/port/out/ChatRoomRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,8 @@ public interface ChatRoomRepository {
1111
List<ChatRoom> findAllByUserId(Long id);
1212

1313
ChatRoom getBy(Long id);
14+
15+
ChatRoom getByLighteningId(Long lighteningId);
16+
17+
List<ChatRoom> findAllByLighteningIds(List<Long> lighteningIds);
1418
}

src/main/java/com/codeit/side/chat/application/service/ChatMessageService.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,16 @@ public void joinChatRoom(Long id, String email) {
9292
chatMemberRepository.join(id, user.getId());
9393
}
9494

95+
@Override
96+
public ChatRoom getChatRoomByLighteningId(Long lighteningId) {
97+
return chatRoomRepository.getByLighteningId(lighteningId);
98+
}
99+
100+
@Override
101+
public List<ChatRoom> findAllChatRoomsByLighteningIds(List<Long> lighteningIds) {
102+
return chatRoomRepository.findAllByLighteningIds(lighteningIds);
103+
}
104+
95105
private List<ChatRoomInfo> createChatRoomInfos(List<ChatRoom> chatRooms, Map<Long, ChatMessage> allLastMessageByIds, Map<Long, Integer> idToMemberSize) {
96106
return chatRooms.stream()
97107
.map(chatRoom -> createChatRoomInfo(chatRoom, allLastMessageByIds.get(chatRoom.getId()), idToMemberSize.get(chatRoom.getId())))

src/main/java/com/codeit/side/lightening/adapter/in/web/ReviewController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public ResponseEntity<ReviewResponses> getReviews(@PathVariable Long id, @Reques
3939

4040
@GetMapping("/reviews/all")
4141
public ResponseEntity<ReviewInfoResponses> getReviews(
42-
@RequestParam String category,
42+
@RequestParam(required = false) String category,
4343
@RequestParam(required = false) String city,
4444
@RequestParam(required = false) String town,
4545
@RequestParam(required = false)LocalDateTime targetAt,

src/main/java/com/codeit/side/lightening/adapter/in/web/response/LighteningResponse.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public record LighteningResponse(
2929
int participantCount,
3030
boolean isConfirmed,
3131
boolean isCompleted,
32+
Long chatRoomId,
3233
List<LighteningMemberResponse> participants
3334
) {
3435
public static LighteningResponse from(String email, LighteningInfo lighteningInfo) {
@@ -60,6 +61,7 @@ public static LighteningResponse from(String email, LighteningInfo lighteningInf
6061
lighteningInfo.getLighteningMembers().size(),
6162
lighteningMemberResponse.size() >= lightening.getMinCapacity(),
6263
lighteningMemberResponse.size() >= lightening.getCapacity(),
64+
lighteningInfo.getChatRoom().getId(),
6365
lighteningMemberResponse
6466
);
6567
}

src/main/java/com/codeit/side/lightening/application/service/LighteningService.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.codeit.side.lightening.application.service;
22

33
import com.codeit.side.chat.application.port.in.ChatMessageUseCase;
4+
import com.codeit.side.chat.domain.ChatRoom;
45
import com.codeit.side.common.adapter.exception.IllegalRequestException;
56
import com.codeit.side.common.adapter.exception.LighteningAlreadyFullException;
67
import com.codeit.side.common.adapter.exception.UserAlreadyJoinedException;
@@ -70,7 +71,8 @@ public LighteningInfo getById(String email, Long id) {
7071
Lightening lightening = lighteningReadRepository.getById(id);
7172
List<LighteningMember> lighteningMember = lighteningReadRepository.findAllMembersBy(lightening.getId());
7273
boolean isLighteningLike = lighteningReadRepository.findLighteningLikeBy(email, lightening.getId());
73-
return createLighteningInfo(lightening, lighteningMember, isLighteningLike);
74+
ChatRoom chatRoom = chatMessageUseCase.getChatRoomByLighteningId(lightening.getId());
75+
return createLighteningInfo(lightening, lighteningMember, chatRoom, isLighteningLike);
7476
}
7577

7678
@Override
@@ -81,7 +83,8 @@ public List<LighteningInfo> findAllBy(String email, LighteningCondition lighteni
8183
.toList();
8284
List<LighteningMember> lighteningMembers = lighteningReadRepository.findAllMembersBy(lighteningIds);
8385
List<LighteningLike> lighteningLikes = lighteningReadRepository.findLighteningLikesBy(email, lighteningIds);
84-
return createLighteningInfos(lightenings, lighteningMembers, lighteningLikes);
86+
List<ChatRoom> chatRoomIds = chatMessageUseCase.findAllChatRoomsByLighteningIds(lighteningIds);
87+
return createLighteningInfos(lightenings, lighteningMembers, chatRoomIds, lighteningLikes);
8588
}
8689

8790
@Override
@@ -104,19 +107,21 @@ public void delete(String email, Long id) {
104107
lighteningCommandRepository.delete(id);
105108
}
106109

107-
private List<LighteningInfo> createLighteningInfos(List<Lightening> lightenings, List<LighteningMember> lighteningMembers, List<LighteningLike> lighteningLikes) {
110+
private List<LighteningInfo> createLighteningInfos(List<Lightening> lightenings, List<LighteningMember> lighteningMembers, List<ChatRoom> chatRooms, List<LighteningLike> lighteningLikes) {
108111
Map<Long, List<LighteningMember>> idToLighteningMembers = lighteningMembers.stream()
109112
.collect(Collectors.groupingBy(LighteningMember::getLighteningId));
110-
Map<Long, LighteningLike> idToLighteningLikes = lighteningLikes.stream()
113+
Map<Long, LighteningLike> idToLighteningLike = lighteningLikes.stream()
111114
.collect(Collectors.toMap(LighteningLike::getLighteningId, Function.identity()));
115+
Map<Long, ChatRoom> idToChatRoom = chatRooms.stream()
116+
.collect(Collectors.toMap(ChatRoom::getLighteningId, Function.identity()));
112117

113118
return lightenings.stream()
114-
.map(lightening -> createLighteningInfo(lightening, idToLighteningMembers.getOrDefault(lightening.getId(), List.of()), idToLighteningLikes.containsKey(lightening.getId())))
119+
.map(lightening -> createLighteningInfo(lightening, idToLighteningMembers.getOrDefault(lightening.getId(), List.of()), idToChatRoom.get(lightening.getId()), idToLighteningLike.containsKey(lightening.getId())))
115120
.toList();
116121
}
117122

118-
private LighteningInfo createLighteningInfo(Lightening lightening, List<LighteningMember> lighteningMember, boolean isLighteningLike) {
119-
return LighteningInfo.of(lightening, lighteningMember, isLighteningLike);
123+
private LighteningInfo createLighteningInfo(Lightening lightening, List<LighteningMember> lighteningMember, ChatRoom chatRoom, boolean isLighteningLike) {
124+
return LighteningInfo.of(lightening, lighteningMember, chatRoom, isLighteningLike);
120125
}
121126

122127
private void validateLightening(String email, Lightening lightening) {

src/main/java/com/codeit/side/lightening/domain/LighteningInfo.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.codeit.side.lightening.domain;
22

3+
import com.codeit.side.chat.domain.ChatRoom;
34
import lombok.AccessLevel;
45
import lombok.Getter;
56
import lombok.RequiredArgsConstructor;
@@ -11,13 +12,15 @@
1112
public class LighteningInfo {
1213
private final Lightening lightening;
1314
private final List<LighteningMember> lighteningMembers;
15+
private final ChatRoom chatRoom;
1416
private final boolean isLiked;
1517

1618
public static LighteningInfo of(
1719
Lightening lightening,
1820
List<LighteningMember> lighteningMembers,
21+
ChatRoom chatRoom,
1922
boolean isLiked
2023
){
21-
return new LighteningInfo(lightening, lighteningMembers, isLiked);
24+
return new LighteningInfo(lightening, lighteningMembers, chatRoom, isLiked);
2225
}
2326
}

0 commit comments

Comments
 (0)