Switch listGroups and listUsers endpoints to use root objects

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

View file

@ -1,5 +1,6 @@
package de.avatic.lcc.controller.users;
import de.avatic.lcc.dto.users.GroupContainerDTO;
import de.avatic.lcc.dto.users.GroupDTO;
import de.avatic.lcc.repositories.pagination.SearchQueryResult;
import de.avatic.lcc.service.users.GroupService;
@ -34,16 +35,19 @@ public class GroupController {
*/
@GetMapping({"/", ""})
@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) {
SearchQueryResult<GroupDTO> groups = groupService.listGroups(page, limit);
var container = new GroupContainerDTO();
container.setGroups(groups.toList());
return ResponseEntity.ok()
.header("X-Total-Count", String.valueOf(groups.getTotalElements()))
.header("X-Page-Count", String.valueOf(groups.getTotalPages()))
.header("X-Current-Page", String.valueOf(page))
.body(groups.toList());
.body(container);
}
}

View file

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