lavkach3

Форк
0
56 строк · 1.8 Кб
1
import typing
2
import uuid
3

4
from fastapi import APIRouter, Query, Request, Depends
5
from fastapi_filter import FilterDepends
6

7
from app.basic.store.schemas import (
8
    StoreScheme,
9
    StoreCreateScheme,
10
    StoreUpdateScheme,
11
    ExceptionResponseSchema, StoreListSchema, StoreFilter
12
)
13
from app.basic.store.services import StoreService
14
from core.schemas.basic_schemes import ActionBaseSchame, ActionRescposeSchema
15

16
store_router = APIRouter(
17
    responses={"400": {"model": ExceptionResponseSchema}},
18
)
19

20

21
@store_router.get("", response_model=StoreListSchema)
22
async def store_list(
23
        model_filter: StoreFilter = FilterDepends(StoreFilter),
24
        size: int = Query(ge=1, le=100, default=100),
25
        service: StoreService = Depends()
26
):
27
    data = await service.list(model_filter, size)
28
    cursor = model_filter.lsn__gt
29
    return {'size': len(data), 'cursor': cursor, 'data': data}
30

31

32
@store_router.post("", response_model=StoreScheme)
33
async def store_create(schema: StoreCreateScheme, service: StoreService = Depends()):
34
    return await service.create(obj=schema)
35

36

37
@store_router.get("/{store_id}")
38
async def store_get(store_id: uuid.UUID, service: StoreService = Depends()) -> typing.Union[
39
    None, StoreScheme]:
40
    return await service.get(id=store_id)
41

42

43
@store_router.put("/{store_id}", response_model=StoreScheme)
44
async def store_update(store_id: uuid.UUID, schema: StoreUpdateScheme,
45
                       service: StoreService = Depends()):
46
    return await service.update(id=store_id, obj=schema)
47

48

49
@store_router.delete("/{store_id}")
50
async def store_delete(store_id: uuid.UUID, service: StoreService = Depends()):
51
    await service.delete(id=store_id)
52

53

54
@store_router.post("/assign_store", response_model=ActionRescposeSchema)
55
async def assign_store(schema: ActionBaseSchame, service: StoreService = Depends()):
56
    return await service.assign_store(store_id=schema.ids[0])
57

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

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

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

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