""" Database model for application """ from flask_sqlalchemy import SQLAlchemy import requests import yaml db = SQLAlchemy() host_classes = db.Table('host_classes', db.Column('host_id', db.ForeignKey('host.id')), db.Column('class_id', db.ForeignKey('puppet_class.id'))) # class HostClasses(db.Model): # __tablename__ = 'host_classes' # id = db.Column(db.Integer, primary_key=True) # host_id = db.Column(db.Integer, db.ForeignKey('host.id'), nullable=False) # class_id = db.Column(db.Integer, db.ForeignKey('puppet_class.id'), nullable=False) class Host(db.Model): __tablename__ = 'host' id = db.Column(db.Integer, primary_key=True) fqdn = db.Column(db.Text, nullable=False) environment = db.Column(db.Text) # classes = db.relationship('HostClasses', backref='host', lazy='dynamic') classes = db.relationship('PuppetClass', back_populates='hosts', secondary=host_classes) def serialize(self): return { column.name: self.__getattribute__(column.name) for column in self.__table__.columns } class PuppetClass(db.Model): __tablename__ = 'puppet_class' id = db.Column(db.Integer, primary_key=True) class_name = db.Column(db.Text, nullable=False) source_file = db.Column(db.Text) hosts = db.relationship('Host', back_populates='classes', secondary=host_classes)