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
7c2b5faa
authored
Jun 15, 2025
by
Alba María Álvarez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
perf(User): eliminado uso de DTOs en el servicio
parent
be2b6204
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
39 additions
and
29 deletions
src/main/java/com/example/apprecetas/user/application/CreateUserUseCase.java
src/main/java/com/example/apprecetas/user/application/ReadUserUseCase.java
src/main/java/com/example/apprecetas/user/application/UpdateUserUseCase.java
src/main/java/com/example/apprecetas/user/application/impl/CreateUserUseCaseImpl.java
src/main/java/com/example/apprecetas/user/application/impl/ReadUserUseCaseImpl.java
src/main/java/com/example/apprecetas/user/application/impl/UpdateUserUseCaseImpl.java
src/main/java/com/example/apprecetas/user/infrastructure/controller/CreateUserController.java
src/main/java/com/example/apprecetas/user/infrastructure/controller/ReadUserController.java
src/main/java/com/example/apprecetas/user/infrastructure/controller/UpdateUserController.java
src/main/java/com/example/apprecetas/user/application/CreateUserUseCase.java
View file @
7c2b5faa
package
com
.
example
.
apprecetas
.
user
.
application
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserInputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto
;
import
com.example.apprecetas.user.domain.entity.User
;
public
interface
CreateUserUseCase
{
User
OutputDto
create
(
UserInputDto
userInputDto
);
User
create
(
User
user
);
}
src/main/java/com/example/apprecetas/user/application/ReadUserUseCase.java
View file @
7c2b5faa
package
com
.
example
.
apprecetas
.
user
.
application
;
import
com.example.apprecetas.user.
infrastructure.controller.dto.UserOutputDto
;
import
com.example.apprecetas.user.
domain.entity.User
;
import
java.util.List
;
public
interface
ReadUserUseCase
{
User
OutputDto
readById
(
Long
id
);
User
readById
(
Long
id
);
List
<
User
OutputDto
>
readAll
();
List
<
User
>
readAll
();
}
src/main/java/com/example/apprecetas/user/application/UpdateUserUseCase.java
View file @
7c2b5faa
package
com
.
example
.
apprecetas
.
user
.
application
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserInputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto
;
import
com.example.apprecetas.user.domain.entity.User
;
public
interface
UpdateUserUseCase
{
User
OutputDto
updateById
(
Long
id
,
UserInputDto
userInputDto
);
User
updateById
(
Long
id
,
User
inputUser
);
}
src/main/java/com/example/apprecetas/user/application/impl/CreateUserUseCaseImpl.java
View file @
7c2b5faa
package
com
.
example
.
apprecetas
.
user
.
application
.
impl
;
import
com.example.apprecetas.user.application.CreateUserUseCase
;
import
com.example.apprecetas.user.domain.entity.User
;
import
com.example.apprecetas.user.domain.repository.CreateUserRepository
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserInputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto
;
import
com.example.apprecetas.user.infrastructure.mapper.UserMapper
;
import
com.example.apprecetas.user.infrastructure.repository.jpa.UserJpa
;
import
lombok.RequiredArgsConstructor
;
...
...
@@ -21,10 +20,10 @@ public class CreateUserUseCaseImpl implements CreateUserUseCase {
private
final
PasswordEncoder
passwordEncoder
;
@Override
public
User
OutputDto
create
(
UserInputDto
userInputDto
)
{
UserJpa
userJpa
=
mapper
.
mapJpa
(
mapper
.
map
(
userInputDto
)
);
public
User
create
(
User
user
)
{
UserJpa
userJpa
=
mapper
.
mapJpa
(
user
);
userJpa
.
setPassword
(
passwordEncoder
.
encode
(
userJpa
.
getPassword
()));
UserJpa
createdUser
=
repository
.
create
(
userJpa
);
return
mapper
.
map
(
mapper
.
mapJpa
(
createdUser
)
);
return
mapper
.
map
Jpa
(
createdUser
);
}
}
src/main/java/com/example/apprecetas/user/application/impl/ReadUserUseCaseImpl.java
View file @
7c2b5faa
...
...
@@ -2,8 +2,8 @@ package com.example.apprecetas.user.application.impl;
import
com.example.apprecetas.exception.EntityNotFoundException
;
import
com.example.apprecetas.user.application.ReadUserUseCase
;
import
com.example.apprecetas.user.domain.entity.User
;
import
com.example.apprecetas.user.domain.repository.ReadUserRepository
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto
;
import
com.example.apprecetas.user.infrastructure.mapper.UserMapper
;
import
com.example.apprecetas.user.infrastructure.repository.jpa.UserJpa
;
import
lombok.RequiredArgsConstructor
;
...
...
@@ -17,21 +17,20 @@ import java.util.List;
public
class
ReadUserUseCaseImpl
implements
ReadUserUseCase
{
private
final
ReadUserRepository
repository
;
private
final
UserMapper
mapper
=
Mappers
.
getMapper
(
UserMapper
.
class
);
private
final
UserMapper
mapper
=
Mappers
.
getMapper
(
UserMapper
.
class
);
@Override
public
User
OutputDto
readById
(
Long
id
)
{
public
User
readById
(
Long
id
)
{
UserJpa
userJpa
=
repository
.
readById
(
id
)
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"Usuario con id "
+
id
+
" no encontrado"
));
return
mapper
.
map
(
mapper
.
mapJpa
(
userJpa
)
);
return
mapper
.
map
Jpa
(
userJpa
);
}
@Override
public
List
<
User
OutputDto
>
readAll
()
{
public
List
<
User
>
readAll
()
{
return
repository
.
readAll
().
stream
()
.
map
(
mapper:
:
mapJpa
)
.
map
(
mapper:
:
map
)
.
toList
();
}
}
src/main/java/com/example/apprecetas/user/application/impl/UpdateUserUseCaseImpl.java
View file @
7c2b5faa
...
...
@@ -2,10 +2,9 @@ package com.example.apprecetas.user.application.impl;
import
com.example.apprecetas.exception.EntityNotFoundException
;
import
com.example.apprecetas.user.application.UpdateUserUseCase
;
import
com.example.apprecetas.user.domain.entity.User
;
import
com.example.apprecetas.user.domain.repository.ReadUserRepository
;
import
com.example.apprecetas.user.domain.repository.UpdateUserRepository
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserInputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto
;
import
com.example.apprecetas.user.infrastructure.mapper.UserMapper
;
import
com.example.apprecetas.user.infrastructure.repository.jpa.UserJpa
;
import
lombok.RequiredArgsConstructor
;
...
...
@@ -22,14 +21,14 @@ public class UpdateUserUseCaseImpl implements UpdateUserUseCase {
private
final
UserMapper
mapper
=
Mappers
.
getMapper
(
UserMapper
.
class
);
@Override
public
User
OutputDto
updateById
(
Long
id
,
UserInputDto
userInputDto
)
{
public
User
updateById
(
Long
id
,
User
inputUser
)
{
UserJpa
userJpa
=
readUserRepository
.
readById
(
id
)
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"Usuario con id "
+
id
+
" no encontrado"
));
UserJpa
user
=
mapper
.
mapJpa
(
mapper
.
map
(
userInputDto
)
);
UserJpa
user
=
mapper
.
mapJpa
(
inputUser
);
UserJpa
modifiedUser
=
updateUserRepository
.
updateById
(
id
,
user
).
get
();
return
mapper
.
map
(
mapper
.
mapJpa
(
modifiedUser
)
);
return
mapper
.
map
Jpa
(
modifiedUser
);
}
}
src/main/java/com/example/apprecetas/user/infrastructure/controller/CreateUserController.java
View file @
7c2b5faa
...
...
@@ -4,8 +4,10 @@ import com.example.apprecetas.exception.UnprocessableEntityException;
import
com.example.apprecetas.user.application.CreateUserUseCase
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserInputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto
;
import
com.example.apprecetas.user.infrastructure.mapper.UserMapper
;
import
jakarta.validation.Valid
;
import
lombok.RequiredArgsConstructor
;
import
org.mapstruct.factory.Mappers
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.annotation.PostMapping
;
...
...
@@ -23,6 +25,8 @@ public class CreateUserController {
private
final
CreateUserUseCase
service
;
private
final
UserMapper
mapper
=
Mappers
.
getMapper
(
UserMapper
.
class
);
@PostMapping
public
ResponseEntity
<
UserOutputDto
>
create
(
@Valid
@RequestBody
UserInputDto
userInputDto
,
BindingResult
result
)
{
if
(
result
.
hasErrors
())
{
...
...
@@ -33,7 +37,7 @@ public class CreateUserController {
}
try
{
URI
location
=
URI
.
create
(
"/user"
);
return
ResponseEntity
.
created
(
location
).
body
(
service
.
create
(
userInputDto
));
return
ResponseEntity
.
created
(
location
).
body
(
mapper
.
map
(
service
.
create
(
mapper
.
map
(
userInputDto
))
));
}
catch
(
Exception
e
)
{
throw
new
UnprocessableEntityException
(
"Usuario ya registrado. Cambie sus credenciales."
);
}
...
...
src/main/java/com/example/apprecetas/user/infrastructure/controller/ReadUserController.java
View file @
7c2b5faa
...
...
@@ -2,7 +2,9 @@ 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.mapper.UserMapper
;
import
lombok.RequiredArgsConstructor
;
import
org.mapstruct.factory.Mappers
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
...
...
@@ -18,16 +20,21 @@ public class ReadUserController {
private
final
ReadUserUseCase
service
;
private
final
UserMapper
mapper
=
Mappers
.
getMapper
(
UserMapper
.
class
);
@GetMapping
(
"/{id}"
)
public
ResponseEntity
<
UserOutputDto
>
readById
(
@PathVariable
Long
id
)
{
return
ResponseEntity
.
ok
().
body
(
service
.
readById
(
id
));
return
ResponseEntity
.
ok
().
body
(
mapper
.
map
(
service
.
readById
(
id
)
));
}
@GetMapping
public
ResponseEntity
<
List
<
UserOutputDto
>>
readAll
()
{
if
(
service
.
readAll
().
isEmpty
())
return
ResponseEntity
.
noContent
().
build
();
return
ResponseEntity
.
ok
().
body
(
service
.
readAll
());
return
ResponseEntity
.
ok
().
body
(
service
.
readAll
().
stream
()
.
map
(
mapper:
:
map
)
.
toList
()
);
}
}
src/main/java/com/example/apprecetas/user/infrastructure/controller/UpdateUserController.java
View file @
7c2b5faa
...
...
@@ -4,8 +4,10 @@ import com.example.apprecetas.exception.UnprocessableEntityException;
import
com.example.apprecetas.user.application.UpdateUserUseCase
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserInputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto
;
import
com.example.apprecetas.user.infrastructure.mapper.UserMapper
;
import
jakarta.validation.Valid
;
import
lombok.RequiredArgsConstructor
;
import
org.mapstruct.factory.Mappers
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -19,6 +21,8 @@ public class UpdateUserController {
private
final
UpdateUserUseCase
service
;
private
final
UserMapper
mapper
=
Mappers
.
getMapper
(
UserMapper
.
class
);
@PutMapping
(
"/{id}"
)
public
ResponseEntity
<
UserOutputDto
>
update
(
@PathVariable
Long
id
,
@Valid
@RequestBody
UserInputDto
userInputDto
,
BindingResult
result
)
{
if
(
result
.
hasErrors
())
{
...
...
@@ -27,7 +31,7 @@ public class UpdateUserController {
.
collect
(
Collectors
.
joining
(
"; "
));
throw
new
UnprocessableEntityException
(
errorMsg
);
}
return
ResponseEntity
.
ok
().
body
(
service
.
updateById
(
id
,
userInputDto
));
return
ResponseEntity
.
ok
().
body
(
mapper
.
map
(
service
.
updateById
(
id
,
mapper
.
map
(
userInputDto
))
));
}
}
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