diff --git a/app/models/set_share.py b/app/models/set_share.py new file mode 100644 index 0000000..4989619 --- /dev/null +++ b/app/models/set_share.py @@ -0,0 +1,31 @@ +""" +Explicit share: one user granted access to one set whose visibility +is 'shared'. + +Created by: Jess Rogerson (yelling commands at Claude.AI) +""" + +from datetime import datetime + +from app import db + + +class SetShare(db.Model): + """A set shared with a specific user.""" + + __tablename__ = 'set_shares' + __table_args__ = ( + db.UniqueConstraint('set_id', 'user_id', name='uq_set_share'), + ) + + id = db.Column(db.Integer, primary_key=True) + set_id = db.Column(db.Integer, db.ForeignKey('sets.id', ondelete='CASCADE'), + nullable=False, index=True) + user_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'), + nullable=False, index=True) + created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) + + user = db.relationship('User', lazy='joined') + + def __repr__(self): + return f''