"""API schemas (Pydantic) for BreakPeriod. Schemas validate request bodies and shape responses. Separate from domain entities so the wire format can evolve independently. """ from datetime import date, datetime from uuid import UUID from pydantic import BaseModel, Field from app.entities.break_period import BreakPeriod class BreakPeriodCreate(BaseModel): workspace_id: UUID name: str = Field(min_length=1, max_length=255) start_date: date end_date: date target_weeks: int = Field(ge=1, le=52) class BreakPeriodUpdate(BaseModel): """Full replacement — all fields required (PUT semantics). Partial updates are not supported.""" name: str = Field(min_length=1, max_length=255) start_date: date end_date: date target_weeks: int = Field(ge=1, le=52) class BreakPeriodResponse(BaseModel): id: UUID workspace_id: UUID name: str start_date: date end_date: date target_weeks: int created_at: datetime | None updated_at: datetime | None @classmethod def from_entity(cls, entity: BreakPeriod) -> "BreakPeriodResponse": return cls( id=entity.id, workspace_id=entity.workspace_id, name=entity.name, start_date=entity.start_date, end_date=entity.end_date, target_weeks=entity.target_weeks, created_at=entity.created_at, updated_at=entity.updated_at, )