sync: migrate secure-online-shop to Gitea (2026-08-10)
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, Depends, status
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.api.dependencies import get_current_user
|
||||
from app.db.session import get_db
|
||||
from app.models.user import User
|
||||
from app.schemas.order import OrderCreate, OrderResponse
|
||||
from app.services.order_service import OrderService
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.post(
|
||||
"",
|
||||
response_model=OrderResponse,
|
||||
status_code=status.HTTP_201_CREATED,
|
||||
summary="Create an order from cart items",
|
||||
)
|
||||
def create_order(
|
||||
payload: OrderCreate,
|
||||
db: Annotated[Session, Depends(get_db)],
|
||||
current_user: Annotated[User, Depends(get_current_user)],
|
||||
) -> OrderResponse:
|
||||
order = OrderService(db).create_order(current_user, payload)
|
||||
return OrderResponse.model_validate(order)
|
||||
|
||||
|
||||
@router.get(
|
||||
"",
|
||||
response_model=list[OrderResponse],
|
||||
status_code=status.HTTP_200_OK,
|
||||
summary="View the authenticated user's orders",
|
||||
)
|
||||
def list_my_orders(
|
||||
db: Annotated[Session, Depends(get_db)],
|
||||
current_user: Annotated[User, Depends(get_current_user)],
|
||||
) -> list[OrderResponse]:
|
||||
orders = OrderService(db).get_orders_for_user(current_user)
|
||||
return [OrderResponse.model_validate(order) for order in orders]
|
||||
|
||||
|
||||
@router.get(
|
||||
"/{order_id}",
|
||||
response_model=OrderResponse,
|
||||
status_code=status.HTTP_200_OK,
|
||||
summary="View a specific order owned by the authenticated user",
|
||||
)
|
||||
def get_my_order(
|
||||
order_id: int,
|
||||
db: Annotated[Session, Depends(get_db)],
|
||||
current_user: Annotated[User, Depends(get_current_user)],
|
||||
) -> OrderResponse:
|
||||
order = OrderService(db).get_order_for_user(order_id, current_user)
|
||||
return OrderResponse.model_validate(order)
|
||||
Reference in New Issue
Block a user