"""API schemas (Pydantic) for PersonalData. Schemas validate request bodies and shape responses. Separate from domain entities so the wire format can evolve independently. """ from datetime import datetime from uuid import UUID from pydantic import BaseModel, Field from app.entities.personal_data import PersonalData class PersonalDataUpdate(BaseModel): """Partial update — all fields optional.""" salary_type: str | None = Field(None, pattern="^(monthly|hourly)$") employment_status: str | None = Field(None, pattern="^(employed|jobseeking|none)$") class PersonalDataResponse(BaseModel): uuid: UUID workspace_id: UUID name: str salary_type: str employment_status: str created_at: datetime | None deleted_at: datetime | None @classmethod def from_entity(cls, entity: PersonalData) -> "PersonalDataResponse": return cls( uuid=entity.uuid, workspace_id=entity.workspace_id, name=entity.name, salary_type=entity.salary_type, employment_status=entity.employment_status, created_at=entity.created_at, deleted_at=entity.deleted_at, )