Files
portfolio-hub/app/repositories/factory.py
T

32 lines
1.2 KiB
Python

"""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))