Switch listGroups and listUsers endpoints to use root objects

This commit is contained in:
Jan 2025-11-27 17:26:50 +01:00
parent e2e7f5f9e3
commit 75bff6886a
4 changed files with 45 additions and 8 deletions

View file

@ -1,5 +1,6 @@
package de.avatic.lcc.controller.users; package de.avatic.lcc.controller.users;
import de.avatic.lcc.dto.users.GroupContainerDTO;
import de.avatic.lcc.dto.users.GroupDTO; import de.avatic.lcc.dto.users.GroupDTO;
import de.avatic.lcc.repositories.pagination.SearchQueryResult; import de.avatic.lcc.repositories.pagination.SearchQueryResult;
import de.avatic.lcc.service.users.GroupService; import de.avatic.lcc.service.users.GroupService;
@ -34,16 +35,19 @@ public class GroupController {
*/ */
@GetMapping({"/", ""}) @GetMapping({"/", ""})
@PreAuthorize("hasAnyRole('RIGHT-MANAGEMENT', 'SERVICE')") @PreAuthorize("hasAnyRole('RIGHT-MANAGEMENT', 'SERVICE')")
public ResponseEntity<List<GroupDTO>> listGroups(@RequestParam(defaultValue = "20") @Min(1) int limit, public ResponseEntity<GroupContainerDTO> listGroups(@RequestParam(defaultValue = "20") @Min(1) int limit,
@RequestParam(defaultValue = "1") @Min(1) int page) { @RequestParam(defaultValue = "1") @Min(1) int page) {
SearchQueryResult<GroupDTO> groups = groupService.listGroups(page, limit); SearchQueryResult<GroupDTO> groups = groupService.listGroups(page, limit);
var container = new GroupContainerDTO();
container.setGroups(groups.toList());
return ResponseEntity.ok() return ResponseEntity.ok()
.header("X-Total-Count", String.valueOf(groups.getTotalElements())) .header("X-Total-Count", String.valueOf(groups.getTotalElements()))
.header("X-Page-Count", String.valueOf(groups.getTotalPages())) .header("X-Page-Count", String.valueOf(groups.getTotalPages()))
.header("X-Current-Page", String.valueOf(page)) .header("X-Current-Page", String.valueOf(page))
.body(groups.toList()); .body(container);
} }
} }

View file

@ -1,19 +1,17 @@
package de.avatic.lcc.controller.users; package de.avatic.lcc.controller.users;
import de.avatic.lcc.dto.users.UserContainerDTO;
import de.avatic.lcc.dto.users.UserDTO; import de.avatic.lcc.dto.users.UserDTO;
import de.avatic.lcc.repositories.pagination.SearchQueryResult; import de.avatic.lcc.repositories.pagination.SearchQueryResult;
import de.avatic.lcc.service.users.UserService; import de.avatic.lcc.service.users.UserService;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.validation.constraints.Min; import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional; import java.util.Optional;
/** /**
@ -41,17 +39,20 @@ public class UserController {
*/ */
@GetMapping({"/", ""}) @GetMapping({"/", ""})
@PreAuthorize("hasRole('RIGHT-MANAGEMENT')") @PreAuthorize("hasRole('RIGHT-MANAGEMENT')")
public ResponseEntity<List<UserDTO>> listUsers( public ResponseEntity<UserContainerDTO> listUsers(
@RequestParam(defaultValue = "20") @Min(1) int limit, @RequestParam(defaultValue = "20") @Min(1) int limit,
@RequestParam(defaultValue = "1") @Min(1) int page) { @RequestParam(defaultValue = "1") @Min(1) int page) {
SearchQueryResult<UserDTO> users = userService.listUsers(page, limit); SearchQueryResult<UserDTO> users = userService.listUsers(page, limit);
var container = new UserContainerDTO();
container.setUsers( users.toList());
return ResponseEntity.ok() return ResponseEntity.ok()
.header("X-Total-Count", String.valueOf(users.getTotalElements())) .header("X-Total-Count", String.valueOf(users.getTotalElements()))
.header("X-Page-Count", String.valueOf(users.getTotalPages())) .header("X-Page-Count", String.valueOf(users.getTotalPages()))
.header("X-Current-Page", String.valueOf(page)) .header("X-Current-Page", String.valueOf(page))
.body(users.toList()); .body(container);
} }

View file

@ -0,0 +1,16 @@
package de.avatic.lcc.dto.users;
import java.util.List;
public class GroupContainerDTO {
private List<GroupDTO> groups;
public List<GroupDTO> getGroups() {
return groups;
}
public void setGroups(List<GroupDTO> groups) {
this.groups = groups;
}
}

View file

@ -0,0 +1,16 @@
package de.avatic.lcc.dto.users;
import java.util.List;
public class UserContainerDTO {
private List<UserDTO> users;
public List<UserDTO> getUsers() {
return users;
}
public void setUsers(List<UserDTO> users) {
this.users = users;
}
}