Merge remote-tracking branch 'origin/feature-backend-stock-fix' into feature-frontend-stock

feature-backend-add-springdocs
Yuna.Suzuki 4 months ago
commit e54b75f2c3
  1. 36
      backend/src/main/java/com/example/todoapp/controller/StocksController.java
  2. 15
      backend/src/main/java/com/example/todoapp/dto/DeleteStockRequest.java
  3. 2
      backend/src/main/java/com/example/todoapp/repository/StuffsRepository.java
  4. 4
      backend/src/main/java/com/example/todoapp/service/StocksService.java
  5. 2
      backend/src/main/java/com/example/todoapp/service/StuffsService.java
  6. 6
      frontend/src/services/api.ts

@ -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<StockDTO> updateStock(
@PutMapping("/update")
public ResponseEntity<Map<String, Object>> 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<String, Object> 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<Map<String, Object>> 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<String, Object> response = new HashMap<>();
response.put("result", true);
return ResponseEntity.ok(response);
}
}

@ -0,0 +1,15 @@
package com.example.todoapp.dto;
import lombok.Data;
/**
* 在庫削除のリクエストオブジェクトDTO
* <p>
* このクラスはクライアントとサーバー間で在庫情報をやり取りするために使用されます
* エンティティとは異なり必要な情報のみを含み関連エンティティへの参照ではなくIDのみを保持します
* </p>
*/
@Data
public class DeleteStockRequest {
private Long stockId;
}

@ -39,6 +39,6 @@ public interface StuffsRepository extends JpaRepository<Stuffs, Long> {
* @param category カテゴリ名
* @return 指定されたカテゴリに属する材料のリスト
*/
List<Stuffs> findByCategory(String category);
List<Stuffs> findByCategoryOrderByStuffNameAsc(String category);
}

@ -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());

@ -34,6 +34,6 @@ public class StuffsService {
* @return 指定されたカテゴリに属する材料のリスト
*/
public List<Stuffs> getAllStuffsByCategory(String category) {
return stuffsRepository.findByCategory(category);
return stuffsRepository.findByCategoryOrderByStuffNameAsc(category);
}
}

@ -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

Loading…
Cancel
Save