from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String, Text from sqlalchemy.orm import relationship from sqlalchemy.sql import func from app.db.session import Base class Router(Base): __tablename__ = "routers" id = Column(Integer, primary_key=True, index=True) owner_id = Column(Integer, ForeignKey("users.id"), nullable=False, index=True) name = Column(String(120), nullable=False) device_type = Column(String(32), nullable=False, default="routeros") host = Column(String(255), nullable=False) port = Column(Integer, nullable=False, default=22) ssh_user = Column(String(120), nullable=False, default="admin") ssh_key = Column(Text, nullable=True) ssh_password = Column(String(255), nullable=True) last_connection_status = Column(Boolean, nullable=True) last_connection_tested_at = Column(DateTime, nullable=True) last_connection_error = Column(Text, nullable=True) last_connection_hostname = Column(String(255), nullable=True) last_connection_model = Column(String(255), nullable=True) last_connection_version = Column(String(255), nullable=True) last_connection_uptime = Column(String(255), nullable=True) last_connection_transport = Column(String(32), nullable=True) last_connection_server = Column(String(255), nullable=True) last_connection_auth_mode = Column(String(64), nullable=True) last_connection_http_status = Column(String(32), nullable=True) last_connection_backup_available = Column(Boolean, nullable=True) created_at = Column(DateTime, server_default=func.now(), nullable=False) backups = relationship("Backup", back_populates="router", cascade="all, delete-orphan")