From 5a85ea5dbc973e4ff52649c90a4bb43edb7d41ef Mon Sep 17 00:00:00 2001
From: "masato.fujita"
Date: Thu, 12 Jun 2025 09:51:17 +0900
Subject: [PATCH 1/4] =?UTF-8?q?API=E3=81=A8=E3=81=AE=E7=B5=B1=E5=90=88(?=
=?UTF-8?q?=E4=B8=8D=E5=85=B7=E5=90=88=E3=81=82=E3=82=8A)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../example/todoapp/config/InitTables.java | 10 ++--
frontend/src/pages/DishList.tsx | 47 +++++++++++--------
2 files changed, 33 insertions(+), 24 deletions(-)
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 413f9f2..12eb13b 100644
--- a/backend/src/main/java/com/example/todoapp/config/InitTables.java
+++ b/backend/src/main/java/com/example/todoapp/config/InitTables.java
@@ -43,11 +43,11 @@ public class InitTables {
@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; // すでにデータが存在する場合は何もしない
diff --git a/frontend/src/pages/DishList.tsx b/frontend/src/pages/DishList.tsx
index 2202f23..f30216f 100644
--- a/frontend/src/pages/DishList.tsx
+++ b/frontend/src/pages/DishList.tsx
@@ -1,6 +1,6 @@
import React, { useState, useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
-import { toBuyApi } from '../services/api';
+import { toBuyApi, recipeApi } from '../services/api';
import {
Container,
Typography,
@@ -44,21 +44,29 @@ const DishList: React.FC = () => {
const test = [1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1];
// APIができるまでのテスト用の型
interface Dish {
- id:number,
- name:string,
- amount:number
+ recipeId: number,
+ recipeName: string,
+ summary: number
}
+
// APIができるまでの食材配列
const testdish : Dish[] = [
- { id: 1, name: 'ジャガイモ', amount:1 },
- { id: 2, name: '人参', amount:2 },
- { id: 3, name: '人参', amount:2 },
- { id: 4, name: '人参', amount:2 }
+ { recipeId: 1, recipeName: 'ジャガイモ', summary:1 },
+ { recipeId: 2, recipeName: '人参', summary:2 },
+ { recipeId: 3, recipeName: '人参', summary:2 },
+ { recipeId: 4, recipeName: '人参', summary:2 }
];
+ // interface testdish {
+ // recipeId: number,
+ // recipeName: string,
+ // summary: number
+ // }
+
+ // すべての料理リスト
+ const [allDish, setAllDish] = useState();
// 画面表示用の食材情報配列
const [testDishArray, setTestDishArray] = useState(testdish);
-
// エラーメッセージの状態管理
const [error, setError] = useState(false);
// 選択した料理の情報を表示するダイアログの表示状態
@@ -112,9 +120,10 @@ const DishList: React.FC = () => {
const fetchTasks = async () => {
try {
- const tobuys = await toBuyApi.getToBuys();
- setToBuys(tobuys);
+ const dishlistfirst = await recipeApi.getAllRecipes();
+ setAllDish(dishlistfirst);
} catch (error) {
+ alert("取得失敗");
// console.error(`${TASK_ERRORS.FETCH_FAILED}:`, error);
}
};
@@ -128,13 +137,13 @@ const DishList: React.FC = () => {
overflowY: 'auto', padding: '20px'}}>
{/* */}
{/* タスク一覧をマップして各タスクをリストアイテムとして表示 */}
- {test.map((test, index) => (
+ {allDish && allDish.map((allDish, recipeId) => (
*/
-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/repository/RecipesStuffsRepository.java b/backend/src/main/java/com/example/todoapp/repository/RecipesStuffsRepository.java
deleted file mode 100644
index 729b825..0000000
--- a/backend/src/main/java/com/example/todoapp/repository/RecipesStuffsRepository.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.example.todoapp.repository;
-
-import java.util.List;
-import java.util.Optional;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-
-import com.example.todoapp.model.RecipeStuffs;
-
-/**
- * レシピ食材関連データのリポジトリインターフェース
- *
- * このインターフェースはレシピと食材の関連データへのアクセスを提供します。
- * Spring Data JPAによって自動的に実装されます。
- *
- */
-public interface RecipesStuffsRepository extends JpaRepository {
- /**
- * レシピIDで食材情報を検索する
- *
- * @param recipeId 検索するレシピID
- * @return 関連する食材情報リスト
- */
- List findByRecipesRecipeId(Long recipeId);
-
- /**
- * レシピIDと食材IDで関連情報を検索する
- *
- * @param recipeId 検索するレシピID
- * @param stuffId 検索する食材ID
- * @return 関連情報(存在する場合)
- */
- Optional findByRecipesRecipeIdAndStuffStuffId(Long recipeId, Long stuffId);
-}
-
-
-
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 2eab2b8..65a3673 100644
--- a/backend/src/main/java/com/example/todoapp/service/RecipeService.java
+++ b/backend/src/main/java/com/example/todoapp/service/RecipeService.java
@@ -24,7 +24,7 @@ import com.example.todoapp.dto.StuffRequestDTO;
import com.example.todoapp.model.RecipeStuffs;
import com.example.todoapp.model.Recipes;
import com.example.todoapp.model.Stuffs;
-import com.example.todoapp.repository.RecipesStuffsRepository;
+import com.example.todoapp.repository.RecipeStuffsRepository;
import com.example.todoapp.repository.RecipesRepository;
import com.example.todoapp.repository.StuffsRepository;
@@ -47,7 +47,7 @@ public class RecipeService {
private StuffsRepository stuffsRepository;
@Autowired
- private RecipesStuffsRepository recipeStuffsRepository;
+ private RecipeStuffsRepository recipeStuffsRepository;
/**
* レシピを新規登録する
From 3a864a4c9643e3f2334f5c18c57e2910591a9479 Mon Sep 17 00:00:00 2001
From: "masato.fujita"
Date: Thu, 12 Jun 2025 13:04:35 +0900
Subject: [PATCH 3/4] =?UTF-8?q?=E5=80=8B=E6=95=B0=E3=83=80=E3=82=A4?=
=?UTF-8?q?=E3=82=A2=E3=83=AD=E3=82=B0=E3=81=AE=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
frontend/src/pages/DishList.tsx | 180 ++++++++++++--------------------
1 file changed, 65 insertions(+), 115 deletions(-)
diff --git a/frontend/src/pages/DishList.tsx b/frontend/src/pages/DishList.tsx
index f30216f..387b634 100644
--- a/frontend/src/pages/DishList.tsx
+++ b/frontend/src/pages/DishList.tsx
@@ -64,7 +64,7 @@ const DishList: React.FC = () => {
// }
// すべての料理リスト
- const [allDish, setAllDish] = useState();
+ const [allDish, setAllDish] = useState(testdish);
// 画面表示用の食材情報配列
const [testDishArray, setTestDishArray] = useState(testdish);
// エラーメッセージの状態管理
@@ -74,7 +74,9 @@ const DishList: React.FC = () => {
// 料理リスト編集ダイアログの表示状態
const [openChangeDialog, setOpenChangeDialog] = useState(false);
// 料理リストの食材の個数編集ダイアログの表示状態
- const [openChangeItemDialog, setOpenChangeItemDialog] = useState(false);
+ const [openChangeAmountDialog, setOpenChangeAmountDialog] = useState(false);
+ // 編集する食材の状態
+ const [selectedEditingStuff, setSelectedEditingStuff] = useState();
const changeDialog = () => {
setOpenDialog(false);
@@ -86,6 +88,17 @@ const DishList: React.FC = () => {
setOpenDialog(true);
setOpenChangeDialog(false);
};
+ // 選択された食材
+ let selectedItem : string = '';
+ // 選択された食材の個数
+ let selectedItemAmount : number = 0;
+ // 選択された食材の個数を変更するダイアログを開く処理
+ const changeSelectedItemAmount = (dish : Dish, stuff_name : string, stuff_amount : number) => {
+ setOpenChangeAmountDialog(true)
+ setSelectedEditingStuff(dish);
+ selectedItem = stuff_name;
+ selectedItemAmount = stuff_amount;
+ };
/**
* タスクを削除するハンドラー
* 指定されたIDのタスクをAPIを通じて削除
@@ -120,8 +133,8 @@ const DishList: React.FC = () => {
const fetchTasks = async () => {
try {
- const dishlistfirst = await recipeApi.getAllRecipes();
- setAllDish(dishlistfirst);
+ // const dishlistfirst = await recipeApi.getAllRecipes();
+ // setAllDish(dishlistfirst);
} catch (error) {
alert("取得失敗");
// console.error(`${TASK_ERRORS.FETCH_FAILED}:`, error);
@@ -178,7 +191,7 @@ const DishList: React.FC = () => {
{/*新規料理追加ボタン - 画面下部に固定表示 */}
-
+ {/*
{
>
-
+ */}
- {/* 新規タスク作成ダイアログ */}
+ {/* 料理リストの詳細表示ダイアログ */}
- {/* 食材の個数の編集ダイアログ */}
+ {/* 食材編集ダイアログ */}
- {/* 食材編集ダイアログ */}
-