Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added db_dev.mv.db
Binary file not shown.
616 changes: 616 additions & 0 deletions db_dev.trace.db

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -25,45 +25,58 @@ public FollowQuerydsl() {
super(Follow.class);
}

private NumberPath<Long> getNumberPath(boolean isFollowerQuery) {
return isFollowerQuery ? follow.targetId : follow.initiatorId;
private NumberPath<Long> getNumberPath(boolean isFollowTarget) {
return isFollowTarget ? follow.targetId : follow.initiatorId;
}

private BooleanBuilder getBooleanBuilder(boolean isFollowerQuery, Long userId, Long cursorId) {
private BooleanBuilder getBooleanBuilder(boolean isFollowTarget, Long userId, Long cursorId, String keyword) {
BooleanBuilder builder = new BooleanBuilder();
builder.and(getNumberPath(isFollowerQuery).eq(userId));
NumberPath<Long> numberPath = getNumberPath(isFollowTarget);

builder.and(numberPath.eq(userId));

if (cursorId != null) {
builder.and(follow.id.lt(cursorId));
}

if (keyword != null) {
builder.and(user.nickname.like(keyword));
}

return builder;
}

private List<UserThumbnailResponseDto> getContent(boolean isFollowerQuery, Long userId, Long cursorId) {
BooleanBuilder builder = getBooleanBuilder(isFollowerQuery, userId, cursorId);
private List<UserThumbnailResponseDto> getContent(boolean isFollowTarget, Long userId, Long cursorId,
String keyword) {
BooleanBuilder builder = getBooleanBuilder(isFollowTarget, userId, cursorId, keyword);

NumberPath<Long> numberPath = getNumberPath(isFollowTarget);

return from(follow)
.innerJoin(user)
.on(user.userId.eq(numberPath))
.select(Projections.constructor(UserThumbnailResponseDto.class,
getNumberPath(!isFollowerQuery),
numberPath,
user.nickname,
user.nickname))
user.profileImage))
.where(builder)
.distinct()
.fetch();
}

//๋‚ด ํŒ”๋กœ์›Œ ์•„์ด๋”” ์Šฌ๋ผ์ด์Šค
public Slice<UserThumbnailResponseDto> getFollowerSliceByUserId(Long userId, Long cursorId, Pageable pageable) {
boolean isFollowerQuery = true;
List<UserThumbnailResponseDto> content = getContent(isFollowerQuery, userId, cursorId);
public Slice<UserThumbnailResponseDto> getFollowerSliceByUserId(Long userId, Long cursorId, String keyword,
Pageable pageable) {
boolean isFollowTarget = true;
List<UserThumbnailResponseDto> content = getContent(isFollowTarget, userId, cursorId, keyword);
return PageableUtil.checkAndCreateSlice(content, pageable);
}

// ๋‚ด๊ฐ€ ํŒ”๋กœ์ž‰ํ•˜๋Š” ์•„์ด๋”” ์Šฌ๋ผ์ด์Šค
public Slice<UserThumbnailResponseDto> getFollowingSliceByUserId(Long userId, Long cursorId, Pageable pageable) {
boolean isFollowerQuery = false;
List<UserThumbnailResponseDto> content = getContent(isFollowerQuery, userId, cursorId);
public Slice<UserThumbnailResponseDto> getFollowingSliceByUserId(Long userId, Long cursorId, String keyword,
Pageable pageable) {
boolean isFollowTarget = false;
List<UserThumbnailResponseDto> content = getContent(isFollowTarget, userId, cursorId, keyword);
return PageableUtil.checkAndCreateSlice(content, pageable);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.example.log4u.domain.supports.controller;

import org.springframework.data.domain.Page;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
Expand All @@ -12,6 +11,7 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.example.log4u.common.dto.PageResponse;
import com.example.log4u.common.oauth2.dto.CustomOAuth2User;
import com.example.log4u.domain.supports.dto.SupportCreateRequestDto;
import com.example.log4u.domain.supports.dto.SupportGetResponseDto;
Expand Down Expand Up @@ -39,13 +39,14 @@ public ResponseEntity<Void> createSupport(
}

@GetMapping
public ResponseEntity<Page<SupportOverviewGetResponseDto>> getSupportOverviewPage(
public ResponseEntity<PageResponse<SupportOverviewGetResponseDto>> getSupportOverviewPage(
@AuthenticationPrincipal CustomOAuth2User customOAuth2User,
@RequestParam(defaultValue = "1") int page,
@RequestParam(required = false) SupportType supportType
) {
long requesterId = customOAuth2User.getUserId();
Page<SupportOverviewGetResponseDto> supportOverviewPage = supportService.getSupportPage(requesterId, page,
PageResponse<SupportOverviewGetResponseDto> supportOverviewPage = supportService.getSupportPage(requesterId,
page,
supportType);
return ResponseEntity.ok().body(supportOverviewPage);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.example.log4u.domain.supports.service;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.example.log4u.common.dto.PageResponse;
import com.example.log4u.domain.supports.dto.SupportCreateRequestDto;
import com.example.log4u.domain.supports.dto.SupportGetResponseDto;
import com.example.log4u.domain.supports.dto.SupportOverviewGetResponseDto;
Expand All @@ -31,13 +31,14 @@ public void createSupport(
}

@Transactional(readOnly = true)
public Page<SupportOverviewGetResponseDto> getSupportPage(
public PageResponse<SupportOverviewGetResponseDto> getSupportPage(
long requesterId,
int page,
SupportType supportType
) {
Pageable pageable = PageRequest.of(page - 1, 10);
return supportQuerydsl.getSupportOverviewGetResponseDtoPage(requesterId, pageable, supportType);
return PageResponse.of(
supportQuerydsl.getSupportOverviewGetResponseDtoPage(requesterId, pageable, supportType));
}

@Transactional(readOnly = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,19 +43,22 @@ public ResponseEntity<PageResponse<DiaryResponseDto>> getMyLikesPage(
@GetMapping("/users/me/followings")
public ResponseEntity<PageResponse<UserThumbnailResponseDto>> getMyFollowingPage(
@AuthenticationPrincipal CustomOAuth2User customOAuth2User,
@RequestParam(required = false) Long cursorId
@RequestParam(required = false) Long cursorId,
@RequestParam(required = false) String keyword

) {
long userId = customOAuth2User.getUserId();
return ResponseEntity.ok(myPageService.getMyFollowings(userId, cursorId));
return ResponseEntity.ok(myPageService.getMyFollowings(userId, cursorId, keyword));
}

@GetMapping("/users/me/followers")
public ResponseEntity<PageResponse<UserThumbnailResponseDto>> getMyFollowerPage(
@AuthenticationPrincipal CustomOAuth2User customOAuth2User,
@RequestParam(required = false) Long cursorId
@RequestParam(required = false) Long cursorId,
@RequestParam(required = false) String keyword
) {
long userId = customOAuth2User.getUserId();
return ResponseEntity.ok(myPageService.getMyFollowers(userId, cursorId));
return ResponseEntity.ok(myPageService.getMyFollowers(userId, cursorId, keyword));
}

@GetMapping("/users/me/subscriptions")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,11 @@ public PageResponse<DiaryResponseDto> getLikeDiariesByCursor(Long userId, Long c
}

@Transactional(readOnly = true)
public PageResponse<UserThumbnailResponseDto> getMyFollowers(Long userId, Long cursorId) {
public PageResponse<UserThumbnailResponseDto> getMyFollowers(Long userId, Long cursorId, String keyword) {
Slice<UserThumbnailResponseDto> slice = followQuerydsl.getFollowerSliceByUserId(
userId,
cursorId,
keyword,
PageRequest.of(0, defaultPageSize));

Long nextCursor = !slice.isEmpty() ? slice.getContent().getLast().userId() : null;
Expand All @@ -56,10 +57,11 @@ public PageResponse<UserThumbnailResponseDto> getMyFollowers(Long userId, Long c
}

@Transactional(readOnly = true)
public PageResponse<UserThumbnailResponseDto> getMyFollowings(Long userId, Long cursorId) {
public PageResponse<UserThumbnailResponseDto> getMyFollowings(Long userId, Long cursorId, String keyword) {
Slice<UserThumbnailResponseDto> slice = followQuerydsl.getFollowingSliceByUserId(
userId,
cursorId,
keyword,
PageRequest.of(0, defaultPageSize));

Long nextCursor = !slice.isEmpty() ? slice.getContent().getLast().userId() : null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;

import com.example.log4u.common.dto.PageResponse;
import com.example.log4u.domain.supports.dto.SupportCreateRequestDto;
import com.example.log4u.domain.supports.dto.SupportGetResponseDto;
import com.example.log4u.domain.supports.dto.SupportOverviewGetResponseDto;
Expand Down Expand Up @@ -62,10 +63,10 @@ void testGetSupportPage() {
given(supportQuerydsl.getSupportOverviewGetResponseDtoPage(requesterId, pageable, supportType))
.willReturn(supportPage);

Page<SupportOverviewGetResponseDto> result = supportService.getSupportPage(requesterId, 1, supportType);
PageResponse<SupportOverviewGetResponseDto> result = supportService.getSupportPage(requesterId, 1, supportType);

assertNotNull(result);
assertEquals(1, result.getTotalElements());
assertEquals(1, result.pageInfo().totalElements());
}

@DisplayName("์„ฑ๊ณต ํ…Œ์ŠคํŠธ : ํŠน์ • ๋ฌธ์˜ ์ƒ์„ธ ์กฐํšŒ")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,10 @@ void getLikeDiariesByCursor_returnsCorrectData() {
void getMyFollowers_returnsCorrectData() {
var slice = new SliceImpl<>(List.of(new UserThumbnailResponseDto(userId, "nick", "image")));

when(followQuerydsl.getFollowerSliceByUserId(eq(userId), eq(cursorId), any(PageRequest.class)))
when(followQuerydsl.getFollowerSliceByUserId(eq(userId), eq(cursorId), any(), any(PageRequest.class)))
.thenReturn(slice);

PageResponse<UserThumbnailResponseDto> result = myPageService.getMyFollowers(userId, cursorId);
PageResponse<UserThumbnailResponseDto> result = myPageService.getMyFollowers(userId, cursorId, null);

assertThat(result).isNotNull();
}
Expand All @@ -107,10 +107,10 @@ void getMyFollowers_returnsCorrectData() {
void getMyFollowings_returnsCorrectData() {
var slice = new SliceImpl<>(List.of(new UserThumbnailResponseDto(userId, "nick", "image")));

when(followQuerydsl.getFollowingSliceByUserId(eq(userId), eq(cursorId), any(PageRequest.class)))
when(followQuerydsl.getFollowingSliceByUserId(eq(userId), eq(cursorId), any(), any(PageRequest.class)))
.thenReturn(slice);

PageResponse<UserThumbnailResponseDto> result = myPageService.getMyFollowings(userId, cursorId);
PageResponse<UserThumbnailResponseDto> result = myPageService.getMyFollowings(userId, cursorId, null);

assertThat(result).isNotNull();
}
Expand Down