mirror of
https://github.com/pds-nest/nest.git
synced 2024-11-24 14:04:19 +00:00
33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
"""
|
|
This module defines the Alert database class.
|
|
"""
|
|
|
|
from ..base import ext
|
|
from .Enums import ConditionMode
|
|
|
|
|
|
class Alert(ext.Model):
|
|
__tablename__ = "alert"
|
|
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)
|
|
evaluation_mode = ext.Column(ext.Enum(ConditionMode), nullable=False, default=ConditionMode.all_or)
|
|
# Foreign Keys
|
|
repository_id = ext.Column(ext.Integer, ext.ForeignKey("repository.id", ondelete="CASCADE"), nullable=False)
|
|
# Relationships
|
|
repository = ext.relationship("Repository", back_populates="alerts")
|
|
notifications = ext.relationship("Notification", back_populates="alert")
|
|
conditions = ext.relationship("MadeOf", back_populates="alert")
|
|
|
|
def to_json(self):
|
|
return {
|
|
'id': self.id,
|
|
'name': self.name,
|
|
'window_size': self.window_size,
|
|
'limit': self.limit,
|
|
'repository_id': self.repository_id,
|
|
'evaluation_mode': self.evaluation_mode.value,
|
|
'notifications': [notification.to_json() for notification in self.notifications],
|
|
'conditions': [c.condition.to_json() for c in self.conditions]
|
|
}
|