from fastapi import APIRouter, Request, Response from app.deps import SessionDep, ensure_web_session, web_owner from app.schemas import CartAdd, CartOut from app.services import add_item, load_cart, remove_item router = APIRouter() @router.get("/cart", response_model=CartOut) async def get_cart(request: Request, response: Response, db: SessionDep) -> CartOut: session_id = await ensure_web_session(request, response, db) return await load_cart(db, web_owner(session_id)) @router.post("/cart/items", response_model=CartOut) async def post_item(body: CartAdd, request: Request, response: Response, db: SessionDep) -> CartOut: session_id = await ensure_web_session(request, response, db) return await add_item(db, owner_key=web_owner(session_id), product_id=body.product_id, qty=body.qty) @router.delete("/cart/items/{product_id}", response_model=CartOut) async def delete_item(product_id: int, request: Request, response: Response, db: SessionDep) -> CartOut: session_id = await ensure_web_session(request, response, db) return await remove_item(db, owner_key=web_owner(session_id), product_id=product_id)