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
8fbc388b
authored
Apr 26, 2025
by
Alba María Álvarez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
feat(UpdateUser): implementada funcionalidad para actualizar usuarios
parent
fd50d66b
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
120 additions
and
0 deletions
src/main/java/com/example/apprecetas/user/application/UpdateUserUseCase.java
src/main/java/com/example/apprecetas/user/application/impl/UpdateUserUseCaseImpl.java
src/main/java/com/example/apprecetas/user/domain/repository/UpdateUserRepository.java
src/main/java/com/example/apprecetas/user/infrastructure/controller/UpdateUserController.java
src/main/java/com/example/apprecetas/user/infrastructure/repository/impl/UpdateUserRepositoryImpl.java
src/main/java/com/example/apprecetas/user/application/UpdateUserUseCase.java
0 → 100644
View file @
8fbc388b
package
com
.
example
.
apprecetas
.
user
.
application
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserInputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto
;
public
interface
UpdateUserUseCase
{
UserOutputDto
updateById
(
Long
id
,
UserInputDto
userInputDto
);
}
src/main/java/com/example/apprecetas/user/application/impl/UpdateUserUseCaseImpl.java
0 → 100644
View file @
8fbc388b
package
com
.
example
.
apprecetas
.
user
.
application
.
impl
;
import
com.example.apprecetas.exceptions.EntityNotFoundException
;
import
com.example.apprecetas.user.application.UpdateUserUseCase
;
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
;
import
org.mapstruct.factory.Mappers
;
import
org.springframework.stereotype.Service
;
@Service
@RequiredArgsConstructor
public
class
UpdateUserUseCaseImpl
implements
UpdateUserUseCase
{
private
final
UpdateUserRepository
updateUserRepository
;
private
final
ReadUserRepository
readUserRepository
;
private
final
UserMapper
mapper
=
Mappers
.
getMapper
(
UserMapper
.
class
);
@Override
public
UserOutputDto
updateById
(
Long
id
,
UserInputDto
userInputDto
)
{
UserJpa
userJpa
=
readUserRepository
.
readById
(
id
)
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"Usuario con id "
+
id
+
" no encontrado"
));
UserJpa
user
=
mapper
.
mapJpa
(
mapper
.
map
(
userInputDto
));
UserJpa
modifiedUser
=
updateUserRepository
.
updateById
(
id
,
user
).
get
();
return
mapper
.
map
(
mapper
.
mapJpa
(
modifiedUser
));
}
}
src/main/java/com/example/apprecetas/user/domain/repository/UpdateUserRepository.java
0 → 100644
View file @
8fbc388b
package
com
.
example
.
apprecetas
.
user
.
domain
.
repository
;
import
com.example.apprecetas.user.infrastructure.repository.jpa.UserJpa
;
import
java.util.Optional
;
public
interface
UpdateUserRepository
{
Optional
<
UserJpa
>
updateById
(
Long
id
,
UserJpa
userJpa
);
}
src/main/java/com/example/apprecetas/user/infrastructure/controller/UpdateUserController.java
0 → 100644
View file @
8fbc388b
package
com
.
example
.
apprecetas
.
user
.
infrastructure
.
controller
;
import
com.example.apprecetas.exceptions.UnvalidInputEntityException
;
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
jakarta.validation.Valid
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.stream.Collectors
;
@RestController
@RequestMapping
(
"/user"
)
@RequiredArgsConstructor
public
class
UpdateUserController
{
private
final
UpdateUserUseCase
service
;
@PutMapping
(
"/{id}"
)
public
ResponseEntity
<
UserOutputDto
>
update
(
@PathVariable
Long
id
,
@Valid
@RequestBody
UserInputDto
userInputDto
,
BindingResult
result
)
{
if
(
result
.
hasErrors
())
{
String
errorMsg
=
result
.
getFieldErrors
().
stream
()
.
map
(
fieldError
->
fieldError
.
getField
()
+
": "
+
fieldError
.
getDefaultMessage
())
.
collect
(
Collectors
.
joining
(
"; "
));
throw
new
UnvalidInputEntityException
(
errorMsg
);
}
return
ResponseEntity
.
ok
().
body
(
service
.
updateById
(
id
,
userInputDto
));
}
}
src/main/java/com/example/apprecetas/user/infrastructure/repository/impl/UpdateUserRepositoryImpl.java
0 → 100644
View file @
8fbc388b
package
com
.
example
.
apprecetas
.
user
.
infrastructure
.
repository
.
impl
;
import
com.example.apprecetas.user.domain.repository.UpdateUserRepository
;
import
com.example.apprecetas.user.infrastructure.repository.jpa.UserJpa
;
import
com.example.apprecetas.user.infrastructure.repository.jpa.UserRepositoryJpa
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Repository
;
import
java.util.Optional
;
@Repository
@RequiredArgsConstructor
public
class
UpdateUserRepositoryImpl
implements
UpdateUserRepository
{
private
final
UserRepositoryJpa
repositoryJpa
;
@Override
public
Optional
<
UserJpa
>
updateById
(
Long
id
,
UserJpa
userJpa
)
{
Optional
<
UserJpa
>
userJpaOptional
=
repositoryJpa
.
findById
(
id
);
userJpaOptional
.
ifPresent
(
jpa
->
{
jpa
.
setId
(
id
);
jpa
.
setName
(
userJpa
.
getName
());
jpa
.
setSurname
(
userJpa
.
getSurname
());
jpa
.
setEmail
(
userJpa
.
getEmail
());
jpa
.
setPassword
(
userJpa
.
getPassword
());
});
return
userJpaOptional
.
map
(
repositoryJpa:
:
save
);
}
}
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