Skip to content

Commit bd90d2d

Browse files
authored
Merge pull request #389 from Team-WSS/fix/#388
2 parents 6863a19 + 7a158fe commit bd90d2d

File tree

4 files changed

+28
-3
lines changed

4 files changed

+28
-3
lines changed

src/main/java/org/websoso/WSSServer/dto/feed/UserFeedsGetResponse.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
public record UserFeedsGetResponse(
66
Boolean isLoadable,
7-
int feedsCount,
7+
long feedsCount,
88
List<UserFeedGetResponse> feeds
99
) {
1010

11-
public static UserFeedsGetResponse of(Boolean isLoadable, int feedsCount,
11+
public static UserFeedsGetResponse of(Boolean isLoadable, long feedsCount,
1212
List<UserFeedGetResponse> userFeedGetResponses) {
1313
return new UserFeedsGetResponse(isLoadable, feedsCount, userFeedGetResponses);
1414
}

src/main/java/org/websoso/WSSServer/repository/FeedCustomRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,8 @@ List<Feed> findFeedsByNoOffsetPagination(User owner, Long lastFeedId, int size,
1717
Long visitorId);
1818

1919
Slice<Feed> findRecommendedFeeds(Long lastFeedId, Long userId, PageRequest pageRequest, List<Genre> genres);
20+
21+
Long countVisibleFeeds(User owner, Long lastFeedId, Boolean isVisible,
22+
Boolean isUnVisible, List<Genre> genres,
23+
Long visitorId);
2024
}

src/main/java/org/websoso/WSSServer/repository/FeedCustomRepositoryImpl.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,26 @@ public Optional<FeedImage> findThumbnailFeedImageByFeedId(long feedId) {
8989
.fetchOne());
9090
}
9191

92+
@Override
93+
public Long countVisibleFeeds(User owner, Long lastFeedId, Boolean isVisible,
94+
Boolean isUnVisible, List<Genre> genres,
95+
Long visitorId) {
96+
return jpaQueryFactory
97+
.select(feed.count())
98+
.from(feed)
99+
.leftJoin(novel).on(feed.novelId.eq(novel.novelId))
100+
.leftJoin(novelGenre).on(novel.eq(novelGenre.novel))
101+
.leftJoin(genre).on(novelGenre.genre.eq(genre))
102+
.where(
103+
feed.user.eq(owner),
104+
ltFeedId(lastFeedId),
105+
checkVisible(visitorId),
106+
checkPublic(isVisible, isUnVisible),
107+
checkGenres(genres)
108+
)
109+
.fetchOne();
110+
}
111+
92112
private BooleanExpression ltFeedId(Long lastFeedId) {
93113
if (lastFeedId == NO_CURSOR) {
94114
return null;

src/main/java/org/websoso/WSSServer/service/FeedService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,8 @@ public UserFeedsGetResponse getUserFeeds(User visitor, Long ownerId, Long lastFe
496496

497497
// TODO Slice의 hasNext()로 판단하도록 수정
498498
Boolean isLoadable = visibleFeeds.size() == size;
499-
int feedsCount = visibleFeeds.size();
499+
long feedsCount = feedRepository.countVisibleFeeds(owner, lastFeedId, isVisible,
500+
isUnVisible, genres, visitorId);
500501

501502
return UserFeedsGetResponse.of(isLoadable, feedsCount, userFeedGetResponseList);
502503
}

0 commit comments

Comments
 (0)