summaryrefslogtreecommitdiff
path: root/src/ollama_web/routes/settings_route.py
blob: 560f8d9882145a9c1d9028354d0f4a404162fe67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
"""Application settings API endpoints."""

from __future__ import annotations

from starlette.requests import Request
from starlette.responses import JSONResponse

from ..settings_store import (
    SettingsValidationError,
    load_app_settings,
    save_app_settings,
)


async def get_settings(request: Request) -> JSONResponse:
    """GET /api/settings: return effective persisted application settings."""
    runtime = request.app.state.settings
    return JSONResponse(load_app_settings(runtime.data_dir, runtime.language))


async def put_settings(request: Request) -> JSONResponse:
    """PUT /api/settings: validate and persist application settings."""
    try:
        body = await request.json()
        cleaned = save_app_settings(request.app.state.settings.data_dir, body)
    except SettingsValidationError as exc:
        return JSONResponse({"error": str(exc)}, status_code=400)
    except Exception:  # noqa: BLE001
        return JSONResponse({"error": "Invalid JSON body"}, status_code=400)
    return JSONResponse(cleaned)