from datetime import datetime from sqlalchemy import PrimaryKeyConstraint, ForeignKey, Integer, String, DateTime from sqlalchemy.orm import relationship, Mapped, mapped_column from utilities.database import db # Импортируем db из backend_flask.py class Users(db.Model): chat_id = db.Column(db.Integer, primary_key=True) telegram_id = db.Column(db.String(80), unique=True, nullable=False) user_email = db.Column(db.String(255), unique=True, nullable=False) is_blocked = db.Column(db.Boolean, default=False) subscriptions = relationship("Subscriptions", backref="user", cascade="all, delete-orphan") # Добавлено cascade class Regions(db.Model): region_id = db.Column(db.Integer, primary_key=True) region_name = db.Column(db.String(255), nullable=False) active = db.Column(db.Boolean, default=True) class Subscriptions(db.Model): region_id = db.Column(db.Integer, nullable=False) active = db.Column(db.Boolean, default=True) skip = db.Column(db.Boolean, default=False) disaster_only = db.Column(db.Boolean, default=False) chat_id = db.Column(db.Integer, ForeignKey('users.chat_id', ondelete='CASCADE'), nullable=False) #Добавляем внешний ключ с ondelete __table_args__ = ( PrimaryKeyConstraint('chat_id', 'region_id'), ) class UILogs(db.Model): id = db.Column(db.Integer, primary_key=True) chat_id = db.Column(db.Integer, nullable=False) actions = db.Column(db.String(500), nullable=False) timestamp = db.Column(db.DateTime, default=db.func.current_timestamp()) class UserEvents(db.Model): id = db.Column(db.Integer, primary_key=True) chat_id = db.Column(db.Integer, nullable=False) telegram_id = db.Column(db.String(80), nullable=False) action = db.Column(db.String(500), nullable=False) timestamp = db.Column(db.DateTime, default=db.func.current_timestamp()) class Systems(db.Model): __tablename__ = 'systems' system_id = db.Column(db.String(255), primary_key=True) system_name = db.Column(db.String(255), nullable=False) name = db.Column(db.String(255), nullable=False) def __repr__(self): return f'' class WebActionLog(db.Model): __tablename__ = 'web_action_logs' id: Mapped[int] = mapped_column(Integer, primary_key=True) ldap_user_id: Mapped[str] = mapped_column(String(255), nullable=False) username: Mapped[str | None] = mapped_column(String(255)) timestamp: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow) action: Mapped[str] = mapped_column(String(255), nullable=False) details: Mapped[str | None] = mapped_column(String(1024)) def __repr__(self): return f""