commit 500e9b43b44893d4a828ed81364723f4e5847b63
parent 656cf21c47d488e2bf8dcd90072ab22896039853
Author: Carlosokumu <carlosokumu254@gmail.com>
Date: Thu, 5 Mar 2026 13:53:41 +0300
prevent getkey() reload
Diffstat:
1 file changed, 40 insertions(+), 25 deletions(-)
diff --git a/dummy/usawa/storage/ledger_repository.py b/dummy/usawa/storage/ledger_repository.py
@@ -40,40 +40,56 @@ def sha256_verify(k, v=None):
class LedgerRepository:
"""Repository that wraps LedgerStore and handles mapping"""
- def __init__(self,ledger_path = None, unix_client: UnixClient = None):
+ def __init__(self,ledger_path = None, unix_client: UnixClient = None,fs_path: str="./assets"):
"""
- :param ledger_path: path to ledger to import
- :type ledger_store: usawa.LedgerStore
+ Initialize the LedgerRepository.
+
+ :param ledger_path: Path to the ledger definition file to import.
+ :type ledger_path: str | None
+
+ :param unix_client: Unix socket client used to communicate with the storage service.
+ :type unix_client: usawa.UnixClient
+
+ :param fs_path: Path to the directory where FSResolver stores assets.
+ :type fs_path: str
"""
- # self.db = ValkeyStore('')
- self.db = unix_client
- self.client = unix_client
+ self.valkey_store = ValkeyStore('')
+ self.unix_client = unix_client
+ self._wallet = None
+ self._store = None
self.ledger_path = ledger_path
- self.resolver = FSResolver("./assets",verifier=sha256_verify)
-
-
- def _init_store(self) -> tuple[LedgerStore, Ledger, DemoWallet]:
- """Initialize a fresh LedgerStore, Ledger, and Wallet for each operation."""
+ self.resolver = FSResolver(fs_path,verifier=sha256_verify)
+
+
+
+ def _init_store(self, write=False) -> tuple[LedgerStore, Ledger, DemoWallet]:
ledger_tree = load(self.ledger_path)
ledger = Ledger.from_tree(ledger_tree)
- store = LedgerStore(self.db, ledger)
- pk = store.get_key()
- wallet = DemoWallet(privatekey=pk)
- # store.add_key(wallet=wallet,acl=ledger.acl)
-
- logg.debug("wallet pk: %s pubk: %s", wallet.privkey().hex(), wallet.pubkey().hex())
- ledger.set_wallet(wallet)
- ledger.acl = ACL.from_wallet(wallet)
- store.load(acl=ledger.acl)
-
- return store, ledger, wallet
+ if write:
+ logg.debug("init store for write")
+ self.store = LedgerStore(self.valkey_store, ledger)
+ if self._wallet is None:
+ pk = self.store.get_key()
+ self._wallet = DemoWallet(privatekey=pk)
+ else:
+ logg.debug("init store for read")
+ self.store = LedgerStore(self.valkey_store, ledger)
+ if self._wallet is None:
+ pk = self.store.get_key()
+ self._wallet = DemoWallet(privatekey=pk)
+
+ logg.debug("wallet pk: %s pubk: %s", self._wallet.privkey().hex(), self._wallet.pubkey().hex())
+ ledger.set_wallet(self._wallet)
+ ledger.acl = ACL.from_wallet(self._wallet)
+ self.store.load(acl=ledger.acl)
+ return self.store, ledger, self._wallet
+
def save(self, domain_entry: LedgerEntry) -> bool:
"""Save a domain entry to storage"""
try:
- store, ledger, wallet = self._init_store()
- ledger.truncate()
+ store, ledger, wallet = self._init_store(write=True)
entry = EntryMapper.to_entry(domain_entry, ledger=ledger)
entry.sign(wallet)
@@ -92,7 +108,6 @@ class LedgerRepository:
store.add_entry(entry, update_ledger=True)
ledger.truncate()
ledger.sign()
- logg.debug("Parent digest after add_entry %s", ledger.parent.hex())
return True
except Exception:
logg.exception("Failed to save entry")