from __future__ import annotations from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.core.database import get_db from app.core.dependencies import get_current_user from app.core.responses import api_success from app.models.user import User from app.schemas.user import UserProfile from app.services.entitlement_service import EntitlementService, entitlement_dict from app.services.topic_session_service import TopicSessionService router = APIRouter() @router.get("/profile") def profile( db: Session = Depends(get_db), current_user: User = Depends(get_current_user), ) -> dict: data = UserProfile.model_validate(current_user).model_dump(mode="json") view = EntitlementService.active_entitlement( db, current_user, monthly_topic_used=TopicSessionService.monthly_used_count(db, current_user.id), ) data["entitlement"] = entitlement_dict(view) return api_success(data)