from datetime import date, datetime from pydantic import BaseModel, field_validator from app.core.sanitize import sanitize_str, validate_date_of_birth, validate_phone class ProfileRead(BaseModel): id: str user_id: str phone: str | None date_of_birth: date | None position: str | None address: str | None updated_at: datetime model_config = {"from_attributes": True} class ProfileUpdate(BaseModel): phone: str | None = None date_of_birth: date | None = None position: str | None = None address: str | None = None @field_validator("phone", mode="before") @classmethod def clean_phone(cls, v: str | None) -> str | None: return validate_phone(v) @field_validator("position", mode="before") @classmethod def clean_position(cls, v: str | None) -> str | None: return sanitize_str(v, max_len=128) @field_validator("address", mode="before") @classmethod def clean_address(cls, v: str | None) -> str | None: return sanitize_str(v, max_len=255) @field_validator("date_of_birth", mode="after") @classmethod def clean_dob(cls, v: date | None) -> date | None: return validate_date_of_birth(v)