"""Release Subgenre Model.""" from oto import response from sqlalchemy import Column from sqlalchemy import Integer from product.connectors import mysql class ReleaseSubgenre(mysql.BaseModel): """Release Subgenre Model.""" __tablename__ = 'release_subgenre' upc = Column(Integer, nullable=False) subgenre_id = Column(Integer, nullable=False) release_id = Column(Integer, nullable=False) release_subgenre_id = Column( 'id', Integer, nullable=False, primary_key=True, autoincrement=True) def to_dict(self): """Dict-ified version of a release_subgenre row.""" return { 'upc': self.upc, 'subgenre_id': self.subgenre_id, 'release_id': self.release_id, 'release_subgenre_id': self.release_subgenre_id } def create(values): """Create a release subgenre entry. Args: values (dict): dictionary of values to insert """ with mysql.db_session() as session: release_subgenre = ReleaseSubgenre(**values) session.add(release_subgenre) session.flush() return response.Response(message=release_subgenre.to_dict()) def update(values, product_id): """Update a release subgenre entry. Args: values (dict): dictionary of values to update product_id (int): id of product to update the release subgenre for """ with mysql.db_session() as session: session.query(ReleaseSubgenre) \ .filter(ReleaseSubgenre.release_id == product_id) \ .update(values) return response.Response(message=values) def get(product_id): """Get a release subgenre entry. Args: product_id (int): id of product to update the release subgenre for """ with mysql.db_session() as session: release_subgenre = session.query(ReleaseSubgenre) \ .filter(ReleaseSubgenre.release_id == product_id) \ .first() if not release_subgenre: return response.Response(status=404) return response.Response(message=release_subgenre.to_dict()) @mysql.db_session_wrap def delete(product_id, session=None): """Delete a release subgenre entry. Args: product_id (int): id of product to delete the release subgenre for """ session.query(ReleaseSubgenre) \ .filter(ReleaseSubgenre.release_id == product_id) \ .delete() return response.Response()