/
nollieundergrob
/
PythonPackageStorage
Обзор
Документация
Войти
/
nollieundergrob
/
PythonPackageStorage
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
backend/src/routers/user.py
90 строк
3 KB
nollieundergrob
asdsadsad
25 мар 2025, 10:29
25 мар 2025, 10:29
979fa50
Код
Авторство
О чём код?
from fastapi.routing import APIRouter from service.user import service from schemas.user import User, UserCreate, UserModify from fastapi.routing import APIRouter from fastapi import Depends from sqlalchemy.ext.asyncio import AsyncSession from service.user import service from schemas.user import User from data.db_helper import db_helper from typing import Union from schemas.errors import ErrorResponse from fastapi import HTTPException from fastapi import status user_router = APIRouter(prefix="/dev/users") @user_router.get("", response_model=list[User]) async def get_all(session: AsyncSession = Depends(db_helper.session_dependency)): return await service.get_all(session=session) @user_router.get("/{user_id}", response_model=User) async def get_detail( user_id: int, session: AsyncSession = Depends(db_helper.session_dependency) ): try: return await service.get_detail(user_id=user_id, session=session) except ValueError as e: return HTTPException(detail=str(e), status_code=status.HTTP_404_NOT_FOUND) @user_router.post("", response_model=Union[User, ErrorResponse]) async def create( user_in: UserCreate, session: AsyncSession = Depends(db_helper.session_dependency) ): try: return await service.create(user_in=user_in, session=session) except ValueError as e: return HTTPException(detail=str(e), status_code=status.HTTP_400_BAD_REQUEST) @user_router.put("/{user_id}", response_model=User) async def replace( user_in: UserModify, user_id: int, session: AsyncSession = Depends(db_helper.session_dependency), ) -> User: try: return await service.replace( session=session, user_id=user_id, user_in=user_in, ) except ValueError as e: raise HTTPException(detail=str(e), status_code=status.HTTP_400_BAD_REQUEST) @user_router.patch("/{user_id}", response_model=Union[User, ErrorResponse]) async def modify( user_id: int, user_in: UserModify, session: AsyncSession = Depends(db_helper.session_dependency), ): try: updated_user = await service.modify(session, user_id, user_in) return updated_user except ValueError as e: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(e)) @user_router.delete("/{user_id}", response_model=User) async def delete( user_id: int, session: AsyncSession = Depends(db_helper.session_dependency), # current_user: User = Depends(get_current_user) ): try: deleted_user = await service.delete( session=session, user_id=user_id, # current_user=current_user # Для проверки прав доступа ) return deleted_user except ValueError as e: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(e)) except PermissionError as e: raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=str(e))