from sqlalchemy import Column, Integer, String, DateTime, Boolean, Text, Enum from sqlalchemy.orm import relationship from sqlalchemy.sql import func from enum import Enum as PyEnum from app.db.base import Base class ChatType(PyEnum): DIRECT = "direct" GROUP = "group" class Chat(Base): __tablename__ = "chats" id = Column(Integer, primary_key=True, index=True) name = Column(String, nullable=True) # Null for direct messages description = Column(Text, nullable=True) chat_type = Column(Enum(ChatType), nullable=False) avatar_url = Column(String, nullable=True) is_active = Column(Boolean, default=True) created_at = Column(DateTime(timezone=True), server_default=func.now()) updated_at = Column(DateTime(timezone=True), onupdate=func.now()) # Relationships messages = relationship("Message", back_populates="chat", cascade="all, delete-orphan") members = relationship("ChatMember", back_populates="chat", cascade="all, delete-orphan")