diff --git a/fast_api.py b/fast_api.py index 4363484..856ba54 100644 --- a/fast_api.py +++ b/fast_api.py @@ -32,6 +32,11 @@ def get_desk_place(database, service_id, ticket): @app.get("/") async def root(): + """ + Не понятно для чего этот метод + Если делаешь заглушку, то тогда можешь выводить какую-то статистику по кол-ву услуг, касс, талончиков + чтобы метод нес какую-то пользу + """ return {"message": "Выберите услугу"} @@ -48,6 +53,13 @@ async def get_service_info(service_id: int, database=Depends(get_database)): @app.post("/services/{service_id}/confirm/") async def get_in_queue(service_id: int, database=Depends(get_database)): + """ + Название метода совсем не дает понять что он делает. + Если мы выдаем талон на услугу то надо так и написать + /tickets/new/ а в тело передовать информацию об услуге (и возможно что-то еще) + + не понятно почему талончик только один и как он помещается в очередь + """ try: ticket = database.ticket service = database.get_service(service_id) @@ -60,12 +72,15 @@ async def get_in_queue(service_id: int, database=Depends(get_database)): return {"message": "Все кассы закрыты"} return {"place": ticket.queue_place, "service": ticket.service} - +#точка входа не по REST @app.get("/desk_info/") async def get_desk_info(database=Depends(get_database)): + """ + Мне тут не хватает информации о том кто стоит в очередь в эту кассу + """ return database.get_desk_info() - +#точка входа не по REST @app.post("/{desk_id}/done/") async def go_to_next_ticket(desk_id: int, database=Depends(get_database)): queue = database.get_desk(desk_id).queue @@ -76,7 +91,7 @@ async def go_to_next_ticket(desk_id: int, database=Depends(get_database)): database.get_desk(desk_id).in_service = None return {"ticket": database.get_desk(desk_id).in_service} - +#точка входа не по REST @app.post("/{desk_id}/close/}") async def close_desk(desk_id: int, database=Depends(get_database)): try: @@ -88,15 +103,16 @@ async def close_desk(desk_id: int, database=Depends(get_database)): queue.clear() except ValueError: return {"message": "Все кассы закрыты"} + # тут в сообщении можно добавить какая конкретно касса закрыта return {"message": "Касса закрыта"} - +#точка входа не по REST @app.post("/{desk_id}/open/") async def open_desk(desk_id: int, database=Depends(get_database)): database.get_desk(desk_id).is_open = True return {"message": "Касса открыта"} - +#точка входа не по REST @app.post("/new_service/") async def add_new_service(service: Service, desk_keys: List[int], database=Depends(get_database)): @@ -104,15 +120,18 @@ async def add_new_service(service: Service, desk_keys: List[int], database.services[service_key] = service for desk_key in desk_keys: database.desks[desk_key].services.append(service_key) + # тут надо вернуть сам созданный объект, можно и с сообщением об успехе return {"message": "Сервис успешно добавлен"} +#точка входа не по REST @app.post("/new_desk/") async def add_new_desk(desk: Desk, database=Depends(get_database)): desk_key = database.get_new_desk_key() database.desks[desk_key] = desk + # тут надо вернуть сам созданный объект, можно и с сообщением об успехе return {"message": "Касса успешно добавлена"} if __name__ == "__main__": - uvicorn.run(app, host="0.0.0.0", port=8000) + uvicorn.run(app, host="127.0.0.1", port=8000) diff --git a/fast_api_db.py b/fast_api_db.py index 56d0599..2d53c18 100644 --- a/fast_api_db.py +++ b/fast_api_db.py @@ -32,6 +32,7 @@ class Database: queue=[], ) } + # почему талончик только один? ticket = Ticket( queue_place=0, ) diff --git a/models.py b/models.py index 0f2f88d..1ef9725 100644 --- a/models.py +++ b/models.py @@ -1,4 +1,5 @@ from typing import List, Union +# Хорошо что используешь pydantic from pydantic import BaseModel @@ -20,7 +21,13 @@ class Config: } } +""" +Я не поняла назначение этого класса +Предполагается что мы заказываем талон на услугу, +генерируем его номер (в зависимости от услуги) и талон помещаем в очередь конкретной кассы +Помещать в очередь можно доверить какому-нибудь классу-менеджеру +""" class Ticket(BaseModel): queue_place: int service: Union[str, None] = None diff --git a/requirements.txt b/requirements.txt index 4b1ecab..2378a66 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,6 +11,5 @@ sniffio==1.3.0 starlette==0.20.4 typing_extensions==4.3.0 uvicorn==0.18.3 -uvloop==0.17.0 watchfiles==0.17.0 websockets==10.3 diff --git "a/\320\236\320\221\320\240\320\220\320\242\320\235\320\220\320\257 \320\241\320\222\320\257\320\227\320\254.txt" "b/\320\236\320\221\320\240\320\220\320\242\320\235\320\220\320\257 \320\241\320\222\320\257\320\227\320\254.txt" new file mode 100644 index 0000000..51b1a01 --- /dev/null +++ "b/\320\236\320\221\320\240\320\220\320\242\320\235\320\220\320\257 \320\241\320\222\320\257\320\227\320\254.txt" @@ -0,0 +1,23 @@ +* разделение на модули - ОК +* структура API - надо переделать по REST. + Для каждой сущности надо сделать отдельную точку входа. + Т.е. для кассы + /desks/... + + GET DELETE /desks/ + GET /desks/ - Для общего списка + POST /desks/close/ + POST /desks/open/ + POST /desks/new/ + + Т.е. для услуг + /services/... + + POST /services/new/ + GET DELETE /services/ + GET /services/ + +* не хватает описания структуры и как она работает +* хотелось бы увидеть примеры работы (можно добавить в README) + +Остальное - в комментариях к коду \ No newline at end of file