H2P3B / src /models /conversation.py
muhammadshaheryar's picture
Add application file
dd1b74d
from sqlmodel import SQLModel, Field, Relationship
from datetime import datetime
from typing import Optional, TYPE_CHECKING
import uuid
if TYPE_CHECKING:
from .message import Message
from .user import User
class ConversationBase(SQLModel):
title: str = Field(default="New Conversation", max_length=255)
language_preference: str = Field(default="en", max_length=10)
metadata_json: Optional[str] = Field(default=None)
class Conversation(ConversationBase, table=True):
"""
Represents a chat session between user and AI assistant, including message history and metadata
"""
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
user_id: Optional[uuid.UUID] = Field(default=None, foreign_key="user.id")
created_at: datetime = Field(default_factory=datetime.utcnow)
updated_at: datetime = Field(default_factory=datetime.utcnow)
# Relationships
messages: list["Message"] = Relationship(back_populates="conversation")
user: Optional["User"] = Relationship(back_populates="conversations")
class ConversationCreate(ConversationBase):
pass
class ConversationRead(ConversationBase):
id: uuid.UUID
user_id: Optional[uuid.UUID]
created_at: datetime
updated_at: datetime