Skip to content
Snippets Groups Projects
Commit b8096f11 authored by Dominika Zemanovičová's avatar Dominika Zemanovičová
Browse files

Change Result to Page for paging

parent f7e3cfd6
No related branches found
No related tags found
3 merge requests!31M2,!28M2 user,!27Draft: M2 user
package org.fuseri.model.dto.common;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class Result<T extends DomainObjectDto> {
private long total;
private int page;
private int pageSize;
private List<T> items;
}
package org.fuseri.modulelanguageschool.common; package org.fuseri.modulelanguageschool.common;
import org.fuseri.model.dto.common.DomainObjectDto; import org.fuseri.model.dto.common.DomainObjectDto;
import org.fuseri.model.dto.common.Result;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import java.util.List; import java.util.List;
...@@ -15,11 +13,7 @@ public interface DomainMapper<T extends DomainObject, S extends DomainObjectDto> ...@@ -15,11 +13,7 @@ public interface DomainMapper<T extends DomainObject, S extends DomainObjectDto>
List<S> toDtoList(List<T> entities); List<S> toDtoList(List<T> entities);
@Mappings({ default Page<S> toDtoPage(Page<T> entities) {
@Mapping(target = "total", expression = "java(source.getTotalElements())"), return new PageImpl<>(toDtoList(entities.getContent()), entities.getPageable(), entities.getTotalPages());
@Mapping(target = "page", expression = "java(source.getNumber())"), }
@Mapping(target = "pageSize", expression = "java(source.getSize())"),
@Mapping(target = "items", expression = "java(toDtoList(source.getContent()))")
})
Result<S> toResult(Page<T> source);
} }
...@@ -9,13 +9,13 @@ import jakarta.persistence.EntityNotFoundException; ...@@ -9,13 +9,13 @@ import jakarta.persistence.EntityNotFoundException;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.PositiveOrZero; import jakarta.validation.constraints.PositiveOrZero;
import org.fuseri.model.dto.common.Result;
import org.fuseri.model.dto.course.CourseDto; import org.fuseri.model.dto.course.CourseDto;
import org.fuseri.model.dto.user.UserAddLanguageDto; import org.fuseri.model.dto.user.UserAddLanguageDto;
import org.fuseri.model.dto.user.UserCreateDto; import org.fuseri.model.dto.user.UserCreateDto;
import org.fuseri.model.dto.user.UserDto; import org.fuseri.model.dto.user.UserDto;
import org.fuseri.model.dto.user.UserLoginDto; import org.fuseri.model.dto.user.UserLoginDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -91,8 +91,9 @@ public class UserController { ...@@ -91,8 +91,9 @@ public class UserController {
@ApiResponse(responseCode = "400", description = "Invalid page number supplied"), @ApiResponse(responseCode = "400", description = "Invalid page number supplied"),
}) })
@GetMapping @GetMapping
public ResponseEntity<Result<UserDto>> findAll(@PositiveOrZero @RequestParam int page) { public ResponseEntity<Page<UserDto>> findAll(@PositiveOrZero @NotNull @RequestParam int page) {
return ResponseEntity.ok(facade.findAll(page)); var a = facade.findAll(page);
return ResponseEntity.ok(a);
} }
//TODO: add authentication M3? //TODO: add authentication M3?
...@@ -107,7 +108,6 @@ public class UserController { ...@@ -107,7 +108,6 @@ public class UserController {
return ResponseEntity.ok("user has logged out"); return ResponseEntity.ok("user has logged out");
} }
@Operation(summary = "get finished courses", description = "retrieves finished courses of user with given Id") @Operation(summary = "get finished courses", description = "retrieves finished courses of user with given Id")
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Successfully retrieved finished courses"), @ApiResponse(responseCode = "200", description = "Successfully retrieved finished courses"),
......
package org.fuseri.modulelanguageschool.user; package org.fuseri.modulelanguageschool.user;
import org.fuseri.model.dto.common.Result;
import org.fuseri.model.dto.course.CourseDto; import org.fuseri.model.dto.course.CourseDto;
import org.fuseri.model.dto.user.UserAddLanguageDto; import org.fuseri.model.dto.user.UserAddLanguageDto;
import org.fuseri.model.dto.user.UserCreateDto; import org.fuseri.model.dto.user.UserCreateDto;
import org.fuseri.model.dto.user.UserDto; import org.fuseri.model.dto.user.UserDto;
import org.fuseri.modulelanguageschool.common.DomainService;
import org.fuseri.modulelanguageschool.course.CourseMapper; import org.fuseri.modulelanguageschool.course.CourseMapper;
import org.fuseri.modulelanguageschool.course.Language; import org.fuseri.modulelanguageschool.course.Language;
import org.fuseri.modulelanguageschool.course.ProficiencyLevel; import org.fuseri.modulelanguageschool.course.ProficiencyLevel;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -51,8 +53,9 @@ public class UserFacade { ...@@ -51,8 +53,9 @@ public class UserFacade {
} }
public Result<UserDto> findAll(int page) { public Page<UserDto> findAll(int page) {
return mapper.toResult(service.findAll(page)); PageRequest pageRequest = PageRequest.of(page, DomainService.DEFAULT_PAGE_SIZE);
return mapper.toDtoPage(service.findAll(pageRequest));
} }
public UserDto addLanguage(Long id, UserAddLanguageDto body) { public UserDto addLanguage(Long id, UserAddLanguageDto body) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment