Spaces:
Sleeping
Sleeping
File size: 1,326 Bytes
6a3de9e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
from sqlmodel import SQLModel, Field
from typing import Optional, Dict, Any
from datetime import datetime
from uuid import UUID, uuid4
from enum import Enum
from sqlalchemy.types import JSON
class TaskOperationTypeEnum(str, Enum):
add_task = "add_task"
list_tasks = "list_tasks"
complete_task = "complete_task"
delete_task = "delete_task"
update_task = "update_task"
class TaskOperationBase(SQLModel):
conversation_id: UUID = Field(nullable=False, foreign_key="conversation.id")
operation_type: TaskOperationTypeEnum = Field(nullable=False)
operation_params: Dict[str, Any] = Field(sa_type=JSON)
result: Optional[Dict[str, Any]] = Field(default=None, sa_type=JSON)
class TaskOperation(TaskOperationBase, table=True):
"""
Represents an action performed on tasks (add, list, complete, update, delete) triggered by AI interpretation.
"""
id: Optional[UUID] = Field(default_factory=uuid4, primary_key=True)
timestamp: datetime = Field(default_factory=datetime.utcnow)
class TaskOperationCreate(TaskOperationBase):
"""Schema for creating a new task operation."""
conversation_id: UUID
operation_type: TaskOperationTypeEnum
class TaskOperationRead(TaskOperationBase):
"""Schema for reading task operation data."""
id: UUID
timestamp: datetime |