class Notification(db.Model): ''' This class/table represents a notification to a user ''' id = db.Column(db.Integer, primary_key=True) user = db.Column(db.VARCHAR(12)) batchjob_id = db.Column(db.VARCHAR(45)) seen = db.Column(db.Integer, default=0, nullable=False) occurred_on = db.Column(db.DATETIME(), default=datetime.utcnow) def to_dict(self): data = { 'id': self.id, 'user': self.user, 'batchjob_id': self.batchjob_id, 'seen': self.seen, 'occurred_on': self.occurred_on.isoformat() + 'Z' } return data def from_dict(self, data): for field in ['user', 'batchjob_id', 'seen', 'occurred_on']: if field in data: setattr(self, field, data[field]) def __repr__(self): return '<Notification {}>'.format(self.id)
class BatchJob(db.Model): ''' Represeents an AWS Batch Job, where id is the AWS Batch Job ID. If this gets updated, make sure to update in batchEventTrigger-lambda function ''' id = db.Column(db.VARCHAR(45), primary_key=True) name = db.Column(db.VARCHAR(255)) command = db.Column(db.VARCHAR(1024)) user = db.Column(db.VARCHAR(12)) submitted_on = db.Column(db.DATETIME(), default=datetime.utcnow) log_stream_name = db.Column(db.VARCHAR(255)) status = db.Column(db.VARCHAR(15)) viewed = db.Column(db.Integer, default=1, nullable=False) def to_dict(self): data = { 'id': self.id, 'name': self.name, 'command': self.command, 'user': self.user, 'submitted_on': self.submitted_on.isoformat() + 'Z', 'log_stream_name': self.log_stream_name, 'status': self.status, 'viewed': self.viewed } return data def from_dict(self, data): for field in ['log_stream_name']: if field in data: setattr(self, field, data[field]) def __repr__(self): return '<BatchJob {}>'.format(self.id)