11package com .xpeho .spring_boot_java_random_user .data .services ;
22
33import com .xpeho .spring_boot_java_random_user .data .converters .UserConverter ;
4- import com .xpeho .spring_boot_java_random_user .data .models .database .User ;
4+ import com .xpeho .spring_boot_java_random_user .data .models .database .UserDao ;
55import com .xpeho .spring_boot_java_random_user .data .sources .database .UserRepository ;
66import com .xpeho .spring_boot_java_random_user .data .sources .database .UserSpecifications ;
7+ import com .xpeho .spring_boot_java_random_user .domain .entities .PaginatedUsers ;
78import com .xpeho .spring_boot_java_random_user .domain .entities .UserEntity ;
89import com .xpeho .spring_boot_java_random_user .domain .entities .UserFilter ;
9- import com .xpeho .spring_boot_java_random_user .domain .services .LocalUserService ;
10+ import com .xpeho .spring_boot_java_random_user .domain .services .UserService ;
11+ import org .springframework .data .domain .Page ;
12+ import org .springframework .data .domain .PageRequest ;
1013import org .springframework .stereotype .Service ;
1114
1215import java .util .List ;
1316import java .util .Optional ;
1417import java .util .stream .StreamSupport ;
1518
1619@ Service
17-
18- public class UserServiceImpl implements LocalUserService {
20+ public class UserServiceImpl implements UserService {
1921 private final UserRepository userRepository ;
2022 private final UserConverter userConverter ;
2123
@@ -26,8 +28,8 @@ public UserServiceImpl(UserRepository userRepository, UserConverter userConverte
2628
2729 @ Override
2830 public List <UserEntity > saveAll (List <UserEntity > users ) {
29- List <User > daoUsers = users .stream ().map (userConverter ::toDao ).toList ();
30- Iterable <User > saved = userRepository .saveAll (daoUsers );
31+ List <UserDao > daoUsers = users .stream ().map (userConverter ::toDao ).toList ();
32+ Iterable <UserDao > saved = userRepository .saveAll (daoUsers );
3133 return StreamSupport .stream (saved .spliterator (), false )
3234 .map (userConverter ::toDomain )
3335 .toList ();
@@ -41,7 +43,7 @@ public Optional<UserEntity> getById(long id) {
4143
4244 @ Override
4345 public UserEntity save (UserEntity user ) {
44- User savedUser = userRepository .save (userConverter .toDao (user ));
46+ UserDao savedUser = userRepository .save (userConverter .toDao (user ));
4547 return userConverter .toDomain (savedUser );
4648 }
4749
@@ -51,9 +53,13 @@ public void deleteById(long id) {
5153 }
5254
5355 @ Override
54- public List <UserEntity > filterUsers (UserFilter filter ) {
55- return userRepository .findAll (UserSpecifications .byFilter (filter )).stream ()
56+ public PaginatedUsers filterUsers (UserFilter filter , int page , int size ) {
57+ PageRequest pageable = PageRequest .of (page - 1 , size );
58+ Page <UserDao > result = userRepository .findAll (UserSpecifications .byFilter (filter ), pageable );
59+ List <UserEntity > entities = result .getContent ().stream ()
5660 .map (userConverter ::toDomain )
5761 .toList ();
62+ int skip = (page - 1 ) * size ;
63+ return new PaginatedUsers (entities , (int ) result .getTotalElements (), skip , size );
5864 }
5965}
0 commit comments