diff --git a/backend/src/main/java/com/example/todoapp/controller/StocksController.java b/backend/src/main/java/com/example/todoapp/controller/StocksController.java index 2631bc1..8ff6691 100644 --- a/backend/src/main/java/com/example/todoapp/controller/StocksController.java +++ b/backend/src/main/java/com/example/todoapp/controller/StocksController.java @@ -1,16 +1,22 @@ package com.example.todoapp.controller; +import com.example.todoapp.dto.DeleteStockRequest; import com.example.todoapp.dto.ResponseStockDTO; import com.example.todoapp.dto.StockDTO; import com.example.todoapp.model.Stocks; import com.example.todoapp.service.StocksService; import jakarta.validation.Valid; +import lombok.Data; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.security.core.Authentication; import org.springframework.web.bind.annotation.*; +import lombok.Data; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -81,27 +87,33 @@ public class StocksController { * @param stockDetails 更新内容 * @return 更新された在庫 */ - @PutMapping("/{id}") - public ResponseEntity updateStock( + @PutMapping("/update") + public ResponseEntity> updateStock( Authentication authentication, - @PathVariable("id") Long stockId, @Valid @RequestBody Stocks stockDetails) { - Stocks updatedStock = stockService.updateStocks(authentication.getName(), stockId, stockDetails); - return ResponseEntity.ok(StockDTO.fromEntity(updatedStock)); + + stockService.updateStocks(authentication.getName(), stockDetails); + + Map response = new HashMap<>(); + response.put("result", true); + return ResponseEntity.ok(response); } /** * 指定されたIDの在庫を削除する * * @param authentication 認証情報 - * @param taskId 削除する在庫のID - * @return 空のレスポンス + * @param stockInfo 削除する在庫情報(stockIdをキーに持つ) + * @return レスポンス */ - @DeleteMapping("/{id}") - public ResponseEntity deleteStock( + @DeleteMapping("/delete") + public ResponseEntity> deleteStock( Authentication authentication, - @PathVariable("id") Long stockId) { - stockService.deleteStock(authentication.getName(), stockId); - return ResponseEntity.ok().build(); + @Valid @RequestBody DeleteStockRequest request) { + stockService.deleteStock(authentication.getName(), request.getStockId()); + + Map response = new HashMap<>(); + response.put("result", true); + return ResponseEntity.ok(response); } } \ No newline at end of file diff --git a/backend/src/main/java/com/example/todoapp/dto/DeleteStockRequest.java b/backend/src/main/java/com/example/todoapp/dto/DeleteStockRequest.java new file mode 100644 index 0000000..8beb478 --- /dev/null +++ b/backend/src/main/java/com/example/todoapp/dto/DeleteStockRequest.java @@ -0,0 +1,15 @@ +package com.example.todoapp.dto; +import lombok.Data; + +/** + * 在庫削除のリクエストオブジェクト(DTO) + *

+ * このクラスはクライアントとサーバー間で在庫情報をやり取りするために使用されます。 + * エンティティとは異なり、必要な情報のみを含み、関連エンティティへの参照ではなくIDのみを保持します。 + *

+ */ + +@Data +public class DeleteStockRequest { + private Long stockId; +} \ No newline at end of file diff --git a/backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java b/backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java index f2fb344..065fe18 100644 --- a/backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java +++ b/backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java @@ -39,6 +39,6 @@ public interface StuffsRepository extends JpaRepository { * @param category カテゴリ名 * @return 指定されたカテゴリに属する材料のリスト */ - List findByCategory(String category); + List findByCategoryOrderByStuffNameAsc(String category); } \ No newline at end of file diff --git a/backend/src/main/java/com/example/todoapp/service/StocksService.java b/backend/src/main/java/com/example/todoapp/service/StocksService.java index e793f1f..68d6eaf 100644 --- a/backend/src/main/java/com/example/todoapp/service/StocksService.java +++ b/backend/src/main/java/com/example/todoapp/service/StocksService.java @@ -75,8 +75,8 @@ public class StocksService { * @param stockDetails 編集内容(新しい情報) * @return 編集された在庫エンティティ */ - public Stocks updateStocks(String username, Long stockId, Stocks stockDetails) { - Stocks stock = getStockById(username, stockId); + public Stocks updateStocks(String username, Stocks stockDetails) { + Stocks stock = getStockById(username, stockDetails.getStockId()); stock.setAmount(stockDetails.getAmount()); stock.setPrice(stockDetails.getPrice()); stock.setLastUpdate(stockDetails.getLastUpdate()); diff --git a/backend/src/main/java/com/example/todoapp/service/StuffsService.java b/backend/src/main/java/com/example/todoapp/service/StuffsService.java index 18b3924..4c8426f 100644 --- a/backend/src/main/java/com/example/todoapp/service/StuffsService.java +++ b/backend/src/main/java/com/example/todoapp/service/StuffsService.java @@ -34,6 +34,6 @@ public class StuffsService { * @return 指定されたカテゴリに属する材料のリスト */ public List getAllStuffsByCategory(String category) { - return stuffsRepository.findByCategory(category); + return stuffsRepository.findByCategoryOrderByStuffNameAsc(category); } } diff --git a/frontend/src/services/api.ts b/frontend/src/services/api.ts index 7146117..07c122a 100644 --- a/frontend/src/services/api.ts +++ b/frontend/src/services/api.ts @@ -280,13 +280,15 @@ export const stockApi = { }); console.log("API レスポンスステータス:", response.status); - console.log("API レスポンス本文:", await response.text()); + // console.log("API レスポンス本文:", await response.text()); if (!response.ok) { throw new Error(STOCK_ERRORS.DELETE_FAILED); } - return response.json() + const response_json = response.json() + console.log('Delete response:', response_json) + return response_json // return { // "result": true