50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
from fastapi import APIRouter, Body
|
|
|
|
from src.api.dependacies.db_dep import sessionDep
|
|
from src.api.dependacies.user_dep import (
|
|
ActiveUser,
|
|
AdminUser,
|
|
OwnerDep,
|
|
)
|
|
from src.core.settings import settings
|
|
from src.schemas.users import UserUpdate
|
|
from src.services.users import UserService
|
|
|
|
router = APIRouter(prefix=settings.api.v1.users, tags=["Users"])
|
|
|
|
|
|
@router.get("/me")
|
|
async def get_me(user: ActiveUser):
|
|
return user
|
|
|
|
|
|
@router.get("/")
|
|
async def get_all_users(session: sessionDep, _: AdminUser):
|
|
users = await UserService(session).get_all_users()
|
|
return users
|
|
|
|
|
|
@router.get("/{id}")
|
|
async def get_user_by_id(session: sessionDep, id: int, _: OwnerDep):
|
|
user = await UserService(session).get_user_by_filter_or_raise(id=id)
|
|
return user
|
|
|
|
|
|
@router.patch("/{id}")
|
|
async def patch_user(
|
|
session: sessionDep,
|
|
id: int,
|
|
_: OwnerDep,
|
|
user_update: UserUpdate = Body(),
|
|
):
|
|
updated_user = await UserService(session).update_user(
|
|
id=id, update_data=user_update
|
|
)
|
|
return updated_user
|
|
|
|
|
|
@router.delete("/{id}")
|
|
async def delete_user(session: sessionDep, id: int, _: AdminUser):
|
|
await UserService(session).delete_user(id)
|
|
return {"message": "User deleted successfully"}
|