49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
from protosim_py import TychoDB
|
|
|
|
|
|
class TychoDBSingleton:
|
|
"""
|
|
A singleton wrapper around the TychoDB class.
|
|
|
|
This class ensures that there is only one instance of TychoDB throughout the lifetime of the program,
|
|
avoiding the overhead of creating multiple instances.
|
|
"""
|
|
|
|
_instance = None
|
|
|
|
@classmethod
|
|
def initialize(cls, tycho_http_url: str):
|
|
"""
|
|
Initialize the TychoDB instance with the given URLs.
|
|
|
|
Parameters
|
|
----------
|
|
tycho_http_url : str
|
|
The URL of the Tycho HTTP server.
|
|
|
|
"""
|
|
cls._instance = TychoDB(tycho_http_url=tycho_http_url)
|
|
|
|
@classmethod
|
|
def get_instance(cls) -> TychoDB:
|
|
"""
|
|
Retrieve the singleton instance of TychoDB.
|
|
|
|
If the TychoDB instance does not exist, it creates a new one.
|
|
If it already exists, it returns the existing instance.
|
|
|
|
Returns
|
|
-------
|
|
TychoDB
|
|
The singleton instance of TychoDB.
|
|
"""
|
|
if cls._instance is None:
|
|
raise ValueError(
|
|
"TychoDB instance not initialized. Call initialize() first."
|
|
)
|
|
return cls._instance
|
|
|
|
@classmethod
|
|
def clear_instance(cls):
|
|
cls._instance = None
|