Initial commit
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
"""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,
|
||||
)
|
||||
Reference in New Issue
Block a user