36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
from typing import Any
|
|
|
|
from fastapi import APIRouter, Depends
|
|
from pydantic import BaseModel, Field
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.auth.deps import get_current_user
|
|
from app.db.base import get_db
|
|
from app.db.models import User
|
|
from app.settings.service import SETTING_KEYS, SettingsService
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
class SettingsPatch(BaseModel):
|
|
openrouter_model: str | None = None
|
|
memory_extract_model: str | None = None
|
|
openrouter_vision_model: str | None = None
|
|
openrouter_reasoning_effort: str | None = None
|
|
rag_enabled: bool | None = None
|
|
rag_top_k: int | None = Field(default=None, ge=1, le=50)
|
|
|
|
|
|
@router.get("/settings")
|
|
def get_settings_route(db: Session = Depends(get_db), user: User = Depends(get_current_user)) -> dict[str, Any]:
|
|
return SettingsService(db).snapshot()
|
|
|
|
|
|
@router.patch("/settings")
|
|
def patch_settings_route(
|
|
payload: SettingsPatch,
|
|
db: Session = Depends(get_db), user: User = Depends(get_current_user),
|
|
) -> dict[str, Any]:
|
|
updates = payload.model_dump(exclude_unset=True)
|
|
return SettingsService(db).patch(updates)
|