26 lines
788 B
Python
26 lines
788 B
Python
"""Base class for ticket classes."""
|
|
|
|
from typing import Any, Dict
|
|
from pydantic import BaseModel, Field
|
|
from abc import ABC, abstractmethod
|
|
|
|
|
|
class TicketFieldAttribute(BaseModel):
|
|
fieldName: str = Field(description="Human-readable field name")
|
|
field: str = Field(description="Ticket field ID/key")
|
|
|
|
|
|
class Task(BaseModel):
|
|
# A very flexible approach for now. Might want to be more strict in the future.
|
|
data: Dict[str, Any] = Field(default_factory=dict, description="Task data")
|
|
|
|
|
|
class TicketBase(ABC):
|
|
@abstractmethod
|
|
async def read_attributes(self) -> list[TicketFieldAttribute]: ...
|
|
|
|
@abstractmethod
|
|
async def read_tasks(self, limit: int = 0) -> list[Task]: ...
|
|
|
|
@abstractmethod
|
|
async def write_tasks(self, tasklist: list[Task]) -> None: ...
|