from __future__ import annotations from fastapi import APIRouter, Depends from fastapi.responses import JSONResponse from sqlalchemy.ext.asyncio import AsyncSession from ...core.database import get_db from ...core.response import error_response, success_response from ...dependencies import get_current_user from ...models import User from ...schemas.account_settings import AccountSettingsUpdateRequest from ...services.account_settings_service import AccountSettingsService router = APIRouter(prefix="/account-settings", tags=["account-settings"]) def _service(db: AsyncSession, current_user: User) -> AccountSettingsService: return AccountSettingsService(db, tenant_id=int(current_user.tenant_id)) @router.get("/me") async def get_my_account_settings( db: AsyncSession = Depends(get_db), current_user: User = Depends(get_current_user), ): settings = await _service(db, current_user).get_settings(user=current_user) return success_response(settings.model_dump(mode="json")) @router.put("/me") async def update_my_account_settings( body: AccountSettingsUpdateRequest, db: AsyncSession = Depends(get_db), current_user: User = Depends(get_current_user), ): service = _service(db, current_user) try: settings = await service.update_settings(user=current_user, body=body) except ValueError as exc: await db.rollback() return JSONResponse(status_code=400, content=error_response(400, str(exc))) await db.commit() return success_response(settings.model_dump(mode="json")) __all__ = ["router"]