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
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
|