sync: migrate secure-online-shop to Gitea (2026-08-10)
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
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_shop
|
||||
from app.db.session import get_db
|
||||
from app.models.user import User
|
||||
from app.schemas.product import ProductCreate, ProductResponse
|
||||
from app.services.product_service import ProductService
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get(
|
||||
"",
|
||||
response_model=list[ProductResponse],
|
||||
status_code=status.HTTP_200_OK,
|
||||
summary="Browse available products",
|
||||
)
|
||||
def list_products(
|
||||
db: Annotated[Session, Depends(get_db)],
|
||||
) -> list[ProductResponse]:
|
||||
products = ProductService(db).list_available_products()
|
||||
return [ProductResponse.model_validate(product) for product in products]
|
||||
|
||||
|
||||
@router.post(
|
||||
"",
|
||||
response_model=ProductResponse,
|
||||
status_code=status.HTTP_201_CREATED,
|
||||
summary="Create a product (shop only)",
|
||||
)
|
||||
def create_product(
|
||||
payload: ProductCreate,
|
||||
db: Annotated[Session, Depends(get_db)],
|
||||
current_shop: Annotated[User, Depends(get_current_shop)],
|
||||
) -> ProductResponse:
|
||||
product = ProductService(db).create_product(payload, current_shop)
|
||||
return ProductResponse.model_validate(product)
|
||||
Reference in New Issue
Block a user