Skip to content

Commit 524cc36

Browse files
committed
CLAP-81 Refactor: PageResponse를 통해 페이징 정보 전달
1 parent 643eb67 commit 524cc36

File tree

6 files changed

+49
-14
lines changed

6 files changed

+49
-14
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package clap.server.adapter.inbound.web.dto.common;
2+
3+
import org.springframework.data.domain.Page;
4+
5+
import java.util.List;
6+
7+
public record PageResponse<T>(
8+
List<T> content,
9+
long totalElements,
10+
int totalPages,
11+
int pageNumber,
12+
int pageSize,
13+
boolean isFirst,
14+
boolean isLast
15+
) {
16+
public static <T> PageResponse<T> from(Page<T> page) {
17+
return new PageResponse<>(
18+
page.getContent(),
19+
page.getTotalElements(),
20+
page.getTotalPages(),
21+
page.getNumber() + 1,
22+
page.getSize(),
23+
page.isFirst(),
24+
page.isLast()
25+
);
26+
}
27+
}

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package clap.server.adapter.inbound.web.log;
22

33
import clap.server.adapter.inbound.security.SecurityUserDetails;
4+
import clap.server.adapter.inbound.web.dto.common.PageResponse;
45
import clap.server.adapter.inbound.web.dto.log.AnonymousLogResponse;
56
import clap.server.adapter.inbound.web.dto.log.FilterLogRequest;
67
import clap.server.adapter.inbound.web.dto.log.MemberLogResponse;
@@ -10,6 +11,7 @@
1011
import org.springframework.data.domain.Page;
1112
import org.springframework.data.domain.PageRequest;
1213
import org.springframework.data.domain.Pageable;
14+
import org.springframework.http.ResponseEntity;
1315
import org.springframework.security.access.annotation.Secured;
1416
import org.springframework.security.core.annotation.AuthenticationPrincipal;
1517
import org.springframework.web.bind.annotation.*;
@@ -26,23 +28,23 @@ public class LogController {
2628

2729
@Secured({"ROLE_ADMIN"})
2830
@GetMapping("/login")
29-
public Page<AnonymousLogResponse> getLoginAttempts(
31+
public ResponseEntity<PageResponse<AnonymousLogResponse>> getLoginAttempts(
3032
@RequestParam(defaultValue = "0") int page,
3133
@RequestParam(defaultValue = "20") int pageSize,
3234
@ModelAttribute FilterLogRequest anonymousLogRequest,
3335
@AuthenticationPrincipal SecurityUserDetails userInfo) {
3436
Pageable pageable = PageRequest.of(page, pageSize);
35-
return findApiLogsUsecase.filterAnonymousLogs(anonymousLogRequest, pageable);
37+
return ResponseEntity.ok(findApiLogsUsecase.filterAnonymousLogs(anonymousLogRequest, pageable));
3638
}
3739

3840
@Secured({"ROLE_ADMIN"})
3941
@GetMapping("/general")
40-
public Page<MemberLogResponse> getApiCalls(
42+
public ResponseEntity<PageResponse<MemberLogResponse>> getApiCalls(
4143
@RequestParam(defaultValue = "0") int page,
4244
@RequestParam(defaultValue = "20") int pageSize,
4345
@ModelAttribute FilterLogRequest memberLogRequest,
4446
@AuthenticationPrincipal SecurityUserDetails userInfo) {
4547
Pageable pageable = PageRequest.of(page, pageSize);
46-
return findApiLogsUsecase.filterMemberLogs(memberLogRequest, pageable);
48+
return ResponseEntity.ok(findApiLogsUsecase.filterMemberLogs(memberLogRequest, pageable));
4749
}
4850
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,9 @@ public List<ApiLog> findAllLogs() {
5252
}
5353

5454
@Override
55-
public Page<MemberLogResponse> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable) {
56-
Page<MemberLog> memberLogs = memberLogRepository.filterMemberLogs(memberLogRequest, pageable)
55+
public Page<MemberLog> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable) {
56+
return memberLogRepository.filterMemberLogs(memberLogRequest, pageable)
5757
.map(apiLogPersistenceMapper::mapMemberLogEntityToDomain);
58-
return memberLogs.map(LogMapper::toMemberLogResponse);
5958
}
6059

6160
@Override

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package clap.server.application.port.inbound.log;
22

33

4+
import clap.server.adapter.inbound.web.dto.common.PageResponse;
45
import clap.server.adapter.inbound.web.dto.log.AnonymousLogResponse;
56
import clap.server.adapter.inbound.web.dto.log.FilterLogRequest;
67
import clap.server.adapter.inbound.web.dto.log.MemberLogResponse;
@@ -11,7 +12,7 @@
1112
import java.util.List;
1213

1314
public interface FindApiLogsUsecase {
14-
Page<AnonymousLogResponse> filterAnonymousLogs(FilterLogRequest anonymousLogsRequest, Pageable pageable);
15-
Page<MemberLogResponse> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable);
15+
PageResponse<AnonymousLogResponse> filterAnonymousLogs(FilterLogRequest anonymousLogsRequest, Pageable pageable);
16+
PageResponse<MemberLogResponse> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable);
1617
List<ApiLog> getApiLogs();
1718
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import clap.server.adapter.inbound.web.dto.log.MemberLogResponse;
66
import clap.server.domain.model.log.AnonymousLog;
77
import clap.server.domain.model.log.ApiLog;
8+
import clap.server.domain.model.log.MemberLog;
89
import org.springframework.data.domain.Page;
910
import org.springframework.data.domain.Pageable;
1011

@@ -14,5 +15,5 @@ public interface LoadLogPort {
1415
List<ApiLog> findAllLogs();
1516
Page<AnonymousLog> filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable);
1617

17-
Page<MemberLogResponse> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable);
18+
Page<MemberLog> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable);
1819
}

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package clap.server.application.service.log;
22

