Skip to content

Commit 46e0efd

Browse files
claude[bot]github-actions[bot]claude
authored
Maintenance: MemeRepositoryCustomImpl - Eliminate layer violation (#118)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Claude Sonnet 4.5 <[email protected]>
1 parent 0d7a4e0 commit 46e0efd

File tree

4 files changed

+21
-6
lines changed

4 files changed

+21
-6
lines changed

src/main/java/spring/memewikibe/application/MemeAggregationLookUpServiceImpl.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,10 @@ public List<MemeSimpleResponse> getMostPopularMemes() {
7272
private List<MemeSimpleResponse> fillWithLatestMemes(List<MemeSimpleResponse> originalList, int originalListSize, int targetCount) {
7373
int remainingCount = targetCount - originalListSize;
7474
List<Long> existingIds = originalList.stream().map(MemeSimpleResponse::id).toList();
75-
List<MemeSimpleResponse> latestMemes = memeRepository.findLatestMemesExcludingIds(existingIds, remainingCount);
75+
List<MemeSimpleResponse> latestMemes = memeRepository.findLatestMemesExcludingIds(existingIds, remainingCount)
76+
.stream()
77+
.map(info -> new MemeSimpleResponse(info.id(), info.title(), info.imgUrl()))
78+
.toList();
7679

7780
List<MemeSimpleResponse> result = new ArrayList<>(originalList);
7881
result.addAll(latestMemes);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package spring.memewikibe.domain.meme;
2+
3+
/**
4+
* Domain projection for simple meme information.
5+
* Contains only the essential fields needed for list views and recommendations.
6+
*/
7+
public record MemeSimpleInfo(
8+
long id,
9+
String title,
10+
String imgUrl
11+
) {
12+
}

src/main/java/spring/memewikibe/infrastructure/MemeRepositoryCustom.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import org.springframework.data.domain.Limit;
44
import org.springframework.data.domain.Pageable;
55
import org.springframework.data.domain.Slice;
6-
import spring.memewikibe.api.controller.meme.response.MemeSimpleResponse;
76
import spring.memewikibe.domain.meme.Meme;
7+
import spring.memewikibe.domain.meme.MemeSimpleInfo;
88

99
import java.util.List;
1010

@@ -17,5 +17,5 @@ public interface MemeRepositoryCustom {
1717

1818
List<Meme> findKeywordCandidatesAcrossFields(List<String> keywords, Limit limit);
1919

20-
List<MemeSimpleResponse> findLatestMemesExcludingIds(List<Long> excludeIds, int limit);
20+
List<MemeSimpleInfo> findLatestMemesExcludingIds(List<Long> excludeIds, int limit);
2121
}

src/main/java/spring/memewikibe/infrastructure/MemeRepositoryCustomImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
import org.springframework.data.domain.Slice;
99
import org.springframework.data.domain.SliceImpl;
1010
import org.springframework.stereotype.Repository;
11-
import spring.memewikibe.api.controller.meme.response.MemeSimpleResponse;
1211
import spring.memewikibe.domain.meme.Meme;
12+
import spring.memewikibe.domain.meme.MemeSimpleInfo;
1313

1414
import java.util.List;
1515

@@ -64,9 +64,9 @@ public Slice<Meme> findByTitleOrHashtagsContainingAsSlice(String title, Long las
6464
}
6565

6666
@Override
67-
public List<MemeSimpleResponse> findLatestMemesExcludingIds(List<Long> excludeIds, int limit) {
67+
public List<MemeSimpleInfo> findLatestMemesExcludingIds(List<Long> excludeIds, int limit) {
6868
return queryFactory
69-
.select(Projections.constructor(MemeSimpleResponse.class,
69+
.select(Projections.constructor(MemeSimpleInfo.class,
7070
meme.id,
7171
meme.title,
7272
meme.imgUrl

0 commit comments

Comments
 (0)