Skip to content

Commit ec14612

Browse files
committed
CLAP-236 Fix: 로깅 조회 정렬 수정
1 parent 1fad45c commit ec14612

File tree

9 files changed

+30
-68
lines changed

9 files changed

+30
-68
lines changed

src/main/java/clap/server/adapter/inbound/web/log/LogController.java

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,11 @@ public class LogController {
3535
public ResponseEntity<PageResponse<AnonymousLogResponse>> getLoginAttempts(
3636
@RequestParam(defaultValue = "0") int page,
3737
@RequestParam(defaultValue = "20") int pageSize,
38-
@RequestParam(defaultValue = "requestAt") String sortBy,
39-
@RequestParam(defaultValue = "desc") String sortDirection,
38+
@RequestParam(defaultValue = "DESC") String sortDirection,
4039
@ModelAttribute @Valid FilterLogRequest anonymousLogRequest,
4140
@AuthenticationPrincipal SecurityUserDetails userInfo) {
42-
Pageable pageable = PageRequest.of(
43-
page,
44-
pageSize,
45-
"asc".equalsIgnoreCase(sortDirection) ? Sort.by(sortBy).ascending() : Sort.by(sortBy).descending()
46-
);
47-
return ResponseEntity.ok(findApiLogsUsecase.filterAnonymousLogs(anonymousLogRequest, pageable));
41+
Pageable pageable = PageRequest.of(page, pageSize);
42+
return ResponseEntity.ok(findApiLogsUsecase.filterAnonymousLogs(anonymousLogRequest, pageable, sortDirection));
4843
}
4944

5045
@Operation(summary = "작업 로그 목록 조회")
@@ -53,15 +48,10 @@ public ResponseEntity<PageResponse<AnonymousLogResponse>> getLoginAttempts(
5348
public ResponseEntity<PageResponse<MemberLogResponse>> getApiCalls(
5449
@RequestParam(defaultValue = "0") int page,
5550
@RequestParam(defaultValue = "20") int pageSize,
56-
@RequestParam(defaultValue = "requestAt") String sortBy,
57-
@RequestParam(defaultValue = "desc") String sortDirection,
51+
@RequestParam(defaultValue = "DESC") String sortDirection,
5852
@ModelAttribute @Valid FilterLogRequest memberLogRequest,
5953
@AuthenticationPrincipal SecurityUserDetails userInfo) {
60-
Pageable pageable = PageRequest.of(
61-
page,
62-
pageSize,
63-
"asc".equalsIgnoreCase(sortDirection) ? Sort.by(sortBy).ascending() : Sort.by(sortBy).descending()
64-
);
65-
return ResponseEntity.ok(findApiLogsUsecase.filterMemberLogs(memberLogRequest, pageable));
54+
Pageable pageable = PageRequest.of(page, pageSize);
55+
return ResponseEntity.ok(findApiLogsUsecase.filterMemberLogs(memberLogRequest, pageable, sortDirection));
6656
}
6757
}

src/main/java/clap/server/adapter/outbound/persistense/ApiLogPersistenceAdapter.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ public void saveAnonymousLog(AnonymousLog anonymousLog) {
4141

4242

4343
@Override
44-
public Page<MemberLog> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable) {
45-
return memberLogRepository.filterMemberLogs(memberLogRequest, pageable)
44+
public Page<MemberLog> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable, String sortDirection) {
45+
return memberLogRepository.filterMemberLogs(memberLogRequest, pageable, sortDirection)
4646
.map(apiLogPersistenceMapper::mapMemberLogEntityToDomain);
4747
}
4848

4949
@Override
50-
public Page<AnonymousLog> filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable) {
51-
return anonymousLogRepository.filterAnonymousLogs(anonymousLogRequest, pageable)
50+
public Page<AnonymousLog> filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable, String sortDirection) {
51+
return anonymousLogRepository.filterAnonymousLogs(anonymousLogRequest, pageable, sortDirection)
5252
.map(apiLogPersistenceMapper::mapAnonymousLogEntityToDomain);
5353
}
5454
}

src/main/java/clap/server/adapter/outbound/persistense/repository/log/AnonymousLogCustomRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
import org.springframework.data.domain.Pageable;
77

88
public interface AnonymousLogCustomRepository {
9-
Page<AnonymousLogEntity> filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable);
9+
Page<AnonymousLogEntity> filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable, String sortDirection);
1010
}

