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)