import uuid from datetime import date, datetime from pydantic import BaseModel, ConfigDict class EventCreate(BaseModel): event_type: str # Exactly one subject: a person or a partnership (relationship). person_id: uuid.UUID | None = None relationship_id: uuid.UUID | None = None place_id: uuid.UUID | None = None # Verbatim date string (e.g. "ABT 1850") and/or a normalized range. date_value: str | None = None date_start: date | None = None date_end: date | None = None date_precision: str | None = None calendar: str = "gregorian" detail: str | None = None notes: str | None = None class EventUpdate(BaseModel): # All optional; only fields explicitly sent are changed (PATCH semantics). event_type: str | None = None place_id: uuid.UUID | None = None date_value: str | None = None date_start: date | None = None date_end: date | None = None date_precision: str | None = None calendar: str | None = None detail: str | None = None notes: str | None = None class EventRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: uuid.UUID tree_id: uuid.UUID event_type: str person_id: uuid.UUID | None relationship_id: uuid.UUID | None place_id: uuid.UUID | None date_value: str | None date_start: date | None date_end: date | None date_precision: str | None calendar: str detail: str | None notes: str | None created_at: datetime