invix_test_task/api/app/routers/orders.py

25 lines
959 B
Python

from fastapi import APIRouter, Request, Response
from app.deps import SessionDep, ensure_web_session, web_owner
from app.schemas import OrderCreate, OrderOut
from app.services import checkout, get_order
router = APIRouter()
@router.post("/orders", response_model=OrderOut)
async def create_order(body: OrderCreate, request: Request, response: Response, db: SessionDep) -> OrderOut:
session_id = await ensure_web_session(request, response, db)
return await checkout(
db,
owner_key=web_owner(session_id),
customer_name=body.customer_name,
customer_phone=body.customer_phone,
)
@router.get("/orders/{order_id}", response_model=OrderOut)
async def read_order(order_id: int, request: Request, response: Response, db: SessionDep) -> OrderOut:
session_id = await ensure_web_session(request, response, db)
return await get_order(db, owner_key=web_owner(session_id), order_id=order_id)