38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from typing import Annotated
|
||
|
|
|
||
|
|
from fastapi import APIRouter, Depends, Path
|
||
|
|
|
||
|
|
from v1.users.dependencies import get_user_service
|
||
|
|
from v1.users.schemas import UserResponse, UserUpdateRequest
|
||
|
|
from v1.users.service import UserService
|
||
|
|
|
||
|
|
|
||
|
|
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.get("/{username}", response_model=UserResponse)
|
||
|
|
async def get_by_username(
|
||
|
|
username: Annotated[
|
||
|
|
str, Path(min_length=3, max_length=30, pattern="^[a-zA-Z0-9_]+$")
|
||
|
|
],
|
||
|
|
service: Annotated[UserService, Depends(get_user_service)],
|
||
|
|
) -> UserResponse:
|
||
|
|
return await service.get_by_username(username)
|