"""Pydantic request models.""" from __future__ import annotations from pydantic import BaseModel, Field class JoinRequest(BaseModel): student_id: str = Field(min_length=1, max_length=80) name: str = Field(min_length=1, max_length=120) class AdminLoginRequest(BaseModel): password: str class StudentEventRequest(BaseModel): # Bounded set of event kinds — anything else returns 422 instead of # silently filling the audit log with junk. kind: str = Field(pattern=r"^(blur|focus|visibility_hidden|visibility_visible)$") question_idx: int | None = Field(default=None, ge=0, le=10_000)