You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

57 lines
1.5 KiB

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