File size: 1,064 Bytes
310260a | 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 | from sqlmodel import Field, SQLModel, Relationship
from typing import Optional, List, TYPE_CHECKING
from datetime import datetime
if TYPE_CHECKING:
from .user import User
from .message import Message
class Conversation(SQLModel, table=True):
"""Conversation model representing a chat session between a user and the AI agent."""
__tablename__ = "conversations"
id: Optional[int] = Field(default=None, primary_key=True)
user_id: int = Field(foreign_key="users.id", index=True)
title: Optional[str] = Field(default=None, max_length=200)
created_at: datetime = Field(default_factory=datetime.utcnow, index=True)
updated_at: datetime = Field(default_factory=datetime.utcnow, index=True)
deleted_at: Optional[datetime] = Field(default=None, index=True)
# Relationships
owner: "User" = Relationship(back_populates="conversations")
messages: List["Message"] = Relationship(
back_populates="conversation",
cascade_delete=True,
sa_relationship_kwargs={"order_by": "Message.created_at"}
)
|