3+
import clap.server.adapter.inbound.web.dto.common.PageResponse;
34
import clap.server.adapter.inbound.web.dto.log.AnonymousLogResponse;
45
import clap.server.adapter.inbound.web.dto.log.FilterLogRequest;
56
import clap.server.adapter.inbound.web.dto.log.MemberLogResponse;
@@ -11,6 +12,7 @@
1112
import clap.server.common.annotation.architecture.ApplicationService;
1213
import clap.server.domain.model.log.AnonymousLog;
1314
import clap.server.domain.model.log.ApiLog;
15+
import clap.server.domain.model.log.MemberLog;
1416
import lombok.RequiredArgsConstructor;
1517
import org.springframework.data.domain.Page;
1618
import org.springframework.data.domain.Pageable;
@@ -28,17 +30,20 @@ public class FindApiLogsService implements FindApiLogsUsecase {
2830
private final LoadLogPort loadLogPort;
2931

3032
@Override
31-
public Page<AnonymousLogResponse> filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable) {
33+
public PageResponse<AnonymousLogResponse> filterAnonymousLogs(FilterLogRequest anonymousLogRequest, Pageable pageable) {
3234
Page<AnonymousLog> anonymousLogs = loadLogPort.filterAnonymousLogs(anonymousLogRequest, pageable);
33-
return anonymousLogs.map(anonymousLog -> {
35+
Page<AnonymousLogResponse> anonymousLogResponses = anonymousLogs.map(anonymousLog -> {
3436
int failedAttempts = loginDomainService.getFailedAttemptCount(anonymousLog.getLoginNickname());
3537
return LogMapper.toAnonymounsLogResponse(anonymousLog, failedAttempts);
3638
});
39+
return PageResponse.from(anonymousLogResponses);
3740
}
3841

3942
@Override
40-
public Page<MemberLogResponse> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable) {
41-
return loadLogPort.filterMemberLogs(memberLogRequest, pageable);
43+
public PageResponse<MemberLogResponse> filterMemberLogs(FilterLogRequest memberLogRequest, Pageable pageable) {
44+
Page<MemberLog> memberLogs = loadLogPort.filterMemberLogs(memberLogRequest, pageable);
45+
Page<MemberLogResponse> memberLogResponses = memberLogs.map(LogMapper::toMemberLogResponse);
46+
return PageResponse.from(memberLogResponses);
4247
}
4348

4449
//테스트용

0 commit comments

Comments
 (0)