46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Annotated
|
|
from uuid import UUID
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from schemas.user.context import UserContext
|
|
from v1.users.dependencies import get_user_service
|
|
from v1.users.schemas import UserSearchRequest, UserUpdateRequest
|
|
from v1.users.service import UserService
|
|
|
|
|
|
router = APIRouter(prefix="/users", tags=["users"])
|
|
|
|
|
|
@router.get("/me", response_model=UserContext)
|
|
async def get_me(
|
|
service: Annotated[UserService, Depends(get_user_service)],
|
|
) -> UserContext:
|
|
return await service.get_me()
|
|
|
|
|
|
@router.patch("/me", response_model=UserContext)
|
|
async def update_me(
|
|
payload: UserUpdateRequest,
|
|
service: Annotated[UserService, Depends(get_user_service)],
|
|
) -> UserContext:
|
|
return await service.update_me(payload)
|
|
|
|
|
|
@router.post("/search", response_model=list[UserContext])
|
|
async def search_users(
|
|
payload: UserSearchRequest,
|
|
service: Annotated[UserService, Depends(get_user_service)],
|
|
) -> list[UserContext]:
|
|
return await service.search_users(payload)
|
|
|
|
|
|
@router.get("/{user_id}", response_model=UserContext)
|
|
async def get_user(
|
|
user_id: UUID,
|
|
service: Annotated[UserService, Depends(get_user_service)],
|
|
) -> UserContext:
|
|
return await service.get_user_by_id(user_id)
|