"""Subaccount model.""" from sqlalchemy import text from carveouts.connectors.mysql import db_connector from carveouts.exceptions import SubaccountInvalid, VendorInvalid def get_subaccount(subaccount_id: int) -> tuple[int, int]: """Get subaccount_id and vendor_id for given subaccount.""" with db_connector.db_session() as session: result = session.execute( text( """ SELECT s.subaccount_id, v.vendor_id FROM subaccount s LEFT JOIN vendor v ON v.vendor_id = s.vendor_id WHERE s.subaccount_id = :subaccount_id """ ), {"subaccount_id": subaccount_id}, ) row = result.first() if not row: raise SubaccountInvalid(f"Subaccount ID {subaccount_id} is invalid") if not row.vendor_id: raise VendorInvalid(f"Vendor for subaccount ID {subaccount_id} is invalid") return int(row.subaccount_id), int(row.vendor_id)