"""Account payee model.""" from typing import Protocol, cast from abacus_common_logic.models.base import db from sqlalchemy import select from sqlalchemy.sql import literal_column, table class AccountPayee(Protocol): """READ ONLY Account payee model.""" account_payee_id: int account_id: int @classmethod def get_payees_by_ids(cls, account_payee_ids) -> list['AccountPayee']: """Get account_payee data by account_payee_ids.""" query = ( select( [ literal_column('ap.account_payee_id').label('account_payee_id'), literal_column('ap.account_id').label('account_id'), ] ) .where(literal_column('ap.account_payee_id').in_(account_payee_ids)) .select_from(table('account_payee').alias('ap')) ) result = db.session.execute(query).fetchall() return cast(list['AccountPayee'], result)