Files
F-r-ldraledigplannerare/backend/app/models/break_period.py
T
2026-06-01 16:48:21 +02:00

54 lines
1.4 KiB
Python

"""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,
)