2021-04-21 16:47:18 +00:00
|
|
|
"""
|
|
|
|
This module defines the Alert database class.
|
|
|
|
"""
|
|
|
|
|
|
|
|
from ..base import Base
|
|
|
|
|
|
|
|
|
|
|
|
class Alert(Base.Model):
|
|
|
|
__tablename__ = "alert"
|
|
|
|
id = Base.Column(Base.Integer, primary_key=True)
|
|
|
|
name = Base.Column(Base.String, nullable=False)
|
|
|
|
limit = Base.Column(Base.Integer, nullable=False)
|
|
|
|
window_size = Base.Column(Base.Integer, nullable=False)
|
|
|
|
# Foreign Keys
|
2021-05-06 12:12:11 +00:00
|
|
|
repository_id = Base.Column(Base.Integer, Base.ForeignKey("repository.id", ondelete="CASCADE"), nullable=False)
|
2021-04-21 16:47:18 +00:00
|
|
|
# Relationships
|
|
|
|
repository = Base.relationship("Repository", back_populates="alerts")
|
2021-05-01 12:25:50 +00:00
|
|
|
notifications = Base.relationship("Notification", back_populates="alert", cascade="all, delete")
|
2021-05-07 17:15:14 +00:00
|
|
|
operations = Base.relationship("BoolOperation", back_populates="alert", cascade="all, delete")
|
|
|
|
|
|
|
|
def to_json(self):
|
|
|
|
return {
|
|
|
|
'id': self.id,
|
|
|
|
'name': self.name,
|
|
|
|
'window_size': self.window_size,
|
|
|
|
'limit': self.limit,
|
|
|
|
'repository_id': self.repository_id,
|
|
|
|
'notifications': [notification.to_json() for notification in self.notifications],
|
|
|
|
'operations': [operation.to_json() for operation in self.operations],
|
|
|
|
'root_operation': [operation.to_json() for operation in self.operations if operation.is_root == True][
|
|
|
|
0] if self.operations else None
|
|
|
|
}
|