37 lines
865 B
Python
37 lines
865 B
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Optional, Dict, Any
|
|
|
|
from pydantic import BaseModel, Field, ConfigDict
|
|
|
|
|
|
class TaskBase(BaseModel):
|
|
action: str
|
|
target: str
|
|
playbook: Optional[str] = None
|
|
status: str = Field(default="pending")
|
|
result_data: Optional[Dict[str, Any]] = None
|
|
error_message: Optional[str] = None
|
|
|
|
|
|
class TaskCreate(TaskBase):
|
|
pass
|
|
|
|
|
|
class TaskUpdate(BaseModel):
|
|
status: Optional[str] = None
|
|
started_at: Optional[datetime] = None
|
|
completed_at: Optional[datetime] = None
|
|
error_message: Optional[str] = None
|
|
result_data: Optional[Dict[str, Any]] = None
|
|
|
|
|
|
class TaskOut(TaskBase):
|
|
id: str
|
|
started_at: Optional[datetime] = None
|
|
completed_at: Optional[datetime] = None
|
|
created_at: datetime
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|