from fastapi import APIRouter, Depends from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.database import get_db from app.models.setting import Setting from app.schemas.setting import SettingOut, SettingUpdate router = APIRouter(tags=["settings"]) @router.get("/api/settings/{key}", response_model=SettingOut) async def get_setting(key: str, db: AsyncSession = Depends(get_db)): result = await db.execute(select(Setting).where(Setting.key == key)) setting = result.scalar_one_or_none() if setting is None: return SettingOut(key=key, value=None) return setting @router.put("/api/settings/{key}", response_model=SettingOut) async def update_setting( key: str, data: SettingUpdate, db: AsyncSession = Depends(get_db) ): result = await db.execute(select(Setting).where(Setting.key == key)) setting = result.scalar_one_or_none() if setting is None: setting = Setting(key=key, value=data.value) db.add(setting) else: setting.value = data.value await db.commit() await db.refresh(setting) return setting