"""Vendor model.""" from sqlalchemy import text from sqlalchemy.exc import NoResultFound from vectororder.connectors.mysql import art_db_connector from vectororder.constants import sql from vectororder.exceptions import VendorNotFoundError from vectororder.models.schemas import Vendor def get_vendor(upc: int) -> Vendor: """Get vendor by UPC. Args: upc (int) Returns: Vendor """ with art_db_connector.db_session() as session: vendor_result = session.execute( text(sql.AR_GET_VENDOR), { "upc": upc, }, ) try: vendor = vendor_result.mappings().one() return Vendor( vendor_id=vendor["vendor_id"], name=vendor["name"], label_identifier=vendor["label_identifier"], api_vendor_id=vendor["api_vendor_id"], ) except NoResultFound as exc: raise VendorNotFoundError(f"Vendor not found for UPC {upc}") from exc