diff --git a/backend/src/main/java/com/petshop/backend/repository/InventoryRepository.java b/backend/src/main/java/com/petshop/backend/repository/InventoryRepository.java index 69ff16ed..b448b497 100644 --- a/backend/src/main/java/com/petshop/backend/repository/InventoryRepository.java +++ b/backend/src/main/java/com/petshop/backend/repository/InventoryRepository.java @@ -16,6 +16,9 @@ public interface InventoryRepository extends JpaRepository { @Query("SELECT i FROM Inventory i WHERE i.product.prodId = :productId") Optional findByProductId(@Param("productId") Long productId); + @Query("SELECT i FROM Inventory i WHERE i.product.prodId = :productId AND i.store.storeId = :storeId") + Optional findByProductIdAndStoreId(@Param("productId") Long productId, @Param("storeId") Long storeId); + @Query("SELECT i FROM Inventory i LEFT JOIN i.store s WHERE " + "LOWER(i.product.prodName) LIKE LOWER(CONCAT('%', :q, '%')) OR " + "LOWER(i.product.category.categoryName) LIKE LOWER(CONCAT('%', :q, '%')) OR " + diff --git a/backend/src/main/java/com/petshop/backend/service/SaleService.java b/backend/src/main/java/com/petshop/backend/service/SaleService.java index 643cfc2a..c90ad659 100644 --- a/backend/src/main/java/com/petshop/backend/service/SaleService.java +++ b/backend/src/main/java/com/petshop/backend/service/SaleService.java @@ -134,8 +134,8 @@ public class SaleService { " for product: " + product.getProdName()); } - Inventory inventory = inventoryRepository.findByProductId(itemRequest.getProdId()) - .orElseThrow(() -> new ResourceNotFoundException("Inventory not found for product " + itemRequest.getProdId())); + Inventory inventory = inventoryRepository.findByProductIdAndStoreId(itemRequest.getProdId(), store.getStoreId()) + .orElseThrow(() -> new ResourceNotFoundException("Inventory not found for product " + itemRequest.getProdId() + " at store " + store.getStoreId())); inventory.setQuantity(inventory.getQuantity() + itemRequest.getQuantity()); inventoryRepository.save(inventory); @@ -158,8 +158,8 @@ public class SaleService { Product product = productRepository.findById(itemRequest.getProdId()) .orElseThrow(() -> new ResourceNotFoundException("Product not found with id: " + itemRequest.getProdId())); - Inventory inventory = inventoryRepository.findByProductId(itemRequest.getProdId()) - .orElseThrow(() -> new ResourceNotFoundException("Inventory not found for product " + itemRequest.getProdId())); + Inventory inventory = inventoryRepository.findByProductIdAndStoreId(itemRequest.getProdId(), store.getStoreId()) + .orElseThrow(() -> new ResourceNotFoundException("Inventory not found for product " + itemRequest.getProdId() + " at store " + store.getStoreId())); if (inventory.getQuantity() < itemRequest.getQuantity()) { throw new BusinessException("Insufficient stock for product: " + product.getProdName() + diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index 5c79d7a6..07b2c86b 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -9,7 +9,7 @@ spring: max-request-size: 5MB datasource: - url: ${SPRING_DATASOURCE_URL:jdbc:mysql://localhost:3307/Petstoredb_target?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC} + url: ${SPRING_DATASOURCE_URL:jdbc:mysql://localhost:3306/Petstoredb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC} username: ${SPRING_DATASOURCE_USERNAME:petshop} password: ${SPRING_DATASOURCE_PASSWORD:petshop} driver-class-name: com.mysql.cj.jdbc.Driver