chore: initial project scaffold and gitignore
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
"""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))
|
||||
Reference in New Issue
Block a user