1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-24 14:04:19 +00:00
pds-2021-g2-nest/nest_backend/database/tables/Alert.py

34 lines
1.3 KiB
Python
Raw Normal View History

"""
This module defines the Alert database class.
"""
2021-05-07 17:46:14 +00:00
from ..base import ext
2021-05-17 13:29:08 +00:00
from .Enums import ConditionMode
2021-05-07 17:46:14 +00:00
class Alert(ext.Model):
__tablename__ = "alert"
2021-05-07 17:46:14 +00:00
id = ext.Column(ext.Integer, primary_key=True)
name = ext.Column(ext.String, nullable=False)
limit = ext.Column(ext.Integer, nullable=False)
window_size = ext.Column(ext.Integer, nullable=False)
2021-05-17 13:29:08 +00:00
evaluation_mode = ext.Column(ext.Enum(ConditionMode), nullable=False, default=ConditionMode.all_or)
# Foreign Keys
2021-05-07 17:46:14 +00:00
repository_id = ext.Column(ext.Integer, ext.ForeignKey("repository.id", ondelete="CASCADE"), nullable=False)
# Relationships
2021-05-07 17:46:14 +00:00
repository = ext.relationship("Repository", back_populates="alerts")
2021-05-11 16:45:40 +00:00
notifications = ext.relationship("Notification", back_populates="alert")
2021-05-17 13:29:08 +00:00
conditions = ext.relationship("MadeOf", back_populates="alert")
2021-05-07 17:15:14 +00:00
def to_json(self):
return {
'id': self.id,
'name': self.name,
'window_size': self.window_size,
'limit': self.limit,
'repository_id': self.repository_id,
2021-05-17 13:29:08 +00:00
'evaluation_mode': self.evaluation_mode.value,
2021-05-07 17:15:14 +00:00
'notifications': [notification.to_json() for notification in self.notifications],
2021-05-17 13:29:08 +00:00
'conditions': [c.condition.to_json() for c in self.conditions]
2021-05-07 17:15:14 +00:00
}