lavkach3

Форк
0
/
product_api.py 
56 строк · 1.9 Кб
1
from __future__ import annotations
2

3
import typing
4
import uuid
5

6
from fastapi import APIRouter, Query, Request, Depends
7
from fastapi_filter import FilterDepends
8

9
from app.basic.product.schemas import (
10
    ProductScheme,
11
    ProductCreateScheme,
12
    ProductUpdateScheme,
13
    ProductListSchema,
14
    ProductFilter,
15
    ExceptionResponseSchema,
16
)
17
from app.basic.product.services import ProductService
18

19
product_router = APIRouter(
20
    responses={"400": {"model": ExceptionResponseSchema}},
21
)
22

23

24
@product_router.get("", response_model=ProductListSchema)
25
async def product_list(
26
        model_filter: ProductFilter = FilterDepends(ProductFilter),
27
        size: int = Query(ge=1, le=100, default=100),
28
        service: ProductService = Depends()
29
):
30
    data = await service.list(model_filter, size)
31
    cursor = model_filter.lsn__gt
32
    return {'size': len(data), 'cursor': cursor, 'data': data}
33

34

35
@product_router.post("", response_model=ProductScheme)
36
async def product_create(schema: ProductCreateScheme, service: ProductService = Depends()):
37
    return await service.create(obj=schema)
38

39

40
@product_router.get("/{product_id}")
41
async def product_get(product_id: uuid.UUID, service: ProductService = Depends()) -> typing.Union[None, ProductScheme]:
42
    return await service.get(id=product_id)
43

44

45
@product_router.put("/{product_id}", response_model=ProductScheme)
46
async def product_update(product_id: uuid.UUID, schema: ProductUpdateScheme, service: ProductService = Depends()):
47
    return await service.update(id=product_id, obj=schema)
48

49

50
@product_router.delete("/{product_id}")
51
async def product_delete(product_id: uuid.UUID, service: ProductService = Depends()):
52
    await service.delete(id=product_id)
53

54
@product_router.get("/barcode/{barcode}", response_model=ProductScheme)
55
async def product_by_barcode(barcode: str, service: ProductService = Depends()):
56
    return await service.product_by_barcode(barcode=barcode)
57

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.