"""Repository factory helpers shared by API and CLI.""" from __future__ import annotations from app.core.config import Settings from app.core.errors import FeatureNotReadyError from app.repositories.postgres import PortfolioDBConfig, PostgresPortfolioRepository from app.repositories.portfolio_repository import PortfolioRepository class UnimplementedPortfolioRepository: def __getattr__(self, _: str) -> object: raise FeatureNotReadyError("Portfolio persistence is not implemented yet") def build_portfolio_db_config(settings: Settings) -> PortfolioDBConfig: return PortfolioDBConfig( host=settings.active_db_host, port=settings.active_db_port, dbname=settings.active_db_name, user=settings.active_db_user, password=settings.active_db_password, sslmode=settings.active_db_sslmode, connect_timeout_sec=settings.active_db_connect_timeout_sec, application_name=settings.active_db_application_name, ) def get_portfolio_repository_from_settings(settings: Settings) -> PortfolioRepository: if not settings.db_enabled: return UnimplementedPortfolioRepository() return PostgresPortfolioRepository(build_portfolio_db_config(settings))