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