"""ProjectTransferTerm model.""" from abacus_common_logic.connectors.database import db from abacus_common_logic.models.base import CRUDMixin from sqlalchemy import Enum, delete TERM_TYPES = ('track', 'product', 'artist', 'catalog', 'label') class ProjectTransferTerm(db.Model, CRUDMixin): """project_transfer_term.""" __tablename__ = 'project_transfer_term' project_transfer_term_id = db.Column(db.Integer, primary_key=True) job_id = db.Column(db.Integer, nullable=False, index=True) contract_id = db.Column(db.Integer, nullable=False) destination_contract_term_id = db.Column(db.Integer, nullable=True) name = db.Column(db.String(180), nullable=True) term_type = db.Column( Enum(*TERM_TYPES, name='project_transfer_term_type', create_type=False), nullable=False, ) attachments = db.Column(db.JSON, nullable=True) attachment_relations = db.Column(db.JSON, nullable=True) created_by = db.Column(db.String(255), nullable=False) created_at = db.Column(db.DateTime, nullable=False) @classmethod def delete_by_job(cls, job_id): """Delete all terms for a job. MySQL cascades to project_transfer_term_condition.""" db.session.execute(delete(cls).where(cls.job_id == job_id))