from app import db # Existing models… class Domain(db.Model): __tablename__ = 'domain' __table_args__ = {'extend_existing': True} id = db.Column(db.Integer, primary_key=True) domain = db.Column(db.String(255), unique=True, nullable=False) expiration_date = db.Column(db.String(255)) ssl_expiration_date = db.Column(db.String(255)) ssl_only = db.Column(db.Boolean, default=False) def __repr__(self): return f"" class Client(db.Model): __tablename__ = 'client' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), nullable=False) phone = db.Column(db.String(255)) address = db.Column(db.String(255)) passwords = db.relationship('ClientPassword', backref='client', lazy=True, cascade="all, delete-orphan") domains = db.relationship('Domain', secondary='client_domains', backref=db.backref('clients', lazy='dynamic')) ssl_domains = db.relationship('Domain', secondary='client_ssl', backref=db.backref('ssl_clients', lazy='dynamic')) # New relationship for remotes remotes = db.relationship('ClientRemote', backref='client', lazy=True, cascade="all, delete-orphan") def __repr__(self): return f"" class ClientPassword(db.Model): __tablename__ = 'client_password' id = db.Column(db.Integer, primary_key=True) item = db.Column(db.String(255), nullable=False) username = db.Column(db.String(255), nullable=False) password = db.Column(db.String(255), nullable=False) client_id = db.Column(db.Integer, db.ForeignKey('client.id'), nullable=False) category_id = db.Column(db.Integer, db.ForeignKey('password_category.id')) category = db.relationship('PasswordCategory') def __repr__(self): return f"" class PasswordCategory(db.Model): __tablename__ = 'password_category' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), unique=True, nullable=False) def __repr__(self): return f"" # New models for Remote Categories and Client Remotes class RemoteCategory(db.Model): __tablename__ = 'remote_category' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), unique=True, nullable=False) def __repr__(self): return f"" class ClientRemote(db.Model): __tablename__ = 'client_remote' id = db.Column(db.Integer, primary_key=True) client_id = db.Column(db.Integer, db.ForeignKey('client.id'), nullable=False) remote_category_id = db.Column(db.Integer, db.ForeignKey('remote_category.id'), nullable=False) # Optional fields: depending on category, only some are used. name = db.Column(db.String(255)) ip_address = db.Column(db.String(255)) port = db.Column(db.String(10)) psk = db.Column(db.String(255)) address = db.Column(db.String(255)) details = db.Column(db.String(255)) remote_category = db.relationship('RemoteCategory') def __repr__(self): return f"" # Association tables for domains remain unchanged. client_domains = db.Table('client_domains', db.Column('client_id', db.Integer, db.ForeignKey('client.id', ondelete="CASCADE")), db.Column('domain_id', db.Integer, db.ForeignKey('domain.id')) ) client_ssl = db.Table('client_ssl', db.Column('client_id', db.Integer, db.ForeignKey('client.id', ondelete="CASCADE")), db.Column('domain_id', db.Integer, db.ForeignKey('domain.id')) )