ai-knowledge-assistant / app /db_models.py
Hamza4100's picture
Upload 20 files
a631409 verified
"""SQLAlchemy database models for conversations."""
from sqlalchemy import Column, String, Integer, Text, ForeignKey, JSON
from sqlalchemy.orm import relationship
from app.database import Base
import uuid
class DBConversation(Base):
"""Database model for conversations."""
__tablename__ = "conversations"
id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
title = Column(String, default="New Chat")
created_at = Column(String, nullable=False)
updated_at = Column(String, nullable=False)
# Relationship to messages
messages = relationship(
"DBMessage",
back_populates="conversation",
cascade="all, delete-orphan",
order_by="DBMessage.id"
)
class DBMessage(Base):
"""Database model for conversation messages."""
__tablename__ = "messages"
id = Column(Integer, primary_key=True, autoincrement=True)
conversation_id = Column(String, ForeignKey("conversations.id"), nullable=False)
role = Column(String, nullable=False) # 'user' or 'assistant'
content = Column(Text, nullable=False)
timestamp = Column(String, nullable=False)
sources = Column(JSON, default=list) # Stored as JSON array
# Relationship to conversation
conversation = relationship("DBConversation", back_populates="messages")