"""Subgenre Modeling.""" from sqlalchemy import Column from sqlalchemy import Enum from sqlalchemy import ForeignKey from sqlalchemy import Integer from sqlalchemy import String from sqlalchemy import SmallInteger from sqlalchemy import BigInteger from backend.connectors import mysql class Subgenre(mysql.BaseModel): """Model for Subgenre.""" __tablename__ = 'subgenre' name = Column(String(80), nullable=False) genre_id = Column(SmallInteger, ForeignKey('genre.genre_id'), nullable=False) orchard_id = Column(SmallInteger, primary_key=True, autoincrement=True) # noqa: A003 music_video = Column(Enum('N', 'Y'), nullable=True, default='N') composer = Column(Enum('N', 'Y'), nullable=True, default='N',) def to_dict(self): """Subgenre data dictionary. Returns: dict """ return { 'name': self.name, 'genre_id': self.genre_id, 'orchard_id': self.orchard_id, 'music_video': self.music_video, 'composer': self.composer } class ReleaseSubgenre(mysql.BaseModel): """Model for ReleaseSubgenre.""" __tablename__ = 'release_subgenre' id = Column(Integer, primary_key=True, nullable=False, autoincrement=True) upc = Column(BigInteger, nullable=True) subgenre_id = Column(SmallInteger, ForeignKey('subgenre.orchard_id'), nullable=False) release_id = Column(Integer, ForeignKey('releases.release_id'), nullable=False) def to_dict(self): """Subgenre data dictionary. Returns: dict """ return { 'id': self.id, 'upc': self.upc, 'subgenre_id': self.subgenre_id, 'release_id': self.release_id }