from datetime import datetime import json from . import db class ChatSession(db.Model): __tablename__ = "chat_sessions" id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False) title = db.Column(db.String(255), default="New Chat") created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) messages = db.relationship( "ChatMessage", backref="session", lazy=True, cascade="all, delete-orphan", order_by="ChatMessage.created_at" ) def to_dict(self): return { "id": self.id, "title": self.title, "created_at": self.created_at.isoformat(), "updated_at": self.updated_at.isoformat(), } class ChatMessage(db.Model): __tablename__ = "chat_messages" id = db.Column(db.Integer, primary_key=True) session_id = db.Column(db.Integer, db.ForeignKey("chat_sessions.id"), nullable=False) role = db.Column(db.String(16), nullable=False) # "user" | "assistant" content = db.Column(db.Text, nullable=False) context_ids = db.Column(db.Text, nullable=True) # JSON list of doc/url ids used created_at = db.Column(db.DateTime, default=datetime.utcnow) def to_dict(self): return { "id": self.id, "role": self.role, "content": self.content, "created_at": self.created_at.isoformat(), }