← Back
"""
Symbols cache — preloads instrument info for faster lookups.
"""

import logging

from src.exchange.client import BybitFuturesClient

logger = logging.getLogger(__name__)


def preload_instruments(client: BybitFuturesClient, symbols: list[str] | None = None):
    """
    Preload instrument info into client cache.

    Args:
        client: BybitFuturesClient instance
        symbols: specific symbols to preload, or None for all linear USDT
    """
    if symbols:
        for sym in symbols:
            client.get_instrument_info(sym)
        logger.info(f"Preloaded {len(symbols)} instruments")
        return

    # Load all linear instruments
    try:
        resp = client.session.get_instruments_info(category="linear")
        result = client._check(resp, "preload_instruments")
        count = 0
        for item in result.get("list", []):
            sym = item.get("symbol", "")
            if sym.endswith("USDT"):
                client._instruments_cache[sym] = item
                count += 1
        logger.info(f"Preloaded {count} USDT linear instruments")
    except Exception as e:
        logger.error(f"Failed to preload instruments: {e}")