feat: GET /me endpoint
This commit is contained in:
@@ -4,5 +4,12 @@ from .auth import router as auth_router
|
|||||||
from .orders import router as orders_router
|
from .orders import router as orders_router
|
||||||
from .payments import payment_routers
|
from .payments import payment_routers
|
||||||
from .plans import router as plans_router
|
from .plans import router as plans_router
|
||||||
|
from .users import users_routers
|
||||||
|
|
||||||
routers: list[APIRouter] = [auth_router, plans_router, orders_router, *payment_routers]
|
routers: list[APIRouter] = [
|
||||||
|
auth_router,
|
||||||
|
plans_router,
|
||||||
|
orders_router,
|
||||||
|
*payment_routers,
|
||||||
|
*users_routers,
|
||||||
|
]
|
||||||
|
|||||||
3
routes/users/__init__.py
Normal file
3
routes/users/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
from .me import router as me_router
|
||||||
|
|
||||||
|
users_routers = [me_router]
|
||||||
19
routes/users/me.py
Normal file
19
routes/users/me.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
from fastapi import APIRouter, Depends
|
||||||
|
|
||||||
|
from core.deps import get_auth_context
|
||||||
|
from schemas.dto import AuthContext
|
||||||
|
from schemas.user import SubscriptionData, UserInfo
|
||||||
|
|
||||||
|
router = APIRouter(prefix="/users/me")
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("", response_model=UserInfo)
|
||||||
|
async def get_me(ctx: AuthContext = Depends(get_auth_context)):
|
||||||
|
sub_data = SubscriptionData(
|
||||||
|
devices=ctx.user.subscription.devices,
|
||||||
|
expires_at=ctx.user.subscription.expires_at,
|
||||||
|
addon_ids=[a.id for a in ctx.user.subscription.addons],
|
||||||
|
)
|
||||||
|
return UserInfo(
|
||||||
|
username=ctx.user.username, telegram_id=ctx.user.telegram_id, subscription=sub_data
|
||||||
|
)
|
||||||
@@ -1,6 +1,15 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
|
class SubscriptionData(BaseModel):
|
||||||
|
devices: int = Field()
|
||||||
|
expires_at: datetime = Field()
|
||||||
|
addon_ids: list[str] = Field()
|
||||||
|
|
||||||
|
|
||||||
class UserInfo(BaseModel):
|
class UserInfo(BaseModel):
|
||||||
username: str | None = Field()
|
username: str | None = Field(None)
|
||||||
telegram_id: str | None = Field()
|
telegram_id: str | None = Field(None)
|
||||||
|
subscription: SubscriptionData | None = Field(None)
|
||||||
|
|||||||
Reference in New Issue
Block a user