src/main/java/clap/server/adapter/outbound/persistense/repository/log/AnonymousLogCustomRepositoryImpl.java

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class AnonymousLogCustomRepositoryImpl implements AnonymousLogCustomRepos
2424

2525
private final JPAQueryFactory queryFactory;
2626
@Override
27-
public Page<AnonymousLogEntity> filterAnonymousLogs(FilterLogRequest request, Pageable pageable) {
27+
public Page<AnonymousLogEntity> filterAnonymousLogs(FilterLogRequest request, Pageable pageable, String sortDirection) {
2828
BooleanBuilder builder = new BooleanBuilder();
2929

3030
if (request.term() != null) {
@@ -40,11 +40,14 @@ public Page<AnonymousLogEntity> filterAnonymousLogs(FilterLogRequest request, Pa
4040
if (!request.clientIp().isEmpty()) {
4141
builder.and(anonymousLogEntity.clientIp.contains(request.clientIp()));
4242
}
43+
OrderSpecifier<LocalDateTime> orderSpecifier = sortDirection.equalsIgnoreCase("ASC")
44+
? anonymousLogEntity.requestAt.asc()
45+
: anonymousLogEntity.requestAt.desc();
4346

4447
List<AnonymousLogEntity> result = queryFactory
4548
.selectFrom(anonymousLogEntity)
4649
.where(builder)
47-
.orderBy(getOrderSpecifiers(pageable))
50+
.orderBy(orderSpecifier)
4851
.offset(pageable.getOffset())
4952
.limit(pageable.getPageSize())
5053
.fetch();
@@ -54,21 +57,4 @@ public Page<AnonymousLogEntity> filterAnonymousLogs(FilterLogRequest request, Pa
5457
.fetch().size();
5558
return new PageImpl<>(result, pageable, total);
5659
}
57-
58-
// Pageable의 Sort 조건을 확인하여 동적으로 OrderSpecifier를 생성
59-
private OrderSpecifier<?>[] getOrderSpecifiers(Pageable pageable) {
60-
if (!pageable.getSort().isSorted()) {
61-
// 정렬 조건이 없으면 requestAt 내림차순
62-
return new OrderSpecifier[]{ anonymousLogEntity.requestAt.desc() };
63-
}
64-
List<OrderSpecifier<?>> orderSpecifiers = new ArrayList<>();
65-
pageable.getSort().forEach(order -> {
66-
if ("requestAt".equalsIgnoreCase(order.getProperty())) {
67-
orderSpecifiers.add(order.isAscending()
68-
? anonymousLogEntity.requestAt.asc()
69-
: anonymousLogEntity.requestAt.desc());
70-
}
71-
});
72-
return orderSpecifiers.toArray(new OrderSpecifier[0]);
73-
}
7460
}

src/main/java/clap/server/adapter/outbound/persistense/repository/log/MemberLogCustomRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
import org.springframework.data.domain.Pageable;
77

88
public interface MemberLogCustomRepository {
9-
Page<MemberLogEntity> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable);
9+
Page<MemberLogEntity> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable, String sortDirection);
1010
}

src/main/java/clap/server/adapter/outbound/persistense/repository/log/MemberLogCustomRepositoryImpl.java

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class MemberLogCustomRepositoryImpl implements MemberLogCustomRepository{
2727
private final JPAQueryFactory queryFactory;
2828

2929
@Override
30-
public Page<MemberLogEntity> filterMemberLogs(FilterLogRequest request, Pageable pageable) {
30+
public Page<MemberLogEntity> filterMemberLogs(FilterLogRequest request, Pageable pageable, String sortDirection) {
3131
BooleanBuilder builder = new BooleanBuilder();
3232

3333
if (request.term() != null) {
@@ -43,12 +43,15 @@ public Page<MemberLogEntity> filterMemberLogs(FilterLogRequest request, Pageable
4343
if (!request.clientIp().isEmpty()) {
4444
builder.and(memberLogEntity.clientIp.contains(request.clientIp()));
4545
}
46+
OrderSpecifier<LocalDateTime> orderSpecifier = sortDirection.equalsIgnoreCase("ASC")
47+
? memberLogEntity.requestAt.asc()
48+
: memberLogEntity.requestAt.desc();
4649

4750
List<MemberLogEntity> result = queryFactory
4851
.selectFrom(memberLogEntity)
4952
.where(builder)
5053
.leftJoin(memberLogEntity.member, memberEntity)
51-
.orderBy(getOrderSpecifiers(pageable))
54+
.orderBy(orderSpecifier)
5255
.offset(pageable.getOffset())
5356
.limit(pageable.getPageSize())
5457
.fetch();
@@ -58,21 +61,4 @@ public Page<MemberLogEntity> filterMemberLogs(FilterLogRequest request, Pageable
5861
.fetch().size();
5962
return new PageImpl<>(result, pageable, total);
6063
}
61-
62-
// Pageable의 Sort 조건을 확인하여 동적으로 OrderSpecifier를 생성
63-
private OrderSpecifier<?>[] getOrderSpecifiers(Pageable pageable) {
64-
if (!pageable.getSort().isSorted()) {
65-
// 정렬 조건이 없으면 requestAt 내림차순
66-
return new OrderSpecifier[]{ memberLogEntity.requestAt.desc() };
67-
}
68-
List<OrderSpecifier<?>> orderSpecifiers = new ArrayList<>();
69-
pageable.getSort().forEach(order -> {
70-
if ("requestAt".equalsIgnoreCase(order.getProperty())) {
71-
orderSpecifiers.add(order.isAscending()
72-
? memberLogEntity.requestAt.asc()
73-
: memberLogEntity.requestAt.desc());
74-
}
75-
});
76-
return orderSpecifiers.toArray(new OrderSpecifier[0]);
77-
}
7864
}

src/main/java/clap/server/application/port/inbound/log/FindApiLogsUsecase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212
import java.util.List;
1313

1414
public interface FindApiLogsUsecase {
15-
PageResponse<AnonymousLogResponse> filterAnonymousLogs(FilterLogRequest anonymousLogsRequest, Pageable pageable);
16-
PageResponse<MemberLogResponse> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable);
15+
PageResponse<AnonymousLogResponse> filterAnonymousLogs(FilterLogRequest anonymousLogsRequest, Pageable pageable, String sortDirection);
16+
PageResponse<MemberLogResponse> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable, String sortDirection);
1717
}

src/main/java/clap/server/application/port/outbound/log/LoadLogPort.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import java.util.List;
1313

1414
public interface LoadLogPort {
15-
Page<AnonymousLog> filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable);
15+
Page<AnonymousLog> filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable, String sortDirection);
1616

17-
Page<MemberLog> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable);
17+
Page<MemberLog> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable, String sortDirection);
1818
}

