Skip to main content
Glama
chats.py2.91 kB
from datetime import datetime, timezone from sqlalchemy import ( Column, Integer, String, Text, DateTime, ForeignKey, Boolean, JSON, Enum as SQLEnum, ) from mcp_host.database.db import Base from sqlalchemy.orm import relationship import enum class FileUploadStatus(str, enum.Enum): """Status enum for file upload tracking.""" PENDING = "pending" PROCESSING = "processing" COMPLETED = "completed" FAILED = "failed" class FileUpload(Base): """File upload tracking model for monitoring processing status.""" __tablename__ = "file_uploads" id = Column(String(100), primary_key=True, index=True) user_id = Column(String(100), index=True, nullable=False) filename = Column(String(500), nullable=False) subject = Column(String(100), nullable=False) topic = Column(String(200), nullable=False) status = Column(SQLEnum(FileUploadStatus), default=FileUploadStatus.PENDING, nullable=False) blob_name = Column(String(500), nullable=True) chunks_processed = Column(Integer, default=0) error_message = Column(Text, nullable=True) created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc)) updated_at = Column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc)) class ChatSession(Base): """Chat session model representing a conversation.""" __tablename__ = "chat_sessions" id = Column(Integer, primary_key=True, index=True) chat_session_id = Column(String(100), unique=True, index=True, nullable=False) user_id = Column(String(100), index=True, nullable=True) title = Column(String(200), nullable=True) is_active = Column(Boolean, default=True) created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc)) updated_at = Column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc)) # Relationships messages = relationship( "ChatMessage", back_populates="session", cascade="all, delete-orphan" ) class ChatMessage(Base): """Chat message model representing individual messages in a conversation.""" __tablename__ = "chat_messages" id = Column(Integer, primary_key=True, index=True) chat_session_id = Column( String(100), ForeignKey("chat_sessions.chat_session_id"), nullable=False ) role = Column(String(20), nullable=False) content = Column(Text, nullable=False) message_metadata = Column(JSON, nullable=True) created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc)) updated_at = Column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc)) # Relationships session = relationship("ChatSession", back_populates="messages")

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Chukwuebuka-2003/ebuka_mcps'

If you have feedback or need assistance with the MCP directory API, please join our Discord server