fooder-api/fooder/view/user_settings.py

27 lines
882 B
Python

from fastapi import APIRouter, Depends
from fooder.context import Context, AuthContextDependency
from fooder.controller.user_settings import UserSettingsController
from fooder.model.user_settings import UserSettingsModel, UserSettingsUpdateModel
router = APIRouter(tags=["user_settings"])
_auth_ctx = AuthContextDependency()
@router.get("", response_model=UserSettingsModel)
async def get_user_settings(
ctx: Context = Depends(_auth_ctx),
):
return await ctx.repo.user_settings.get_by_user_id(ctx.user.id)
@router.patch("", response_model=UserSettingsModel)
async def update_user_settings(
data: UserSettingsUpdateModel,
ctx: Context = Depends(_auth_ctx),
):
async with ctx.repo.transaction():
settings = await ctx.repo.user_settings.get_by_user_id(ctx.user.id)
await UserSettingsController(ctx, settings).update(data)
return settings