from datetime import datetime from typing import Optional, Any, Dict, List from pydantic import BaseModel, ConfigDict class AssistantRow(BaseModel): """Interface between OpenAIAssistant class and the database""" # OpenAIAssistant id which can be referenced in API endpoints. id: str # The object type, which is always assistant. object: str # The name of the assistant. The maximum length is 256 characters. name: Optional[str] = None # The description of the assistant. The maximum length is 512 characters. description: Optional[str] = None # The system instructions that the assistant uses. The maximum length is 32768 characters. instructions: Optional[str] = None # LLM data (name, model, etc.) llm: Optional[Dict[str, Any]] = None # OpenAIAssistant Tools tools: Optional[List[Dict[str, Any]]] = None # Files attached to this assistant. files: Optional[List[Dict[str, Any]]] = None # Metadata attached to this assistant. metadata: Optional[Dict[str, Any]] = None # OpenAIAssistant Memory memory: Optional[Dict[str, Any]] = None # True if this assistant is active is_active: Optional[bool] = None # The timestamp of when this conversation was created created_at: Optional[datetime] = None # The timestamp of when this conversation was last updated updated_at: Optional[datetime] = None model_config = ConfigDict(from_attributes=True) def serializable_dict(self): _dict = self.model_dump(exclude={"created_at", "updated_at"}) _dict["created_at"] = self.created_at.isoformat() if self.created_at else None _dict["updated_at"] = self.updated_at.isoformat() if self.updated_at else None return _dict def assistant_data(self) -> Dict[str, Any]: """Returns the assistant data as a dictionary.""" _dict = self.model_dump(exclude={"memory", "created_at", "updated_at"}) _dict["created_at"] = self.created_at.isoformat() if self.created_at else None _dict["updated_at"] = self.updated_at.isoformat() if self.updated_at else None return _dict