diff --git a/backend/src/main/java/com/example/todoapp/config/InitTables.java b/backend/src/main/java/com/example/todoapp/config/InitTables.java index 10bfa66..e55565e 100644 --- a/backend/src/main/java/com/example/todoapp/config/InitTables.java +++ b/backend/src/main/java/com/example/todoapp/config/InitTables.java @@ -36,98 +36,101 @@ public class InitTables { @Autowired private RecipesRepository recipesRepository; @Autowired - private RecipeStuffsRepository RecipeStuffsRepository; + private RecipeStuffsRepository recipeStuffsRepository; @Autowired private StuffsRepository stuffsRepository; @PostConstruct public void initTables() { - // tobuysRepository.deleteAll(); //データを残す場合はコメントアウト - // stocksRepository.deleteAll(); //データを残す場合はコメントアウト - // recipeStuffsRepository.deleteAll(); //データを残す場合はコメントアウト - // recipesRepository.deleteAll(); //データを残す場合はコメントアウト - // stuffsRepository.deleteAll(); //データを残す場合はコメントアウト + tobuysRepository.deleteAll(); //データを残す場合はコメントアウト + stocksRepository.deleteAll(); //データを残す場合はコメントアウト + recipeStuffsRepository.deleteAll(); //データを残す場合はコメントアウト + recipesRepository.deleteAll(); //データを残す場合はコメントアウト + stuffsRepository.deleteAll(); //データを残す場合はコメントアウト if (stuffsRepository.count() > 0) { - return; // すでにデータが存在する場合は何もしない + // すでにデータが存在する場合は何もしない } else { - setNewStuff(1L, "牛乳", null, "乳製品"); - setNewStuff(2L, "ヨーグルト", null, "乳製品"); - setNewStuff(3L, "チーズ", null, "乳製品"); - setNewStuff(4L, "バター", null, "乳製品"); - setNewStuff(5L, "生クリーム", null, "乳製品"); - - setNewStuff(6L, "鮭", null, "魚・肉"); - setNewStuff(7L, "鶏むね肉", null, "魚・肉"); - setNewStuff(8L, "豚バラ肉", null, "魚・肉"); - setNewStuff(9L, "牛ひき肉", null, "魚・肉"); - setNewStuff(10L, "まぐろ", null, "魚・肉"); - - setNewStuff(11L, "にんじん", null, "野菜"); - setNewStuff(12L, "キャベツ", null, "野菜"); - setNewStuff(13L, "ほうれん草", null, "野菜"); - setNewStuff(14L, "玉ねぎ", null, "野菜"); - setNewStuff(15L, "ピーマン", null, "野菜"); - setNewStuff(16L, "じゃがいも", null, "野菜"); + setNewStuff("牛乳", null, "乳製品"); + setNewStuff("ヨーグルト", null, "乳製品"); + setNewStuff("チーズ", null, "乳製品"); + setNewStuff("バター", null, "乳製品"); + setNewStuff("生クリーム", null, "乳製品"); + + setNewStuff("鮭", null, "魚・肉"); + setNewStuff("鶏むね肉", null, "魚・肉"); + setNewStuff("豚バラ肉", null, "魚・肉"); + setNewStuff("牛ひき肉", null, "魚・肉"); + setNewStuff("まぐろ", null, "魚・肉"); + + setNewStuff("にんじん", null, "野菜"); + setNewStuff("キャベツ", null, "野菜"); + setNewStuff("ほうれん草", null, "野菜"); + setNewStuff("玉ねぎ", null, "野菜"); + setNewStuff("ピーマン", null, "野菜"); + setNewStuff("じゃがいも", null, "野菜"); - setNewStuff(17L, "醤油", null, "調味料"); - setNewStuff(18L, "味噌", null, "調味料"); - setNewStuff(19L, "塩", null, "調味料"); - setNewStuff(20L, "砂糖", null, "調味料"); - setNewStuff(21L, "酢", null, "調味料"); - - setNewStuff(22L, "米", null, "その他"); - setNewStuff(23L, "パスタ", null, "その他"); - setNewStuff(24L, "小麦粉", null, "その他"); - setNewStuff(25L, "卵", null, "その他"); - setNewStuff(26L, "豆腐", null, "その他"); + setNewStuff("醤油", null, "調味料"); + setNewStuff("味噌", null, "調味料"); + setNewStuff("塩", null, "調味料"); + setNewStuff("砂糖", null, "調味料"); + setNewStuff("酢", null, "調味料"); + + setNewStuff("米", null, "その他"); + setNewStuff("パスタ", null, "その他"); + setNewStuff("小麦粉", null, "その他"); + setNewStuff("卵", null, "その他"); + setNewStuff("豆腐", null, "その他"); } - if (stuffsRepository.count() > 0) { - return; // すでにデータが存在する場合は何もしない + if (recipeStuffsRepository.count() > 0) { + // すでにデータが存在する場合は何もしない } else { - setNewRecipe(1L, "鮭のムニエル", "鮭を小麦粉で焼いた料理"); - setNewRecipe(2L, "カレー", "野菜と肉を煮込んだカレー"); - } - - if (recipesRepository.count() > 0) { - return; // すでにデータが存在する場合は何もしない - } else { - setNewRecipeStuffs(1L, recipesRepository.findById(1L).orElse(null), 6L, 1); // 鮭 - setNewRecipeStuffs(3L, recipesRepository.findById(1L).orElse(null), 17L, 10); // 醤油 - setNewRecipeStuffs(2L, recipesRepository.findById(1L).orElse(null), 24L, 50); // 小麦粉 - setNewRecipeStuffs(4L, recipesRepository.findById(2L).orElse(null), 11L, 1); // にんじん - setNewRecipeStuffs(5L, recipesRepository.findById(2L).orElse(null), 16L, 1); // じゃがいも - setNewRecipeStuffs(6L, recipesRepository.findById(2L).orElse(null), 9L, 100); // 牛ひき肉 + Recipes recipe1 = new Recipes(); + // recipe1.setRecipeId(1L); + recipe1.setRecipeName("鮭のムニエル"); + recipe1.setSummary("鮭を小麦粉で焼いた料理"); + recipesRepository.save(recipe1); + + Recipes recipe2 = new Recipes(); + recipe2.setRecipeName("カレー"); + recipe2.setSummary("野菜と肉を煮込んだカレー"); + recipesRepository.save(recipe2); + + setNewRecipeStuffs(recipe1, stuffsRepository.findByStuffName("鮭").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: 鮭")), 1); // 鮭 + setNewRecipeStuffs(recipe1, stuffsRepository.findByStuffName("小麦粉").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: 小麦粉")), 50); // 小麦粉 + setNewRecipeStuffs(recipe1, stuffsRepository.findByStuffName("バター").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: バター")), 10); // バター + setNewRecipeStuffs(recipe2, stuffsRepository.findByStuffName("にんじん").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: にんじん")), 1); // にんじん + setNewRecipeStuffs(recipe2, stuffsRepository.findByStuffName("じゃがいも").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: じゃがいも")), 1); // じゃがいも + setNewRecipeStuffs(recipe2, stuffsRepository.findByStuffName("牛ひき肉").orElseThrow(() -> new IllegalArgumentException("Stuff not found for name: 牛ひき肉")), 100); // 牛ひき肉 } } - private void setNewStuff(Long stuffId, String stuffName, String summary, String category) { + private void setNewStuff(String stuffName, String summary, String category) { Stuffs stuff = new Stuffs(); - stuff.setStuffId(stuffId); stuff.setStuffName(stuffName); stuff.setSummary(summary); stuff.setCategory(category); stuffsRepository.save(stuff); } - private void setNewRecipe(Long recipeId, String recipeName, String summary) { - Recipes recipe = new Recipes(); - recipe.setRecipeId(recipeId); - recipe.setRecipeName(recipeName); - recipe.setSummary(summary); - } + // private void setNewRecipe(Long recipeId, String recipeName, String summary) { + // Recipes recipe = new Recipes(); + // recipe.setRecipeId(recipeId); + // recipe.setRecipeName(recipeName); + // recipe.setSummary(summary); + // recipesRepository.save(recipe); + // } - private void setNewRecipeStuffs(Long recipeStuffsId, Recipes recipe, Long stuffId, int amount) { + private void setNewRecipeStuffs(Recipes recipe, Stuffs stuff, int amount) { RecipeStuffs recipeStuff = new RecipeStuffs(); - recipeStuff.setRecipeStuffsId(recipeStuffsId); recipeStuff.setRecipes(recipe); - recipeStuff.setRecipeStuffsId(stuffId); + recipeStuff.setStuff(stuff); recipeStuff.setAmount(amount); - RecipeStuffsRepository.save(recipeStuff); + recipeStuffsRepository.save(recipeStuff); } } diff --git a/backend/src/main/java/com/example/todoapp/model/Recipes.java b/backend/src/main/java/com/example/todoapp/model/Recipes.java index 35a9b36..ebe5f7e 100644 --- a/backend/src/main/java/com/example/todoapp/model/Recipes.java +++ b/backend/src/main/java/com/example/todoapp/model/Recipes.java @@ -36,7 +36,7 @@ public class Recipes { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="recipeId") - private Long recipeId ; + private Long recipeId; /** * カテゴリ名 @@ -51,4 +51,5 @@ public class Recipes { @Column (columnDefinition = "TEXT") private String summary; + } \ No newline at end of file diff --git a/backend/src/main/java/com/example/todoapp/repository/RecipeStuffsRepository.java b/backend/src/main/java/com/example/todoapp/repository/RecipeStuffsRepository.java index cbbb485..4c0609d 100644 --- a/backend/src/main/java/com/example/todoapp/repository/RecipeStuffsRepository.java +++ b/backend/src/main/java/com/example/todoapp/repository/RecipeStuffsRepository.java @@ -32,6 +32,3 @@ public interface RecipeStuffsRepository extends JpaRepository findByRecipesRecipeIdAndStuffStuffId(Long recipeId, Long stuffId); } - - - diff --git a/backend/src/main/java/com/example/todoapp/repository/RecipesRepository.java b/backend/src/main/java/com/example/todoapp/repository/RecipesRepository.java index f1a039c..565ac21 100644 --- a/backend/src/main/java/com/example/todoapp/repository/RecipesRepository.java +++ b/backend/src/main/java/com/example/todoapp/repository/RecipesRepository.java @@ -3,6 +3,7 @@ package com.example.todoapp.repository; import org.springframework.data.jpa.repository.JpaRepository; import com.example.todoapp.model.Recipes; +import java.util.Optional; /** * レシピエンティティのリポジトリインターフェース @@ -11,4 +12,11 @@ import com.example.todoapp.model.Recipes; * Spring Data JPAによって自動的に実装されます。 *

*/ -public interface RecipesRepository extends JpaRepository {} +public interface RecipesRepository extends JpaRepository { + /** + * レシピIDでレシピを検索する + * @param recipeId + * @return Recipes オブジェクトのOptional + */ + Optional findByRecipeId(Long recipeId); +} diff --git a/backend/src/main/java/com/example/todoapp/service/RecipeService.java b/backend/src/main/java/com/example/todoapp/service/RecipeService.java index 194d48c..c2a6a41 100644 --- a/backend/src/main/java/com/example/todoapp/service/RecipeService.java +++ b/backend/src/main/java/com/example/todoapp/service/RecipeService.java @@ -47,7 +47,7 @@ public class RecipeService { private StuffsRepository stuffsRepository; @Autowired - private RecipeStuffsRepository RecipeStuffsRepository; + private RecipeStuffsRepository recipeStuffsRepository; /** * レシピを新規登録する @@ -89,7 +89,7 @@ public class RecipeService { recipeStuffsList.add(recipeStuffs); } - RecipeStuffsRepository.saveAll(recipeStuffsList); + recipeStuffsRepository.saveAll(recipeStuffsList); return recipe; } @@ -113,7 +113,7 @@ public class RecipeService { Recipes recipe = recipesRepository.findById(recipeId) .orElseThrow(() -> new RuntimeException("レシピが見つかりません")); - List recipeStuffsList = RecipeStuffsRepository.findByRecipesRecipeId(recipeId); + List recipeStuffsList = recipeStuffsRepository.findByRecipesRecipeId(recipeId); List stuffList = recipeStuffsList.stream() .map(rs -> { @@ -170,19 +170,19 @@ public class RecipeService { rs.setRecipes(recipe); rs.setStuff(newStuff); rs.setAmount(stuffDTO.getAmount()); - RecipeStuffsRepository.save(rs); + recipeStuffsRepository.save(rs); incomingStuffIds.add(newStuff.getStuffId()); } else { // 材料IDが提供されている場合、既存のRecipeStuffsエントリを検索 - Optional optionalRs = RecipeStuffsRepository + Optional optionalRs = recipeStuffsRepository .findByRecipesRecipeIdAndStuffStuffId(dto.getRecipeId(), stuffDTO.getStuffId()); if (optionalRs.isPresent()) { // RecipeStuffsエントリが存在する場合、数量を更新 RecipeStuffs rs = optionalRs.get(); rs.setAmount(stuffDTO.getAmount()); - RecipeStuffsRepository.save(rs); + recipeStuffsRepository.save(rs); incomingStuffIds.add(rs.getStuff().getStuffId()); } else { // オプション:見つからない場合、新しいRecipeStuffsエントリを作成 @@ -193,17 +193,17 @@ public class RecipeService { rs.setRecipes(recipe); rs.setStuff(existingStuff); rs.setAmount(stuffDTO.getAmount()); - RecipeStuffsRepository.save(rs); + recipeStuffsRepository.save(rs); incomingStuffIds.add(existingStuff.getStuffId()); } } } // 入ってきたリストにないRecipeStuffsエントリを削除 - List existingStuffs = RecipeStuffsRepository.findByRecipesRecipeId(dto.getRecipeId()); + List existingStuffs = recipeStuffsRepository.findByRecipesRecipeId(dto.getRecipeId()); for (RecipeStuffs rs : existingStuffs) { if (!incomingStuffIds.contains(rs.getStuff().getStuffId())) { - RecipeStuffsRepository.delete(rs); + recipeStuffsRepository.delete(rs); } }