fastlane / routes /purchase.py
hrguarinv's picture
Update routes/purchase.py
128deab verified
from fastapi import APIRouter, status, HTTPException
from models.input import Input
from services.elasticsearch import add_to_cart, view_cart, remove_from_cart, checkout
router = APIRouter()
@router.post("/add-to-cart")
def handle_add_to_cart(input: Input):
customer_id = next(
(entity['value'] for entity in input.entities if entity['entity'] == 'customer_id'), None)
product_id = next(
(entity['value'] for entity in input.entities if entity['entity'] == 'product_id'), None)
quantity = next(
(entity['value'] for entity in input.entities if entity['entity'] == 'quantity'), 1)
if customer_id and product_id:
cart = add_to_cart(customer_id, product_id, int(quantity))
return cart
else:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND, detail="Customer ID or Product ID not provided.")
@router.get("/view-cart/{customer_id}")
def handle_view_cart(customer_id: str):
cart = view_cart(customer_id)
if not cart:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Cart not found")
return cart
@router.post("/remove-from-cart")
def handle_remove_from_cart(input: Input):
customer_id = next(
(entity['value'] for entity in input.entities if entity['entity'] == 'customer_id'), None)
product_id = next(
(entity['value'] for entity in input.entities if entity['entity'] == 'product_id'), None)
if customer_id and product_id:
cart = remove_from_cart(customer_id, product_id)
return cart
else:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND, detail="Customer ID or Product ID not provided.")
@router.post("/checkout")
def handle_checkout(input: Input):
customer_id = next(
(entity['value'] for entity in input.entities if entity['entity'] == 'customer_id'), None)
if customer_id:
order = checkout(customer_id)
return order
else:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND, detail="Customer ID not provided.")