Skip to content

Commit

Permalink
9 сделать читаемую доку в сваггере в юзердате (#22)
Browse files Browse the repository at this point in the history
* check commit

* check commit

* check commit

* .

* .

* .

* .

---------

Co-authored-by: iliak <iliakrebzdak@mail>
  • Loading branch information
gitfresnel and iliak committed Dec 7, 2023
1 parent 0ba9b3a commit 11a7cad
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 12 deletions.
27 changes: 18 additions & 9 deletions userdata_api/routes/category.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@
category = APIRouter(prefix="/category", tags=["Category"])


@category.post("", response_model=CategoryGet)
@category.post(
"",
response_model=CategoryGet,
)
async def create_category(
request: Request,
category_inp: CategoryPost,
Expand All @@ -23,6 +26,7 @@ async def create_category(
"""
Создать категорию пользовательских данных. Получить категорию можно будет со скоупами, имена которых в category_inp.scopes
Ручка обновит документацию
\f
:param request: https://fastapi.tiangolo.com/advanced/using-request-directly/
:param category_inp: Принимаемая моделька
:param _: Аутентификация
Expand All @@ -38,6 +42,7 @@ async def create_category(
async def get_category(id: int) -> CategoryGet:
"""
Получить категорию
\f
:param id: Айди категории
:param _: Аутентфикация
:return: Категорию со списком скоупов, которые нужны для получения пользовательских данных этой категории
Expand All @@ -48,22 +53,24 @@ async def get_category(id: int) -> CategoryGet:

@category.get("", response_model=list[CategoryGet], response_model_exclude_none=True)
async def get_categories(query: list[Literal["param"]] = Query(default=[])) -> list[CategoryGet]:
result = []
for category in Category.query(session=db.session).all():
to_append = category.dict()
if "param" in query:
to_append["params"] = []
for param in category.params:
to_append["params"].append(param.dict())
result.append(to_append)
"""
Получить все категории
\f
:param query: Лист query параметров.
Если ничего не указано то вернет просто список категорий
Параметр 'param' - если указан, то в каждой категории будет список ее параметров
:param _: Аутентифиуация
:return: Список категорий. В каждой ноде списка - информация о скоупах, которые нужны для получения пользовательских данных этой категории
"""
result = []
for category in Category.query(session=db.session).all():
to_append = category.dict()
if "param" in query:
to_append["params"] = []
for param in category.params:
to_append["params"].append(param.dict())
result.append(to_append)

type_adapter = TypeAdapter(list[CategoryGet])
return type_adapter.validate_python(result)

Expand All @@ -77,6 +84,7 @@ async def patch_category(
) -> CategoryGet:
"""
Обновить категорию
\f
:param request: https://fastapi.tiangolo.com/advanced/using-request-directly/
:param id: Айди обновляемой категории
:param category_inp: Моделька обновления
Expand All @@ -95,6 +103,7 @@ async def delete_category(
) -> StatusResponseModel:
"""
Удалить категорию
\f
:param request: https://fastapi.tiangolo.com/advanced/using-request-directly/
:param id: Айди удаляемой категории
:param _: Аутентификация
Expand Down
5 changes: 5 additions & 0 deletions userdata_api/routes/param.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ async def create_param(
) -> ParamGet:
"""
Создать поле внутри категории. Ответ на пользовательские данные будет такой {..., category: {...,param: '', ...}}
\f
:param request: https://fastapi.tiangolo.com/advanced/using-request-directly/
:param category_id: Айди котегории в которой создавать параметр
:param param_inp: Модель для создания
Expand All @@ -39,6 +40,7 @@ async def create_param(
async def get_param(id: int, category_id: int) -> ParamGet:
"""
Получить параметр по айди
\f
:param id: Айди параметра
:param category_id: айди категории в которой этот параметр находиится
:return: ParamGet - полученный параметр
Expand All @@ -53,6 +55,7 @@ async def get_param(id: int, category_id: int) -> ParamGet:
async def get_params(category_id: int) -> list[ParamGet]:
"""
Получить все параметры категории
\f
:param category_id: Айди категории
:return: list[ParamGet] - список полученных параметров
"""
Expand All @@ -70,6 +73,7 @@ async def patch_param(
) -> ParamGet:
"""
Обновить параметр внутри категории
\f
:param request: https://fastapi.tiangolo.com/advanced/using-request-directly/
:param id: Айди обновляемого параметра
:param category_id: Адйи категории в которой находится параметр
Expand All @@ -95,6 +99,7 @@ async def delete_param(
) -> StatusResponseModel:
"""
Удалить параметр внутри категории
\f
:param request: https://fastapi.tiangolo.com/advanced/using-request-directly/
:param id: Айди удаляемого параметра
:param category_id: Айди категории в которой находится удлаляемый параметр
Expand Down
5 changes: 5 additions & 0 deletions userdata_api/routes/source.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ async def create_source(
) -> SourceGet:
"""
Создать источник данных
\f
:param request: https://fastapi.tiangolo.com/advanced/using-request-directly/
:param source_inp: Моделька для создания
:param _: Аутентификация
Expand All @@ -37,6 +38,7 @@ async def create_source(
async def get_source(id: int) -> SourceGet:
"""
Получить источник данных
\f
:param id: Айди источника
:return: SourceGet - полученный источник
"""
Expand All @@ -47,6 +49,7 @@ async def get_source(id: int) -> SourceGet:
async def get_sources() -> list[SourceGet]:
"""
Получить все источники данных
\f
:return: list[SourceGet] - список источников данных
"""
type_adapter = TypeAdapter(list[SourceGet])
Expand All @@ -62,6 +65,7 @@ async def patch_source(
) -> SourceGet:
"""
Обновить источник данных
\f
:param request: https://fastapi.tiangolo.com/advanced/using-request-directly/
:param id: Айди обновляемого источника
:param source_inp: Моделька для обновления
Expand All @@ -79,6 +83,7 @@ async def delete_source(
) -> StatusResponseModel:
"""
Удалить источник данных
\f
:param request: https://fastapi.tiangolo.com/advanced/using-request-directly/
:param id: Айди удаляемого источника
:param _: Аутентфиикация
Expand Down
6 changes: 3 additions & 3 deletions userdata_api/routes/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ async def get_user_info(
id: int, user: dict[str, Any] = Depends(UnionAuth(scopes=[], allow_none=False, auto_error=True))
) -> UserInfoGet:
"""
Получить информацию о польщователе
Получить информацию о пользователе
\f
:param id: Айди овнера информации(пользователя)
:param user: Аутентфикация
:return: Словарь, ключи - категории на которые хватило прав(овнеру не нужны права, он получает всё).
Expand Down Expand Up @@ -54,8 +55,7 @@ async def update_user(
Для обновления своей информации(источник `user`) не нужны скоупы на обновление соответствующих категорий
Для обновления чужой информации от имени админа(источник `admin`)
нужны скоупы на обновление всех указанных в теле запроса категорий пользовательских данных данных
\f
:param request: Запрос из fastapi
:param user_id: Айди объекта обновленя
:param _: Модель запроса
Expand Down

0 comments on commit 11a7cad

Please sign in to comment.