26 lines
1.1 KiB
Python
26 lines
1.1 KiB
Python
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)
|