"""TrackWriter model.""" from sqlalchemy import Column from sqlalchemy import ForeignKey from sqlalchemy import Integer from sqlalchemy import String from ows_product_physical.connector import mysql class TrackWriter(mysql.BaseModel): """TrackWriter Model. Represents the track writer for the track in art_relations. """ __tablename__ = 'track_writer' track_writer_id = Column( Integer, primary_key=True, autoincrement=True, nullable=False) track_id = Column(Integer) upc = Column(Integer) cd = Column(Integer) writer_name = Column(String) unique_track_id = Column(Integer, ForeignKey('track.id')) def to_dict(self): """Dictionary representation of Track Writer.""" return { 'track_writer_id': self.track_writer_id, 'unique_track_id': self.unique_track_id, 'writer_name': self.writer_name, } def delete_by_track_id(track_id, session): """Delete track writers in track_writer table for a particular track. Args: session (object): database connection object. track_id (int): id of track associated with the writer. Response: None """ session.query(TrackWriter)\ .filter(TrackWriter.unique_track_id == track_id)\ .delete() def bulk_delete_by_track_id(track_numbers, session): """Delete all writers for all tracks. Args: track_numbers (list): list of track numbers to delete writers for. session (object): database connection object """ session.query(TrackWriter) \ .filter(TrackWriter.unique_track_id.in_(track_numbers)) \ .delete(synchronize_session=False)