"""Singleton lifecycle manager for analytics services — mirrors PMChat's ServiceRegistry."""
import logging

from app.config import settings

logger = logging.getLogger(__name__)


class ServiceRegistry:
    def __init__(self):
        self._bond_service = None
        self._peer_curve_service = None
        self._initialized = False

    def initialize(self):
        if self._initialized:
            return
        logger.info("ServiceRegistry initialized")
        self._initialized = True

    @property
    def lseg_bond_service(self):
        if self._bond_service is None:
            from app.services.bond_service import LsegBondService
            self._bond_service = LsegBondService(
                app_key=settings.lseg_app_key,
                isins=settings.isin_list,
                issuers=settings.issuer_list,
                data_path=settings.lseg_data_path,
            )
        return self._bond_service

    @property
    def peer_curve_service(self):
        if self._peer_curve_service is None:
            from app.services.peer_curve_service import PeerCurveService
            self._peer_curve_service = PeerCurveService(
                app_key=settings.lseg_app_key,
                username=settings.lseg_username,
                password=settings.lseg_password,
            )
        return self._peer_curve_service
