Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Alba María Álvarez
/
AppRecetas
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
63c24fab
authored
Aug 30, 2025
by
Alba María Álvarez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
feat(user): implementada paginación y ordenación en la función readAll
parent
bc5f730a
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
40 additions
and
24 deletions
src/main/java/com/example/apprecetas/user/application/ReadUserUseCase.java
src/main/java/com/example/apprecetas/user/application/impl/ReadUserUseCaseImpl.java
src/main/java/com/example/apprecetas/user/domain/repository/ReadUserRepository.java
src/main/java/com/example/apprecetas/user/infrastructure/controller/ReadUserController.java
src/main/java/com/example/apprecetas/user/infrastructure/repository/impl/ReadUserRepositoryImpl.java
src/main/java/com/example/apprecetas/user/application/ReadUserUseCase.java
View file @
63c24fab
package
com
.
example
.
apprecetas
.
user
.
application
;
import
com.example.apprecetas.user.domain.entity.User
;
import
java.util.List
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
public
interface
ReadUserUseCase
{
...
...
@@ -10,6 +10,6 @@ public interface ReadUserUseCase {
User
readByEmail
(
String
email
);
List
<
User
>
readAll
(
);
Page
<
User
>
readAll
(
Pageable
pageable
);
}
src/main/java/com/example/apprecetas/user/application/impl/ReadUserUseCaseImpl.java
View file @
63c24fab
...
...
@@ -8,10 +8,10 @@ import com.example.apprecetas.user.infrastructure.mapper.UserMapper;
import
com.example.apprecetas.user.infrastructure.repository.mongodb.UserDocument
;
import
lombok.RequiredArgsConstructor
;
import
org.mapstruct.factory.Mappers
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
@RequiredArgsConstructor
public
class
ReadUserUseCaseImpl
implements
ReadUserUseCase
{
...
...
@@ -34,9 +34,8 @@ public class ReadUserUseCaseImpl implements ReadUserUseCase {
}
@Override
public
List
<
User
>
readAll
()
{
return
repository
.
readAll
().
stream
()
.
map
(
mapper:
:
mapDocument
)
.
toList
();
public
Page
<
User
>
readAll
(
Pageable
pageable
)
{
return
repository
.
readAll
(
pageable
)
.
map
(
mapper:
:
mapDocument
);
}
}
src/main/java/com/example/apprecetas/user/domain/repository/ReadUserRepository.java
View file @
63c24fab
package
com
.
example
.
apprecetas
.
user
.
domain
.
repository
;
import
com.example.apprecetas.user.infrastructure.repository.mongodb.UserDocument
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
java.util.List
;
import
java.util.Optional
;
public
interface
ReadUserRepository
{
...
...
@@ -11,6 +12,6 @@ public interface ReadUserRepository {
Optional
<
UserDocument
>
readByEmail
(
String
email
);
List
<
UserDocument
>
readAll
(
);
Page
<
UserDocument
>
readAll
(
Pageable
pageable
);
}
src/main/java/com/example/apprecetas/user/infrastructure/controller/ReadUserController.java
View file @
63c24fab
package
com
.
example
.
apprecetas
.
user
.
infrastructure
.
controller
;
import
com.example.apprecetas.user.application.ReadUserUseCase
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.
output.
UserOutputDto
;
import
com.example.apprecetas.user.infrastructure.mapper.UserMapper
;
import
lombok.RequiredArgsConstructor
;
import
org.mapstruct.factory.Mappers
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
@RestController
@RequestMapping
(
"/user"
)
@RequiredArgsConstructor
...
...
@@ -29,13 +32,25 @@ public class ReadUserController {
}
@GetMapping
public
ResponseEntity
<
List
<
UserOutputDto
>>
readAll
()
{
if
(
service
.
readAll
().
isEmpty
())
return
ResponseEntity
.
noContent
().
build
();
return
ResponseEntity
.
ok
().
body
(
service
.
readAll
().
stream
()
.
map
(
mapper:
:
map
)
.
toList
()
);
public
ResponseEntity
<
Page
<
UserOutputDto
>>
readAll
(
@RequestParam
(
required
=
false
,
defaultValue
=
"0"
)
int
page
,
@RequestParam
(
required
=
false
,
defaultValue
=
"5"
)
int
size
,
@RequestParam
(
required
=
false
)
String
sortBy
,
@RequestParam
(
required
=
false
,
defaultValue
=
"ASC"
)
String
sortDirection
)
{
// Si no se proporciona un campo para ordenar, solo la paginación
if
(
sortBy
==
null
||
sortBy
.
isEmpty
())
{
Pageable
pageable
=
PageRequest
.
of
(
page
,
size
);
Page
<
UserOutputDto
>
dtoPage
=
service
.
readAll
(
pageable
).
map
(
mapper:
:
map
);
return
ResponseEntity
.
ok
().
body
(
dtoPage
);
}
// Crea la dirección de ordenación a partir del parámetro
Sort
.
Direction
direction
=
Sort
.
Direction
.
fromString
(
sortDirection
);
// Crea el objeto de paginación y ordenación
Pageable
pageable
=
PageRequest
.
of
(
page
,
size
,
Sort
.
by
(
direction
,
sortBy
));
Page
<
UserOutputDto
>
dtoPage
=
service
.
readAll
(
pageable
).
map
(
mapper:
:
map
);
return
ResponseEntity
.
ok
().
body
(
dtoPage
);
}
}
src/main/java/com/example/apprecetas/user/infrastructure/repository/impl/ReadUserRepositoryImpl.java
View file @
63c24fab
...
...
@@ -4,9 +4,10 @@ import com.example.apprecetas.user.domain.repository.ReadUserRepository;
import
com.example.apprecetas.user.infrastructure.repository.mongodb.UserDocument
;
import
com.example.apprecetas.user.infrastructure.repository.mongodb.UserRepository
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.Optional
;
@Repository
...
...
@@ -26,7 +27,7 @@ public class ReadUserRepositoryImpl implements ReadUserRepository {
}
@Override
public
List
<
UserDocument
>
readAll
(
)
{
return
userRepository
.
findAll
();
public
Page
<
UserDocument
>
readAll
(
Pageable
pageable
)
{
return
userRepository
.
findAll
(
pageable
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment