from app import db # Association tables for many-to-many relationships. client_domains = db.Table('client_domains', db.Column('client_id', db.Integer, db.ForeignKey('client.id')), 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')), db.Column('domain_id', db.Integer, db.ForeignKey('domain.id')) ) 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)) # WHOIS expiration date ssl_expiration_date = db.Column(db.String(255)) # SSL certificate expiration date ssl_only = db.Column(db.Boolean, default=False) # True if added via the SSL-only form 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)) # Relationship for storing passwords passwords = db.relationship('ClientPassword', backref='client', lazy=True) # Many-to-many relationships for domains and SSL domains domains = db.relationship('Domain', secondary=client_domains, backref='clients') ssl_domains = db.relationship('Domain', secondary=client_ssl, backref='ssl_clients') 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) def __repr__(self): return f""