brief-rags-bench/app/models/settings.py

57 lines
1.5 KiB
Python

"""User settings Pydantic models."""
from typing import Optional
from pydantic import BaseModel, Field
class EnvironmentSettings(BaseModel):
"""Settings for a specific environment (IFT/PSI/PROD).
According to DB_API_CONTRACT_V2.md:
- apiMode, withClassify, resetSessionMode have defaults
- All other fields are nullable (Optional)
"""
apiMode: str = "bench"
bearerToken: Optional[str] = None
systemPlatform: Optional[str] = None
systemPlatformUser: Optional[str] = None
platformUserId: Optional[str] = None
platformId: Optional[str] = None
withClassify: bool = False
resetSessionMode: bool = True
class EnvironmentSettingsUpdate(BaseModel):
"""Partial update for environment settings (for PATCH requests).
All fields are optional to support partial updates.
"""
apiMode: Optional[str] = None
bearerToken: Optional[str] = None
systemPlatform: Optional[str] = None
systemPlatformUser: Optional[str] = None
platformUserId: Optional[str] = None
platformId: Optional[str] = None
withClassify: Optional[bool] = None
resetSessionMode: Optional[bool] = None
class UserSettings(BaseModel):
"""User settings for all environments."""
user_id: str
settings: dict[str, EnvironmentSettings] # ift, psi, prod
updated_at: str
class UserSettingsUpdate(BaseModel):
"""Partial update user settings request (PATCH).
Only the environments/fields provided will be updated.
Unprovided fields remain unchanged.
"""
settings: dict[str, EnvironmentSettingsUpdate]