commit 01df1e54806b09d5aad99fc9d8d020cddd0db97d
parent 327b748e8bbaed71b1a24861f14260c567d94722
Author: lash <dev@holbrook.no>
Date: Sun, 22 Mar 2026 21:36:55 -0600
Add asset index entry in store
Diffstat:
2 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/dummy/usawa/runnable/craft.py b/dummy/usawa/runnable/craft.py
@@ -54,7 +54,7 @@ class Context:
if self.cfg.true('ACCOUNTS_STRICT'):
self.accounts.lock()
- self.entry = Entry.empty(ref=args.r)
+ self.entry = Entry.empty(ref=args.e)
self.db = None
if self.cfg.get('STORE_TYPE') == 'valkey':
dbid = self.cfg.get('VALKEY_ID')
@@ -62,7 +62,7 @@ class Context:
port = self.cfg.get('VALKEY_PORT')
self.db = ValkeyStore('', host=host, port=port)
self.store = EntryStore(self.db)
- if args.r:
+ if args.e:
self.entry = self.store.get_draft(self.entry)
self.state = 1
else:
@@ -120,7 +120,9 @@ class Context:
argp = argparse.ArgumentParser()
-argp.add_argument('-r', type=str, help='entry unique reference')
+argp.add_argument('-e', type=str, help='unique reference of entry')
+argp.add_argument('-x', type=str, help='unique reference of attachment')
+argp.add_argument('-z', type=str, help='sum of attachment')
argp.add_argument('-v', type=str, choices=['info','debug','warning','error'], help='be verbose')
argp.add_argument('-c', type=str, help='override config dir')
argp.add_argument('-l', type=str, help='ledger file')
@@ -133,8 +135,6 @@ if args.v:
ctx = Context(args)
-
-
def input_or_default(prompt, default=None, postfix=': ', validate_fn=None):
if default != None:
postfix = ' [{}]'.format(default) + postfix
@@ -191,14 +191,15 @@ def do_interactive(ctx):
#return ctx.open(output)
entry = None
-if ctx.state == 0:
+if self.cmd == 'entry':
do_interactive(ctx)
ctx.validate()
entry = Entry.empty(description=ctx.description, ref=ctx.ref, unitindex=ctx.uidx)
entry.add_part(ctx.part[0], debit=True)
entry.add_part(ctx.part[1])
-else:
entry = ctx.entry
+elif self.cmd == 'asset':
+
ctx.store.put_draft(entry)
print(entry)
diff --git a/dummy/usawa/store.py b/dummy/usawa/store.py
@@ -16,6 +16,7 @@ PFX_LEDGER_LOCK = b'\x03'
PFX_ENTRY = b'\x04'
PFX_UNIT_INDEX = b'\x08'
PFX_ASSET = b'\x10'
+PFX_ASSET_INDEX = b'\x11'
logg = logging.getLogger('usawa.store')
@@ -105,6 +106,12 @@ def pfx_asset(asset):
return PFX_ASSET + asset.get_digest(binary=True)
+def pfx_asset_index(asset):
+ if not isinstance(asset, Asset):
+ raise ValueError('invalid asset')
+ return PFX_ASSET_INDEX + asset.get_ref(binary=True)
+
+
class BaseStore(Interface):
def __init__(self, implementation):
@@ -201,7 +208,7 @@ class EntryStore(BaseStore):
i += 1
return entry
-class LedgerStore(KeyStore):
+class LedgerStore(EntryStore, KeyStore):
"""Wrapper for an implementation of the whee store that handles encoding of ledgers and entries.
:param implementation: Store implementation.
@@ -306,6 +313,9 @@ class LedgerStore(KeyStore):
k = pfx_asset(asset)
v = asset.serialize()
self.db.put(k, v)
+ v = k
+ k = pfx_asset_index(asset)
+ self.db.put(k, v)
"""Restore an entry attachment asset from the store.