32 lines
1.2 KiB
Python
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)) |