"""Contracts model.""" from sqlalchemy import Column from sqlalchemy import Integer from sqlalchemy import String from moneyhub.models.snowflake_base import BaseModel class Contracts(BaseModel): """Contracts mode.""" __tablename__ = 'contract_dbt' account_id = Column(Integer, nullable=False, primary_key=True) contract_id = Column(Integer, nullable=False, primary_key=True) contract_name = Column(String(100), nullable=False) @classmethod def get_by_account_id( cls, account_id: int, contract_ids: list[int] ) -> list: """Get contracts for account. Args: account_id (int): Account to get periods for. contract_ids (list): Contracts to get names for. Returns: list: Statement periods. """ filters = [ cls.account_id == account_id, cls.contract_id.in_(contract_ids) ] return cls.query \ .with_entities( cls.account_id, cls.contract_id, cls.contract_name)\ .distinct() \ .filter(*filters) \ .order_by(cls.contract_id.asc()).all()