class AssignmentSubmission(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) assignment_id = db.Column(db.Integer, db.ForeignKey('assignment.id'), nullable=False) file_location = db.Column(db.String(52), nullable=True) def __repr__(self): return f'submission({id})'
class Note(db.Model): id = db.Column(db.Integer, primary_key=True) author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) channel_id = db.Column(db.Integer, db.ForeignKey('channel.id'), nullable=False) title = db.Column(db.String(32), nullable=False) note_text = db.Column(db.String(300), nullable=False) note_imgs = db.Column(db.String(52), nullable=True) def __repr__(self): return f"Note(author_id: '{self.author_id}', classroom: '{self.classroom}')"
class Assignment(db.Model): id = db.Column(db.Integer, primary_key=True) author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) channel_id = db.Column(db.Integer, db.ForeignKey('channel.id'), nullable=False) assignment_text = db.Column(db.String(200), nullable=False) due_date = db.Column(db.DateTime, nullable=False) submission = db.relationship('AssignmentSubmission', backref='assignment', lazy=True) def __repr__(self): return f"Assignment(author_id: '{self.author_id}', classroom: '{self.classroom}')"
class Message(db.Model): id = db.Column(db.Integer, primary_key=True) author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) channel_id = db.Column(db.Integer, db.ForeignKey('channel.id'), nullable=False) contents = db.Column(db.String(100), nullable=False) ischild = db.Column( db.Integer, default=-1, nullable=False ) # if this is set to -1 then this message is not a reply date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) def __repr__(self): return f"Message(author_id: '{self.author_id}', classroom: '{self.classroom}')"
class Membership(db.Model): user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) classroom_id = db.Column(db.Integer, db.ForeignKey('classroom.id'), nullable=False) role = db.Column(db.String(7), nullable=False) __table_args__ = ( db.PrimaryKeyConstraint(user_id, classroom_id), # Allows two primary keys ) def __repr__(self): return f"Membership(user_id: '{self.user_id}', classroom_id: '{self.classroom_id}')"
class Ban(db.Model): #hasnt been fully implemented yet id = db.Column(db.Integer, primary_key=True) classroom_id = db.Column(db.Integer, db.ForeignKey('classroom.id'), nullable=False) def __repr__(self): return f"Ban(classroom: '{self.classroom_id}', user_id: '{self.user_id}')"
class Channel(db.Model): id = db.Column(db.Integer, primary_key=True) classroom_id = db.Column(db.Integer, db.ForeignKey('classroom.id'), nullable=False) name = db.Column(db.String(30), nullable=False) message = db.relationship('Message', backref='mesage', lazy=True) note = db.relationship('Note', backref='note', lazy=True) assignment = db.relationship('Assignment', backref='assignment', lazy=True) def __repr__(self): return f"Channel(classroom: '{self.classroom_id}', name: '{self.name}')"