fooder-api/fooder/view/product.py
Piotr Domański e2af49046c
All checks were successful
Python lint and test / linttest (push) Successful in 5m30s
[isort] ran with black profile
2024-08-04 16:17:16 +02:00

39 lines
1 KiB
Python

from typing import Optional
from fastapi import APIRouter, Depends, Request
from ..controller.product import CreateProduct, GetProductByBarCode, ListProduct
from ..model.product import CreateProductPayload, ListProductPayload, Product
router = APIRouter(tags=["product"])
@router.get("", response_model=ListProductPayload)
async def list_product(
request: Request,
controller: ListProduct = Depends(ListProduct),
limit: int = 10,
offset: int = 0,
q: Optional[str] = None,
):
return ListProductPayload(
products=[p async for p in controller.call(limit=limit, offset=offset, q=q)]
)
@router.post("", response_model=Product)
async def create_product(
request: Request,
data: CreateProductPayload,
contoller: CreateProduct = Depends(CreateProduct),
):
return await contoller.call(data)
@router.get("/by_barcode", response_model=Product)
async def get_by_bar_code(
request: Request,
barcode: str,
contoller: GetProductByBarCode = Depends(GetProductByBarCode),
):
return await contoller.call(barcode)