TaskFlow / src /models /conversation.py
BilalCode's picture
taskflow todo app
310260a
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"}
)