diff --git a/src/main/java/com/onixbyte/helix/controller/AuthorityController.java b/src/main/java/com/onixbyte/helix/controller/AuthorityController.java new file mode 100644 index 0000000..e21111d --- /dev/null +++ b/src/main/java/com/onixbyte/helix/controller/AuthorityController.java @@ -0,0 +1,33 @@ +package com.onixbyte.helix.controller; + +import com.onixbyte.helix.domain.entity.Authority; +import com.onixbyte.helix.domain.web.request.QueryAuthorityRequest; +import com.onixbyte.helix.service.AuthorityService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/authorities") +public class AuthorityController { + + private final AuthorityService authorityService; + + public AuthorityController(AuthorityService authorityService) { + this.authorityService = authorityService; + } + + @GetMapping + public Page getAuthorities( + @RequestParam(required = false, defaultValue = "1") Integer pageNum, + @RequestParam(required = false, defaultValue = "10") Integer pageSize, + @Validated @ModelAttribute QueryAuthorityRequest request + ) { + var pageRequest = PageRequest.of(pageNum - 1, pageSize); + return authorityService.getAuthorities(pageRequest, request); + } +} diff --git a/src/main/java/com/onixbyte/helix/domain/web/request/QueryAuthorityRequest.java b/src/main/java/com/onixbyte/helix/domain/web/request/QueryAuthorityRequest.java new file mode 100644 index 0000000..27e41fb --- /dev/null +++ b/src/main/java/com/onixbyte/helix/domain/web/request/QueryAuthorityRequest.java @@ -0,0 +1,4 @@ +package com.onixbyte.helix.domain.web.request; + +public record QueryAuthorityRequest() { +} diff --git a/src/main/java/com/onixbyte/helix/manager/AuthorityManager.java b/src/main/java/com/onixbyte/helix/manager/AuthorityManager.java index 55cc481..99beb7a 100644 --- a/src/main/java/com/onixbyte/helix/manager/AuthorityManager.java +++ b/src/main/java/com/onixbyte/helix/manager/AuthorityManager.java @@ -1,10 +1,13 @@ package com.onixbyte.helix.manager; +import com.onixbyte.helix.repository.AuthorityRepository; import com.onixbyte.helix.shared.CacheName; import com.onixbyte.helix.domain.entity.Authority; import com.onixbyte.helix.mapper.AuthorityMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Component; import java.util.List; @@ -13,14 +16,20 @@ import java.util.List; public class AuthorityManager { private final AuthorityMapper authorityMapper; + private final AuthorityRepository authorityRepository; @Autowired - public AuthorityManager(AuthorityMapper authorityMapper) { + public AuthorityManager(AuthorityMapper authorityMapper, AuthorityRepository authorityRepository) { this.authorityMapper = authorityMapper; + this.authorityRepository = authorityRepository; } @Cacheable(cacheNames = CacheName.AUTHORITIES_OF_USER, key = "#userId") public List queryByUserId(Long userId) { return authorityMapper.selectByUserId(userId); } + + public Page selectAll(Pageable pageable) { + return authorityRepository.findAll(pageable); + } } diff --git a/src/main/java/com/onixbyte/helix/service/AuthorityService.java b/src/main/java/com/onixbyte/helix/service/AuthorityService.java new file mode 100644 index 0000000..eb3a8ba --- /dev/null +++ b/src/main/java/com/onixbyte/helix/service/AuthorityService.java @@ -0,0 +1,24 @@ +package com.onixbyte.helix.service; + +import com.onixbyte.helix.domain.entity.Authority; +import com.onixbyte.helix.domain.web.request.QueryAuthorityRequest; +import com.onixbyte.helix.manager.AuthorityManager; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class AuthorityService { + + private final AuthorityManager authorityManager; + + public AuthorityService(AuthorityManager authorityManager) { + this.authorityManager = authorityManager; + } + + public Page getAuthorities(Pageable pageable, QueryAuthorityRequest request) { + return authorityManager.selectAll(pageable); + } +}