Spaces:
Sleeping
Sleeping
| 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(), | |
| } | |
| def from_dict(cls, data: dict): | |
| data["messages"] = [Message(**msg) for msg in data["messages"]] | |
| return cls(**data) | |