"""ReleaseArtist Model.""" from oto import response from sqlalchemy import Column from sqlalchemy import Integer from sqlalchemy import String from sqlalchemy.exc import SQLAlchemyError from product.connectors import mysql from product.connectors import sentry class ReleaseAssetVersion(mysql.BaseModel): """ReleaseAssetVersion Model class.""" __tablename__ = 'release_asset_version' release_id = Column(Integer, primary_key=True, nullable=False) api_version = Column(String(255), nullable=False, default='v2') def to_dict(self): """To dict representation.""" return { 'release_id': self.release_id, 'api_version': self.api_version, } def get(product_id): """Get a release asset version entry. Args: product_id (int): id of product to get version of """ with mysql.db_session() as session: release_asset_version = session.query(ReleaseAssetVersion) \ .filter(ReleaseAssetVersion.release_id == product_id) \ .first() if not release_asset_version: return response.Response( message={ 'release_id': product_id, 'api_version': 'unknown' } ) return response.Response(message=release_asset_version.to_dict()) def update_api_version(product_id, api_version): """Update version for a product. Args: product_id (int): id of product to get version of api_version (str): version of a product """ try: with mysql.db_session() as session: release_asset_version = session.query(ReleaseAssetVersion) \ .filter(ReleaseAssetVersion.release_id == product_id) \ .first() if release_asset_version: release_asset_version.api_version = api_version session.commit() return response.Response( message=release_asset_version.to_dict()) return response.Response( message='Product not found.', status=404) except SQLAlchemyError as e: if sentry.sentry_client: sentry.sentry_client.captureException() return response.create_fatal_response(e.args)