add user_corpus m2m relationship

This commit is contained in:
Patrick Jentsch 2023-01-12 16:26:33 +01:00
parent 0bf54ad00b
commit 7b20b11c6e
2 changed files with 49 additions and 2 deletions

View File

@ -257,7 +257,7 @@ class Avatar(HashidMixin, FileMixin, db.Model):
# Primary key # Primary key
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
# Foreign keys # Foreign keys
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), unique=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
@property @property
def path(self): def path(self):
@ -276,7 +276,16 @@ class Avatar(HashidMixin, FileMixin, db.Model):
**self.file_mixin_to_json_serializeable() **self.file_mixin_to_json_serializeable()
} }
return json_serializeable return json_serializeable
corpus_followers = db.Table(
'corpus_followers',
db.Model.metadata,
db.Column('user_id', db.ForeignKey('users.id'), primary_key=True),
db.Column('corpus_id', db.ForeignKey('corpora.id'), primary_key=True)
)
class User(HashidMixin, UserMixin, db.Model): class User(HashidMixin, UserMixin, db.Model):
__tablename__ = 'users' __tablename__ = 'users'
# Primary key # Primary key
@ -327,6 +336,13 @@ class User(HashidMixin, UserMixin, db.Model):
cascade='all, delete-orphan', cascade='all, delete-orphan',
lazy='dynamic' lazy='dynamic'
) )
followed_corpora = db.relationship(
'Corpus',
secondary=corpus_followers,
primaryjoin=(corpus_followers.c.user_id == id),
backref=db.backref('followers', lazy='dynamic'),
lazy='dynamic'
)
jobs = db.relationship( jobs = db.relationship(
'Job', 'Job',
backref='user', backref='user',

View File

@ -0,0 +1,31 @@
"""Add corpus_followers table
Revision ID: 4aa88f253dab
Revises: 5b2a6e590166
Create Date: 2023-01-12 14:47:39.492875
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '4aa88f253dab'
down_revision = '5b2a6e590166'
branch_labels = None
depends_on = None
def upgrade():
op.create_table(
'corpus_followers',
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('corpus_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['corpus_id'], ['corpora.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
sa.PrimaryKeyConstraint('user_id', 'corpus_id')
)
def downgrade():
op.drop_table('corpus_followers')