from db import db from typing import List class ArtistTeamUser(db.Model): __tablename__ = "ArtistTeamUser" id = db.Column( db.BigInteger, db.Sequence("ArtistTeamUser_id_seq"), server_default=db.Sequence("ArtistTeamUser_id_seq").next_value(), primary_key=True, ) artist_team_id = db.Column(db.BigInteger, db.ForeignKey("ArtistTeam.id", ondelete="CASCADE"), nullable=False) user_id = db.Column(db.Integer, db.ForeignKey("User.id", ondelete="CASCADE"), nullable=False) role = db.Column(db.Integer, nullable=False) artist_team = db.relationship("ArtistTeam", back_populates="artist_team_users") user = db.relationship("User") campaign_type_groups = db.relationship("CampaignTypeGroup", secondary="ArtistTeamUserCampaignTypeGroup") __table_args__ = ( db.UniqueConstraint("artist_team_id", "user_id", name="uq_ArtistTeamUser_artist_team_id_user_id"), ) class ArtistTeam(db.Model): __tablename__ = "ArtistTeam" id = db.Column( db.BigInteger, db.Sequence("ArtistTeam_id_seq"), server_default=db.Sequence("ArtistTeam_id_seq").next_value(), primary_key=True, ) artist_id = db.Column(db.Integer, db.ForeignKey("Artist.id", ondelete="CASCADE"), nullable=False) label_id = db.Column(db.Integer, db.ForeignKey("Label.id", ondelete="CASCADE"), primary_key=True) artist = db.relationship("Artist") label = db.relationship("Label") artist_team_users: List[ArtistTeamUser] = db.relationship( "ArtistTeamUser", back_populates="artist_team", order_by=(ArtistTeamUser.role, ArtistTeamUser.user_id), ) __table_args__ = (db.UniqueConstraint("label_id", "artist_id", name="uq_ArtistTeam_artist_id_label_id"),) artist_team_user_campaign_type_group = db.Table( "ArtistTeamUserCampaignTypeGroup", db.Model.metadata, db.Column( "artist_team_user_id", db.Integer, db.ForeignKey("ArtistTeamUser.id", ondelete="CASCADE"), primary_key=True ), db.Column("campaign_type_group_id", db.Integer, db.ForeignKey("CampaignTypeGroup.id"), primary_key=True), )