from fastapi import APIRouter, Depends from core.settings import settings from sqlalchemy.ext.asyncio import AsyncSession from typing import Annotated from repo.schemas import UserRead, UserCreate, UserUpdate from core.models import db_helper import repo.crud.user as crud router = APIRouter( prefix=settings.api.v1.user, tags=["Users"] ) @router.get("/", response_model=list[UserRead]) async def get_all_users( session: Annotated[AsyncSession, Depends(db_helper.session_getter)] ): users = await crud.get_all_users(session=session) return users @router.get("/{user_id}", response_model=UserRead) async def get_user( session: Annotated[AsyncSession, Depends(db_helper.session_getter)], user_id: int ): users = await crud.get_user( session=session, user_id=user_id ) return users @router.post("/", response_model=UserRead) async def create_user( session: Annotated[AsyncSession, Depends(db_helper.session_getter)], user_create: UserCreate ): users = await crud.create_user( session=session, user_create=user_create ) return users @router.patch("/{user_id}", response_model=UserRead) async def update_user( session: Annotated[AsyncSession, Depends(db_helper.session_getter)], user_id: int, user_update: UserUpdate ): users = await crud.update_user( session=session, user_id=user_id, user_update=user_update ) return users