from datetime import datetime from typing import Any from pydantic import BaseModel, Field class TimeTrackEntry(BaseModel): id: str = Field(min_length=1, max_length=128) task: str = "" start: str end: str duration: int = Field(ge=0) class TimeTrackSync(BaseModel): device_id: str = Field(min_length=1, max_length=128) entries: list[TimeTrackEntry] = Field(default_factory=list, max_length=1000) class ZedRecord(BaseModel): source_id: str = Field(min_length=1, max_length=128) timestamp: str zed_active: bool | None = None type: str | None = None branch: str | None = None subject: str | None = None message: str | None = None author: str | None = None source: str | None = None title: str | None = None class_: str | None = Field(default=None, alias="class") model_config = {"extra": "allow", "populate_by_name": True} class ZedSync(BaseModel): device_id: str = Field(min_length=1, max_length=128) project_slug: str = Field(min_length=1, max_length=255) records: list[ZedRecord] = Field(default_factory=list, max_length=2000) class EntryUpdate(BaseModel): task: str | None = Field(default=None, max_length=512) project_slug: str | None = Field(default=None, max_length=255) notes: str | None = None status: str | None = None start_at: datetime | None = None end_at: datetime | None = None