From face654aa53538bdd4a53490f0ad615aaa77df27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oskar=20Rasie=C5=84ski?= Date: Fri, 16 Jan 2026 19:11:48 +0100 Subject: [PATCH] Made delete() return a deepcopy of recipe. --- .../java/server/service/RecipeService.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/server/service/RecipeService.java b/server/src/main/java/server/service/RecipeService.java index ef219a5..a76c5bb 100644 --- a/server/src/main/java/server/service/RecipeService.java +++ b/server/src/main/java/server/service/RecipeService.java @@ -75,11 +75,28 @@ public class RecipeService { return Optional.of(saveWithDependencies(recipe)); } - public boolean delete(Long id) { + /** + * Deletes a recipe by id and returns the deleted object. + * @param id id of the recipe to delete. + * @return The deleted recipe (deep copy). + */ + public Optional delete(Long id) { // TODO: Propagate deletion to ingredients. - if (!recipeRepository.existsById(id)) return false; + Optional recipe = recipeRepository.findById(id); + if (recipe.isEmpty()) return Optional.empty(); + + // Make deep copy before removal. ( Had some lazy loading issues otherwise ) + Recipe r = recipe.get(); + Recipe copy = new Recipe( + r.getId(), + r.getName(), + r.getLocale(), + List.copyOf(r.getIngredients()), + List.copyOf(r.getPreparationSteps()) + ); + recipeRepository.deleteById(id); - return true; + return Optional.of(copy); } private Recipe saveWithDependencies(Recipe recipe) {