From af714e7b9d3c155c24ac6e3d6358efa93933d2c5 Mon Sep 17 00:00:00 2001 From: jessikitty Date: Fri, 25 Sep 2026 00:43:33 +1000 Subject: [PATCH] Add SetShare model for per-user set sharing --- app/models/set_share.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 app/models/set_share.py 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''