todoagent / models /conversation.py
Abdullahcoder54's picture
push
a67367b
from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel, Field
import uuid
class Message(BaseModel):
role: str
content: str
class Conversation(BaseModel):
id: str = Field(default_factory=lambda: str(uuid.uuid4()))
user_id: str
messages: List[Message] = Field(default_factory=list)
created_at: datetime = Field(default_factory=datetime.utcnow)
updated_at: datetime = Field(default_factory=datetime.utcnow)
def add_message(self, role: str, content: str):
self.messages.append(Message(role=role, content=content))
self.updated_at = datetime.utcnow()
def to_dict(self):
return {
"id": self.id,
"user_id": self.user_id,
"messages": [msg.model_dump() for msg in self.messages],
"created_at": self.created_at.isoformat(),
"updated_at": self.updated_at.isoformat(),
}
@classmethod
def from_dict(cls, data: dict):
data["messages"] = [Message(**msg) for msg in data["messages"]]
return cls(**data)