Add self-hosted combined timesheet server
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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
|
||||
Reference in New Issue
Block a user