Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

9 сделать читаемую доку в сваггере в юзердате #22

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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