from datetime import date from pydantic import BaseModel, EmailStr, Field class RegisterRequest(BaseModel): email: EmailStr password: str = Field(min_length=10, max_length=255) class LoginRequest(BaseModel): email: EmailStr password: str = Field(min_length=1, max_length=255) class MFAChallengeRequest(BaseModel): code: str = Field(min_length=1, max_length=32) class TimeEntryCreate(BaseModel): date: date start_time: str end_time: str break_minutes: int | None = Field(default=None, ge=0) break_mode: str | None = Field(default=None, pattern="^(manual|auto)$") notes: str | None = None class TimeEntryUpdate(BaseModel): start_time: str | None = None end_time: str | None = None break_minutes: int | None = Field(default=None, ge=0) break_mode: str | None = Field(default=None, pattern="^(manual|auto)$") notes: str | None = None class TimeEntryOut(BaseModel): id: str date: date start_time: str end_time: str break_minutes: int break_mode: str net_minutes: int notes: str | None