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
be2b6204
authored
Jun 15, 2025
by
Alba María Álvarez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
perf(Recipe): eliminado uso de DTOs en el servicio
parent
f51a7bbd
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
38 additions
and
18 deletions
src/main/java/com/example/apprecetas/recipe/application/CreateRecipeUseCase.java
src/main/java/com/example/apprecetas/recipe/application/ReadRecipeUseCase.java
src/main/java/com/example/apprecetas/recipe/application/UpdateRecipeUseCase.java
src/main/java/com/example/apprecetas/recipe/application/impl/CreateRecipeUseCaseImpl.java
src/main/java/com/example/apprecetas/recipe/application/impl/ReadRecipeUseCaseImpl.java
src/main/java/com/example/apprecetas/recipe/application/impl/UpdateRecipeUseCaseImpl.java
src/main/java/com/example/apprecetas/recipe/infrastructure/controller/CreateRecipeController.java
src/main/java/com/example/apprecetas/recipe/infrastructure/controller/ReadRecipeController.java
src/main/java/com/example/apprecetas/recipe/infrastructure/controller/UpdateRecipeController.java
src/main/java/com/example/apprecetas/recipe/application/CreateRecipeUseCase.java
View file @
be2b6204
package
com
.
example
.
apprecetas
.
recipe
.
application
;
package
com
.
example
.
apprecetas
.
recipe
.
application
;
import
com.example.apprecetas.recipe.domain.entity.Recipe
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
public
interface
CreateRecipeUseCase
{
public
interface
CreateRecipeUseCase
{
Recipe
OutputDto
create
(
RecipeInputDto
recipeInputDto
);
Recipe
create
(
Recipe
recipe
);
}
}
src/main/java/com/example/apprecetas/recipe/application/ReadRecipeUseCase.java
View file @
be2b6204
package
com
.
example
.
apprecetas
.
recipe
.
application
;
package
com
.
example
.
apprecetas
.
recipe
.
application
;
import
com.example.apprecetas.recipe.domain.entity.Recipe
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
java.util.List
;
import
java.util.List
;
public
interface
ReadRecipeUseCase
{
public
interface
ReadRecipeUseCase
{
Recipe
OutputDto
readById
(
Long
id
);
Recipe
readById
(
Long
id
);
List
<
Recipe
OutputDto
>
readAll
();
List
<
Recipe
>
readAll
();
}
}
src/main/java/com/example/apprecetas/recipe/application/UpdateRecipeUseCase.java
View file @
be2b6204
package
com
.
example
.
apprecetas
.
recipe
.
application
;
package
com
.
example
.
apprecetas
.
recipe
.
application
;
import
com.example.apprecetas.recipe.domain.entity.Recipe
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
public
interface
UpdateRecipeUseCase
{
public
interface
UpdateRecipeUseCase
{
Recipe
OutputDto
update
(
Long
id
,
RecipeInputDto
recipeInputDto
);
Recipe
update
(
Long
id
,
Recipe
recipe
);
}
}
src/main/java/com/example/apprecetas/recipe/application/impl/CreateRecipeUseCaseImpl.java
View file @
be2b6204
package
com
.
example
.
apprecetas
.
recipe
.
application
.
impl
;
package
com
.
example
.
apprecetas
.
recipe
.
application
.
impl
;
import
com.example.apprecetas.recipe.application.CreateRecipeUseCase
;
import
com.example.apprecetas.recipe.application.CreateRecipeUseCase
;
import
com.example.apprecetas.recipe.domain.entity.Recipe
;
import
com.example.apprecetas.recipe.domain.repository.CreateRecipeRepository
;
import
com.example.apprecetas.recipe.domain.repository.CreateRecipeRepository
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
...
@@ -19,8 +20,8 @@ public class CreateRecipeUseCaseImpl implements CreateRecipeUseCase {
...
@@ -19,8 +20,8 @@ public class CreateRecipeUseCaseImpl implements CreateRecipeUseCase {
private
final
RecipeMapper
mapper
=
Mappers
.
getMapper
(
RecipeMapper
.
class
);
private
final
RecipeMapper
mapper
=
Mappers
.
getMapper
(
RecipeMapper
.
class
);
@Override
@Override
public
Recipe
OutputDto
create
(
RecipeInputDto
recipeInputDto
)
{
public
Recipe
create
(
Recipe
recipe
)
{
RecipeJpa
recipeJpa
=
mapper
.
mapJpa
(
mapper
.
map
(
recipeInputDto
)
);
RecipeJpa
recipeJpa
=
mapper
.
mapJpa
(
recipe
);
recipeJpa
.
getSteps
().
forEach
(
step
->
{
recipeJpa
.
getSteps
().
forEach
(
step
->
{
step
.
setRecipe
(
recipeJpa
);
step
.
setRecipe
(
recipeJpa
);
...
@@ -30,6 +31,6 @@ public class CreateRecipeUseCaseImpl implements CreateRecipeUseCase {
...
@@ -30,6 +31,6 @@ public class CreateRecipeUseCaseImpl implements CreateRecipeUseCase {
});
});
RecipeJpa
savedRecipe
=
repository
.
create
(
recipeJpa
);
RecipeJpa
savedRecipe
=
repository
.
create
(
recipeJpa
);
return
mapper
.
map
(
mapper
.
mapJpa
(
savedRecipe
)
);
return
mapper
.
map
Jpa
(
savedRecipe
);
}
}
}
}
src/main/java/com/example/apprecetas/recipe/application/impl/ReadRecipeUseCaseImpl.java
View file @
be2b6204
...
@@ -2,6 +2,7 @@ package com.example.apprecetas.recipe.application.impl;
...
@@ -2,6 +2,7 @@ package com.example.apprecetas.recipe.application.impl;
import
com.example.apprecetas.exception.EntityNotFoundException
;
import
com.example.apprecetas.exception.EntityNotFoundException
;
import
com.example.apprecetas.recipe.application.ReadRecipeUseCase
;
import
com.example.apprecetas.recipe.application.ReadRecipeUseCase
;
import
com.example.apprecetas.recipe.domain.entity.Recipe
;
import
com.example.apprecetas.recipe.domain.repository.ReadRecipeRepository
;
import
com.example.apprecetas.recipe.domain.repository.ReadRecipeRepository
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.mapper.RecipeMapper
;
import
com.example.apprecetas.recipe.infrastructure.mapper.RecipeMapper
;
...
@@ -21,17 +22,16 @@ public class ReadRecipeUseCaseImpl implements ReadRecipeUseCase {
...
@@ -21,17 +22,16 @@ public class ReadRecipeUseCaseImpl implements ReadRecipeUseCase {
private
final
RecipeMapper
mapper
=
Mappers
.
getMapper
(
RecipeMapper
.
class
);
private
final
RecipeMapper
mapper
=
Mappers
.
getMapper
(
RecipeMapper
.
class
);
@Override
@Override
public
Recipe
OutputDto
readById
(
Long
id
)
{
public
Recipe
readById
(
Long
id
)
{
RecipeJpa
recipeJpa
=
repository
.
readById
(
id
)
RecipeJpa
recipeJpa
=
repository
.
readById
(
id
)
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"La receta con id "
+
id
+
" no existe"
));
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"La receta con id "
+
id
+
" no existe"
));
return
mapper
.
map
(
mapper
.
mapJpa
(
recipeJpa
)
);
return
mapper
.
map
Jpa
(
recipeJpa
);
}
}
@Override
@Override
public
List
<
Recipe
OutputDto
>
readAll
()
{
public
List
<
Recipe
>
readAll
()
{
return
repository
.
readAll
().
stream
()
return
repository
.
readAll
().
stream
()
.
map
(
mapper:
:
mapJpa
)
.
map
(
mapper:
:
mapJpa
)
.
map
(
mapper:
:
map
)
.
toList
();
.
toList
();
}
}
}
}
src/main/java/com/example/apprecetas/recipe/application/impl/UpdateRecipeUseCaseImpl.java
View file @
be2b6204
package
com
.
example
.
apprecetas
.
recipe
.
application
.
impl
;
package
com
.
example
.
apprecetas
.
recipe
.
application
.
impl
;
import
com.example.apprecetas.recipe.application.UpdateRecipeUseCase
;
import
com.example.apprecetas.recipe.application.UpdateRecipeUseCase
;
import
com.example.apprecetas.recipe.domain.entity.Recipe
;
import
com.example.apprecetas.recipe.domain.repository.UpdateRecipeRepository
;
import
com.example.apprecetas.recipe.domain.repository.UpdateRecipeRepository
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
...
@@ -19,9 +20,9 @@ public class UpdateRecipeUseCaseImpl implements UpdateRecipeUseCase {
...
@@ -19,9 +20,9 @@ public class UpdateRecipeUseCaseImpl implements UpdateRecipeUseCase {
private
final
RecipeMapper
mapper
=
Mappers
.
getMapper
(
RecipeMapper
.
class
);
private
final
RecipeMapper
mapper
=
Mappers
.
getMapper
(
RecipeMapper
.
class
);
@Override
@Override
public
Recipe
OutputDto
update
(
Long
id
,
RecipeInputDto
recipeInputDto
)
{
public
Recipe
update
(
Long
id
,
Recipe
recipe
)
{
RecipeJpa
recipeJpa
=
mapper
.
mapJpa
(
mapper
.
map
(
recipeInputDto
)
);
RecipeJpa
recipeJpa
=
mapper
.
mapJpa
(
recipe
);
RecipeJpa
updatedRecipe
=
repository
.
upadte
(
id
,
recipeJpa
);
RecipeJpa
updatedRecipe
=
repository
.
upadte
(
id
,
recipeJpa
);
return
mapper
.
map
(
mapper
.
mapJpa
(
updatedRecipe
)
);
return
mapper
.
map
Jpa
(
updatedRecipe
);
}
}
}
}
src/main/java/com/example/apprecetas/recipe/infrastructure/controller/CreateRecipeController.java
View file @
be2b6204
...
@@ -4,8 +4,10 @@ import com.example.apprecetas.exception.UnprocessableEntityException;
...
@@ -4,8 +4,10 @@ import com.example.apprecetas.exception.UnprocessableEntityException;
import
com.example.apprecetas.recipe.application.CreateRecipeUseCase
;
import
com.example.apprecetas.recipe.application.CreateRecipeUseCase
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.mapper.RecipeMapper
;
import
jakarta.validation.Valid
;
import
jakarta.validation.Valid
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
org.mapstruct.factory.Mappers
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
...
@@ -23,6 +25,8 @@ public class CreateRecipeController {
...
@@ -23,6 +25,8 @@ public class CreateRecipeController {
private
final
CreateRecipeUseCase
service
;
private
final
CreateRecipeUseCase
service
;
private
final
RecipeMapper
mapper
=
Mappers
.
getMapper
(
RecipeMapper
.
class
);
@PostMapping
@PostMapping
public
ResponseEntity
<
RecipeOutputDto
>
create
(
@RequestBody
@Valid
RecipeInputDto
recipeInputDto
,
BindingResult
result
)
{
public
ResponseEntity
<
RecipeOutputDto
>
create
(
@RequestBody
@Valid
RecipeInputDto
recipeInputDto
,
BindingResult
result
)
{
if
(
result
.
hasErrors
())
{
if
(
result
.
hasErrors
())
{
...
@@ -32,7 +36,7 @@ public class CreateRecipeController {
...
@@ -32,7 +36,7 @@ public class CreateRecipeController {
throw
new
UnprocessableEntityException
(
errorMsg
);
throw
new
UnprocessableEntityException
(
errorMsg
);
}
}
URI
location
=
URI
.
create
(
"recipe"
);
URI
location
=
URI
.
create
(
"recipe"
);
return
ResponseEntity
.
created
(
location
).
body
(
service
.
create
(
recipeInputDto
));
return
ResponseEntity
.
created
(
location
).
body
(
mapper
.
map
(
service
.
create
(
mapper
.
map
(
recipeInputDto
))
));
}
}
}
}
src/main/java/com/example/apprecetas/recipe/infrastructure/controller/ReadRecipeController.java
View file @
be2b6204
...
@@ -2,7 +2,9 @@ package com.example.apprecetas.recipe.infrastructure.controller;
...
@@ -2,7 +2,9 @@ package com.example.apprecetas.recipe.infrastructure.controller;
import
com.example.apprecetas.recipe.application.ReadRecipeUseCase
;
import
com.example.apprecetas.recipe.application.ReadRecipeUseCase
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.mapper.RecipeMapper
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
org.mapstruct.factory.Mappers
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PathVariable
;
...
@@ -18,9 +20,11 @@ public class ReadRecipeController {
...
@@ -18,9 +20,11 @@ public class ReadRecipeController {
private
final
ReadRecipeUseCase
service
;
private
final
ReadRecipeUseCase
service
;
private
final
RecipeMapper
mapper
=
Mappers
.
getMapper
(
RecipeMapper
.
class
);
@GetMapping
(
"/{id}"
)
@GetMapping
(
"/{id}"
)
public
ResponseEntity
<
RecipeOutputDto
>
readById
(
@PathVariable
Long
id
)
{
public
ResponseEntity
<
RecipeOutputDto
>
readById
(
@PathVariable
Long
id
)
{
return
ResponseEntity
.
ok
().
body
(
service
.
readById
(
id
));
return
ResponseEntity
.
ok
().
body
(
mapper
.
map
(
service
.
readById
(
id
)
));
}
}
@GetMapping
@GetMapping
...
@@ -28,7 +32,10 @@ public class ReadRecipeController {
...
@@ -28,7 +32,10 @@ public class ReadRecipeController {
if
(
service
.
readAll
().
isEmpty
())
{
if
(
service
.
readAll
().
isEmpty
())
{
return
ResponseEntity
.
noContent
().
build
();
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/recipe/infrastructure/controller/UpdateRecipeController.java
View file @
be2b6204
...
@@ -4,8 +4,10 @@ import com.example.apprecetas.exception.UnprocessableEntityException;
...
@@ -4,8 +4,10 @@ import com.example.apprecetas.exception.UnprocessableEntityException;
import
com.example.apprecetas.recipe.application.UpdateRecipeUseCase
;
import
com.example.apprecetas.recipe.application.UpdateRecipeUseCase
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.input.RecipeInputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.controller.dto.output.RecipeOutputDto
;
import
com.example.apprecetas.recipe.infrastructure.mapper.RecipeMapper
;
import
jakarta.validation.Valid
;
import
jakarta.validation.Valid
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
org.mapstruct.factory.Mappers
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
...
@@ -19,6 +21,8 @@ public class UpdateRecipeController {
...
@@ -19,6 +21,8 @@ public class UpdateRecipeController {
private
final
UpdateRecipeUseCase
service
;
private
final
UpdateRecipeUseCase
service
;
private
final
RecipeMapper
mapper
=
Mappers
.
getMapper
(
RecipeMapper
.
class
);
@PutMapping
(
"/{id}"
)
@PutMapping
(
"/{id}"
)
public
ResponseEntity
<
RecipeOutputDto
>
update
(
@PathVariable
Long
id
,
@RequestBody
@Valid
RecipeInputDto
recipeInputDto
,
BindingResult
result
)
{
public
ResponseEntity
<
RecipeOutputDto
>
update
(
@PathVariable
Long
id
,
@RequestBody
@Valid
RecipeInputDto
recipeInputDto
,
BindingResult
result
)
{
if
(
result
.
hasErrors
())
{
if
(
result
.
hasErrors
())
{
...
@@ -27,6 +31,6 @@ public class UpdateRecipeController {
...
@@ -27,6 +31,6 @@ public class UpdateRecipeController {
.
collect
(
Collectors
.
joining
(
";"
));
.
collect
(
Collectors
.
joining
(
";"
));
throw
new
UnprocessableEntityException
(
errorMsg
);
throw
new
UnprocessableEntityException
(
errorMsg
);
}
}
return
ResponseEntity
.
ok
().
body
(
service
.
update
(
id
,
recipeInputDto
));
return
ResponseEntity
.
ok
().
body
(
mapper
.
map
(
service
.
update
(
id
,
mapper
.
map
(
recipeInputDto
))
));
}
}
}
}
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