src/main/java/clap/server/application/service/log/FindApiLogsService.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public class FindApiLogsService implements FindApiLogsUsecase {
2929
private final LoadLogPort loadLogPort;
3030

3131
@Override
32-
public PageResponse<AnonymousLogResponse> filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable) {
33-
Page<AnonymousLog> anonymousLogs = loadLogPort.filterAnonymousLogs(anonymousLogRequest, pageable);
32+
public PageResponse<AnonymousLogResponse> filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable, String sortDirection) {
33+
Page<AnonymousLog> anonymousLogs = loadLogPort.filterAnonymousLogs(anonymousLogRequest, pageable, sortDirection);
3434
Page<AnonymousLogResponse> anonymousLogResponses = anonymousLogs.map(anonymousLog -> {
3535
int failedAttempts = loginDomainService.getFailedAttemptCount(anonymousLog.getLoginNickname());
3636
return LogMapper.toAnonymousLogResponse(anonymousLog, failedAttempts);
@@ -39,8 +39,8 @@ public PageResponse<AnonymousLogResponse> filterAnonymousLogs(FilterLogRequest a
3939
}
4040

4141
@Override
42-
public PageResponse<MemberLogResponse> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable) {
43-
Page<MemberLog> memberLogs = loadLogPort.filterMemberLogs(memberLogRequest, pageable);
42+
public PageResponse<MemberLogResponse> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable, String sortDirection) {
43+
Page<MemberLog> memberLogs = loadLogPort.filterMemberLogs(memberLogRequest, pageable, sortDirection);
4444
Page<MemberLogResponse> memberLogResponses = memberLogs.map(LogMapper::toMemberLogResponse);
4545
return PageResponse.from(memberLogResponses);
4646
}

0 commit comments

Comments
 (0)