"""FluentGerman.ai — Pydantic request/response schemas.""" from datetime import datetime from pydantic import BaseModel, EmailStr # ── Auth ────────────────────────────────────────────────────────────── class Token(BaseModel): access_token: str token_type: str = "bearer" class LoginRequest(BaseModel): username: str password: str # ── User ────────────────────────────────────────────────────────────── class UserCreate(BaseModel): username: str email: EmailStr password: str class UserUpdate(BaseModel): username: str | None = None email: EmailStr | None = None password: str | None = None is_active: bool | None = None class UserOut(BaseModel): id: int username: str email: str is_admin: bool is_active: bool created_at: datetime model_config = {"from_attributes": True} # ── Instruction ─────────────────────────────────────────────────────── class InstructionCreate(BaseModel): user_id: int | None = None title: str content: str type: str = "personal" # global | personal | homework class InstructionUpdate(BaseModel): title: str | None = None content: str | None = None type: str | None = None class InstructionOut(BaseModel): id: int user_id: int | None title: str content: str type: str created_at: datetime model_config = {"from_attributes": True} # ── Chat ────────────────────────────────────────────────────────────── class ChatMessage(BaseModel): role: str # "user" | "assistant" content: str class ChatRequest(BaseModel): message: str history: list[ChatMessage] = [] # ── Voice / Admin ──────────────────────────────────────────────────── class VoiceInstructionRequest(BaseModel): raw_text: str class VoiceConfigOut(BaseModel): voice_mode: str # "api" | "browser"