from sqlalchemy import Column, Integer, String, Float, DateTime, Boolean from sqlalchemy.orm import relationship from datetime import datetime from .base import Base class Group(Base): """Модель для хранения Telegram групп""" __tablename__ = 'groups' id = Column(Integer, primary_key=True) chat_id = Column(String, unique=True, nullable=False) # ID группы в Telegram title = Column(String, nullable=False) # Название группы slow_mode_delay = Column(Integer, default=0) # Задержка между сообщениями (сек) last_message_time = Column(DateTime, nullable=True) # Время последнего отправленного сообщения is_active = Column(Boolean, default=True) # Активна ли группа description = Column(String, nullable=True) # Описание группы (для поиска) member_count = Column(Integer, default=0) # Количество участников creator_id = Column(String, nullable=True) # ID создателя группы created_at = Column(DateTime, default=datetime.utcnow) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) # Связь со многими сообщениями (через таблицу связей) messages = relationship('MessageGroup', back_populates='group', cascade='all, delete-orphan') # Связь с участниками группы members = relationship('GroupMember', back_populates='group', cascade='all, delete-orphan') # Связь с ключевыми словами keywords = relationship('GroupKeyword', back_populates='group', cascade='all, delete-orphan') # Связь со статистикой statistics = relationship('GroupStatistics', back_populates='group', cascade='all, delete-orphan', uselist=False) def __repr__(self): return f''