diff --git a/userdata_api/routes/category.py b/userdata_api/routes/category.py index 9a53feb..9505bfd 100644 --- a/userdata_api/routes/category.py +++ b/userdata_api/routes/category.py @@ -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, @@ -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 _: Аутентификация @@ -38,6 +42,7 @@ async def create_category( async def get_category(id: int) -> CategoryGet: """ Получить категорию + \f :param id: Айди категории :param _: Аутентфикация :return: Категорию со списком скоупов, которые нужны для получения пользовательских данных этой категории @@ -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) @@ -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: Моделька обновления @@ -95,6 +103,7 @@ async def delete_category( ) -> StatusResponseModel: """ Удалить категорию + \f :param request: https://fastapi.tiangolo.com/advanced/using-request-directly/ :param id: Айди удаляемой категории :param _: Аутентификация diff --git a/userdata_api/routes/param.py b/userdata_api/routes/param.py index 4a0b714..e851344 100644 --- a/userdata_api/routes/param.py +++ b/userdata_api/routes/param.py @@ -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: Модель для создания @@ -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 - полученный параметр @@ -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] - список полученных параметров """ @@ -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: Адйи категории в которой находится параметр @@ -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: Айди категории в которой находится удлаляемый параметр diff --git a/userdata_api/routes/source.py b/userdata_api/routes/source.py index 9de4ca9..52f3d67 100644 --- a/userdata_api/routes/source.py +++ b/userdata_api/routes/source.py @@ -22,6 +22,7 @@ async def create_source( ) -> SourceGet: """ Создать источник данных + \f :param request: https://fastapi.tiangolo.com/advanced/using-request-directly/ :param source_inp: Моделька для создания :param _: Аутентификация @@ -37,6 +38,7 @@ async def create_source( async def get_source(id: int) -> SourceGet: """ Получить источник данных + \f :param id: Айди источника :return: SourceGet - полученный источник """ @@ -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]) @@ -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: Моделька для обновления @@ -79,6 +83,7 @@ async def delete_source( ) -> StatusResponseModel: """ Удалить источник данных + \f :param request: https://fastapi.tiangolo.com/advanced/using-request-directly/ :param id: Айди удаляемого источника :param _: Аутентфиикация diff --git a/userdata_api/routes/user.py b/userdata_api/routes/user.py index 6ba0572..093f839 100644 --- a/userdata_api/routes/user.py +++ b/userdata_api/routes/user.py @@ -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: Словарь, ключи - категории на которые хватило прав(овнеру не нужны права, он получает всё). @@ -54,8 +55,7 @@ async def update_user( Для обновления своей информации(источник `user`) не нужны скоупы на обновление соответствующих категорий Для обновления чужой информации от имени админа(источник `admin`) нужны скоупы на обновление всех указанных в теле запроса категорий пользовательских данных данных - - + \f :param request: Запрос из fastapi :param user_id: Айди объекта обновленя :param _: Модель запроса