from pydantic import BaseModel, ConfigDict, field_validator from datetime import datetime class SettingsCreate(BaseModel): pin: str @field_validator('pin') @classmethod def pin_min_length(cls, v: str) -> str: if len(v) < 4: raise ValueError('PIN must be at least 4 characters') return v class SettingsUpdate(BaseModel): accent_color: str | None = None upcoming_days: int | None = None class SettingsResponse(BaseModel): id: int accent_color: str upcoming_days: int created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True) class ChangePinRequest(BaseModel): old_pin: str new_pin: str @field_validator('new_pin') @classmethod def new_pin_min_length(cls, v: str) -> str: if len(v) < 4: raise ValueError('New PIN must be at least 4 characters') return v