chore: consolidate platform split checks
This commit is contained in:
@@ -38,15 +38,21 @@ class DatabaseHandle:
|
||||
with self.SessionLocal() as session:
|
||||
yield session
|
||||
|
||||
def dispose(self) -> None:
|
||||
self.engine.dispose()
|
||||
|
||||
|
||||
_default_database: DatabaseHandle | None = None
|
||||
|
||||
|
||||
def configure_database(database_url: str, *, engine: Engine | None = None) -> DatabaseHandle:
|
||||
def configure_database(database_url: str, *, engine: Engine | None = None, dispose_previous: bool = False) -> DatabaseHandle:
|
||||
global _default_database
|
||||
if engine is None and _default_database is not None and _default_database.database_url == database_url:
|
||||
return _default_database
|
||||
previous_database = _default_database
|
||||
_default_database = DatabaseHandle(database_url, engine=engine)
|
||||
if dispose_previous and previous_database is not None and previous_database is not _default_database:
|
||||
previous_database.dispose()
|
||||
return _default_database
|
||||
|
||||
|
||||
@@ -56,6 +62,13 @@ def set_database(handle: DatabaseHandle) -> DatabaseHandle:
|
||||
return handle
|
||||
|
||||
|
||||
def reset_database(*, dispose: bool = False) -> None:
|
||||
global _default_database
|
||||
if dispose and _default_database is not None:
|
||||
_default_database.dispose()
|
||||
_default_database = None
|
||||
|
||||
|
||||
def get_database() -> DatabaseHandle:
|
||||
if _default_database is None:
|
||||
raise RuntimeError("GovOPlaN database is not configured")
|
||||
|
||||
Reference in New Issue
Block a user