Skip to content

Commit 8bc646e

Browse files
authored
deploy 1.19
배포 1.19
2 parents 46b81b6 + 4273113 commit 8bc646e

File tree

4 files changed

+69
-41
lines changed

4 files changed

+69
-41
lines changed

src/main/java/com/day_walk/backend/domain/course_like/bean/GetCourseLikeEntityBean.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
import com.day_walk.backend.domain.course_like.data.out.CourseLikeEvent;
77
import com.day_walk.backend.domain.course_like.repository.CourseLikeRedisRepository;
88
import com.day_walk.backend.domain.course_like.repository.CourseLikeRepository;
9+
import com.day_walk.backend.domain.place_like.data.PlaceLikeEntity;
910
import lombok.RequiredArgsConstructor;
1011
import org.springframework.stereotype.Component;
1112

1213
import java.util.*;
14+
import java.util.stream.Collectors;
1315
import java.util.stream.Stream;
1416

1517
@RequiredArgsConstructor
@@ -36,19 +38,28 @@ public CourseLikeEntity exec(CourseLikeDto courseLikeDto) {
3638
}
3739

3840
public List<CourseLikeEntity> exec(UUID userId) {
39-
List<UUID> redisCourseIds = courseLikeRedisRepository.findAllLikedCourseIds(userId);
41+
Map<UUID, Boolean> redisLikeStates = courseLikeRedisRepository.findAllCourseLikeStates(userId);
4042

41-
List<CourseLikeEntity> redisLikes = redisCourseIds.stream()
42-
.map(courseId -> new CourseLikeEntity(UUID.randomUUID(), userId, courseId))
43+
List<CourseLikeEntity> redisLikes = redisLikeStates.entrySet().stream()
44+
.filter(Map.Entry::getValue)
45+
.map(entry -> new CourseLikeEntity(UUID.randomUUID(), userId, entry.getKey()))
4346
.toList();
4447

4548
List<CourseLikeEntity> mysqlLikes = courseLikeRepository.findAllByUserId(userId);
4649

50+
Set<UUID> redisFalseIds = redisLikeStates.entrySet().stream()
51+
.filter(entry -> !entry.getValue())
52+
.map(Map.Entry::getKey)
53+
.collect(Collectors.toSet());
54+
4755
Set<String> uniqueKeys = new HashSet<>();
4856
List<CourseLikeEntity> merged = new ArrayList<>();
4957

5058
for (CourseLikeEntity like : Stream.concat(mysqlLikes.stream(), redisLikes.stream()).toList()) {
51-
String key = like.getUserId().toString() + "-" + like.getCourseId().toString();
59+
if (redisFalseIds.contains(like.getCourseId())) {
60+
continue;
61+
}
62+
String key = like.getUserId() + "-" + like.getCourseId();
5263
if (uniqueKeys.add(key)) {
5364
merged.add(like);
5465
}

src/main/java/com/day_walk/backend/domain/course_like/repository/CourseLikeRedisRepository.java

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
import org.springframework.stereotype.Repository;
66

77
import java.time.Duration;
8-
import java.util.List;
9-
import java.util.Set;
10-
import java.util.UUID;
8+
import java.util.*;
119

1210
@Repository
1311
@RequiredArgsConstructor
@@ -50,23 +48,29 @@ public List<UUID> findAllLikedUserIds(UUID courseId) {
5048
.toList();
5149
}
5250

53-
public List<UUID> findAllLikedCourseIds(UUID userId) {
51+
public Map<UUID, Boolean> findAllCourseLikeStates(UUID userId) {
5452
String pattern = "course-like:" + userId + ":*";
5553
Set<String> keys = redisTemplate.keys(pattern);
5654

57-
if (keys == null) {
58-
return List.of();
55+
if (keys == null || keys.isEmpty()) {
56+
return Collections.emptyMap();
5957
}
6058

61-
return keys.stream()
62-
.filter(key -> {
63-
Boolean value = (Boolean) redisTemplate.opsForValue().get(key);
64-
return Boolean.TRUE.equals(value);
65-
})
66-
.map(key -> {
67-
String[] parts = key.split(":");
68-
return UUID.fromString(parts[2]);
69-
})
70-
.toList();
59+
Map<UUID, Boolean> result = new HashMap<>();
60+
61+
for (String key : keys) {
62+
Boolean value = (Boolean) redisTemplate.opsForValue().get(key);
63+
String[] parts = key.split(":");
64+
if (parts.length >= 3) {
65+
try {
66+
UUID courseId = UUID.fromString(parts[2]);
67+
result.put(courseId, Boolean.TRUE.equals(value));
68+
} catch (IllegalArgumentException e) {
69+
System.err.println("Invalid UUID in Redis key: " + key);
70+
}
71+
}
72+
}
73+
74+
return result;
7175
}
7276
}

src/main/java/com/day_walk/backend/domain/place_like/bean/GetPlaceLikeEntityBean.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.springframework.stereotype.Component;
88

99
import java.util.*;
10+
import java.util.stream.Collectors;
1011
import java.util.stream.Stream;
1112

1213
@RequiredArgsConstructor
@@ -16,19 +17,28 @@ public class GetPlaceLikeEntityBean {
1617
private final PlaceLikeRedisRepository placeLikeRedisRepository;
1718

1819
public List<PlaceLikeEntity> exec(UUID userId) {
19-
List<UUID> redisPlaceIds = placeLikeRedisRepository.findAllLikedPlaceIds(userId);
20+
Map<UUID, Boolean> redisLikeStates = placeLikeRedisRepository.findAllPlaceLikeStates(userId);
2021

21-
List<PlaceLikeEntity> redisLikes = redisPlaceIds.stream()
22-
.map(placeId -> new PlaceLikeEntity(UUID.randomUUID(), userId, placeId))
22+
List<PlaceLikeEntity> redisLikes = redisLikeStates.entrySet().stream()
23+
.filter(Map.Entry::getValue)
24+
.map(entry -> new PlaceLikeEntity(UUID.randomUUID(), userId, entry.getKey()))
2325
.toList();
2426

2527
List<PlaceLikeEntity> mysqlLikes = placeLikeRepository.findAllByUserId(userId);
2628

29+
Set<UUID> redisFalseIds = redisLikeStates.entrySet().stream()
30+
.filter(entry -> !entry.getValue())
31+
.map(Map.Entry::getKey)
32+
.collect(Collectors.toSet());
33+
2734
Set<String> uniqueKeys = new HashSet<>();
2835
List<PlaceLikeEntity> merged = new ArrayList<>();
2936

3037
for (PlaceLikeEntity like : Stream.concat(mysqlLikes.stream(), redisLikes.stream()).toList()) {
31-
String key = like.getUserId().toString() + "-" + like.getPlaceId().toString();
38+
if (redisFalseIds.contains(like.getPlaceId())) {
39+
continue;
40+
}
41+
String key = like.getUserId() + "-" + like.getPlaceId();
3242
if (uniqueKeys.add(key)) {
3343
merged.add(like);
3444
}

src/main/java/com/day_walk/backend/domain/place_like/repository/PlaceLikeRedisRepository.java

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
import org.springframework.stereotype.Repository;
66

77
import java.time.Duration;
8-
import java.util.List;
9-
import java.util.Set;
10-
import java.util.UUID;
8+
import java.util.*;
119

1210
@Repository
1311
@RequiredArgsConstructor
@@ -30,24 +28,29 @@ public boolean findPlaceLike(UUID userId, UUID placeId) {
3028
return Boolean.TRUE.equals(value);
3129
}
3230

33-
public List<UUID> findAllLikedPlaceIds(UUID userId) {
31+
public Map<UUID, Boolean> findAllPlaceLikeStates(UUID userId) {
3432
String pattern = "place-like:" + userId + ":*";
3533
Set<String> keys = redisTemplate.keys(pattern);
3634

37-
if (keys == null) {
38-
return List.of();
35+
if (keys == null || keys.isEmpty()) {
36+
return Collections.emptyMap();
3937
}
4038

41-
return keys.stream()
42-
.filter(key -> {
43-
Boolean value = (Boolean) redisTemplate.opsForValue().get(key);
44-
return Boolean.TRUE.equals(value);
45-
})
46-
.map(key -> {
47-
String[] parts = key.split(":");
48-
System.out.println(parts[2]);
49-
return UUID.fromString(parts[2]);
50-
})
51-
.toList();
39+
Map<UUID, Boolean> result = new HashMap<>();
40+
41+
for (String key : keys) {
42+
Boolean value = (Boolean) redisTemplate.opsForValue().get(key);
43+
String[] parts = key.split(":");
44+
if (parts.length >= 3) {
45+
try {
46+
UUID placeId = UUID.fromString(parts[2]);
47+
result.put(placeId, Boolean.TRUE.equals(value));
48+
} catch (IllegalArgumentException e) {
49+
System.err.println("Invalid UUID in Redis key: " + key);
50+
}
51+
}
52+
}
53+
54+
return result;
5255
}
5356
}

0 commit comments

Comments
 (0)