class SensorAlertStatus(db.Model): """Association table for sensors and alerts""" __tablename__ = 'sensor_alert_status' __table_args__ = (db.PrimaryKeyConstraint('sensor_id', 'alert_id'), ) sensor_id = db.Column(db.Integer, db.ForeignKey('sensors.id', ondelete="CASCADE")) alert_id = db.Column(db.Integer, db.ForeignKey('alerts.id', ondelete="CASCADE")) last_execute = db.Column(db.DateTime) triggered = db.Column(db.Boolean)
class NetworkAlertAssociation(db.Model): """Association table for network alerts""" __tablename__ = 'network_alerts' __table_args__ = (db.PrimaryKeyConstraint('alert_id', 'network_id'), ) network_id = db.Column(db.Integer, db.ForeignKey('networks.id', ondelete="CASCADE")) alert_id = db.Column(db.Integer, db.ForeignKey('alerts.id', ondelete="CASCADE")) networks = db.relationship("Network", back_populates="alerts") alert = db.relationship("Alert", back_populates="networks")
class CompanyUserAssociation(db.Model): """Association table for sensors and alerts""" __tablename__ = 'company_user' __table_args__ = (db.PrimaryKeyConstraint('user_id', 'company_id'), ) user_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete="CASCADE")) company_id = db.Column(db.Integer, db.ForeignKey('companies.id', ondelete="CASCADE")) role = db.Column(db.String, default=C_ROLE_DEFAULT) user = db.relationship("User", back_populates="companies") company = db.relationship("Company", back_populates="users")
class SensorEventAssociation(db.Model): """ Association table for sensors and events """ __tablename__ = 'sensor_event' __table_args__ = (db.PrimaryKeyConstraint('sensor_id', 'event_id'), ) sensor_id = db.Column(db.Integer, db.ForeignKey('sensors.id', ondelete="CASCADE")) event_id = db.Column(db.String, db.ForeignKey('events.id', ondelete="CASCADE")) # last_execute = db.Column(db.DateTime) # actuator_id = db.Column(db.Integer) sensor = db.relationship("Sensor", back_populates="events") event = db.relationship("Event", back_populates="sensors")
class SensorAlertAssociation(db.Model): """ Association table for sensors and alerts actuator_id: Change config value of Sensor on alert. If alert action is a trigger type the actuator_id will be required. """ __tablename__ = 'sensor_alert' __table_args__ = (db.PrimaryKeyConstraint('sensor_id', 'alert_id'), ) sensor_id = db.Column(db.Integer, db.ForeignKey('sensors.id', ondelete="CASCADE")) alert_id = db.Column(db.Integer, db.ForeignKey('alerts.id', ondelete="CASCADE")) last_execute = db.Column(db.DateTime) actuator_id = db.Column(db.Integer) sensor = db.relationship("Sensor", back_populates="alerts") alert = db.relationship("Alert", back_populates="sensors")
# Authors: Gopal Lal # # License: www.baseapp.com/swarmsense-whitelabel-iot-platoform """Network Database Model""" import posixpath from datetime import datetime from snms.core.db import db from snms.core.storage import StoredFileMixin from snms.core.config import config network_sensor_table = db.Table( 'network_sensor', db.Model.metadata, db.Column('network_id', db.Integer, db.ForeignKey('networks.id')), db.Column('sensor_id', db.Integer, db.ForeignKey('sensors.id')), db.PrimaryKeyConstraint('network_id', 'sensor_id')) class Network(StoredFileMixin, db.Model): """Network database model.""" __tablename__ = 'networks' add_file_date_column = False file_required = False id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) company_id = db.Column(db.Integer, db.ForeignKey('companies.id')) deleted = db.Column(db.Boolean, default=False) uid = db.Column(db.String, unique=True) last_update = db.Column(db.DateTime, default=datetime.utcnow)