Files
HemoAnalysisModelServer/app/infrastructure/bootstrap.py
T
2026-06-12 23:53:39 +03:00

41 lines
1.2 KiB
Python

from dataclasses import dataclass
from pathlib import Path
from app.infrastructure.constants import DATABASE_URL
from app.infrastructure.ModelConverterImpl import ModelConverterImpl
from app.infrastructure.database import Base, create_engine_and_session
from app.infrastructure.ModelStorageImpl import ModelStorageImpl
@dataclass(slots=True)
class Container:
storage: ModelStorageImpl
converter: ModelConverterImpl
engine: object
session_factory: object
_container: Container | None = None
def get_container() -> Container:
global _container
if _container is None:
storage = ModelStorageImpl()
engine, session_factory = create_engine_and_session(DATABASE_URL)
_container = Container(
storage=storage,
converter=ModelConverterImpl(),
engine=engine,
session_factory=session_factory,
)
return _container
def initialize_application() -> None:
container = get_container()
container.storage.ensure_directories()
engine_path = container.engine.url.database
if engine_path:
Path(engine_path).parent.mkdir(parents=True, exist_ok=True)
Base.metadata.create_all(bind=container.engine)