update iterators to use pack_partial_key

This commit is contained in:
Jack Robison 2021-07-29 12:36:30 -04:00 committed by Victor Shyba
parent 94e0624024
commit c59d08080e
2 changed files with 9 additions and 2 deletions

View file

@ -658,6 +658,13 @@ class ClaimToSupportPrefixRow(PrefixRow):
key_struct = struct.Struct(b'>20sLH') key_struct = struct.Struct(b'>20sLH')
value_struct = struct.Struct(b'>Q') value_struct = struct.Struct(b'>Q')
key_part_lambdas = [
lambda: b'',
struct.Struct(b'>20s').pack,
struct.Struct(b'>20sL').pack,
struct.Struct(b'>20sLH').pack
]
@classmethod @classmethod
def pack_key(cls, claim_hash: bytes, tx_num: int, position: int): def pack_key(cls, claim_hash: bytes, tx_num: int, position: int):
return super().pack_key(claim_hash, tx_num, position) return super().pack_key(claim_hash, tx_num, position)

View file

@ -189,13 +189,13 @@ class LevelDB:
def get_support_amount(self, claim_hash: bytes): def get_support_amount(self, claim_hash: bytes):
total = 0 total = 0
for packed in self.db.iterator(prefix=DB_PREFIXES.claim_to_support.value + claim_hash, include_key=False): for packed in self.db.iterator(prefix=Prefixes.claim_to_support.pack_partial_key(claim_hash), include_key=False):
total += Prefixes.claim_to_support.unpack_value(packed).amount total += Prefixes.claim_to_support.unpack_value(packed).amount
return total return total
def get_supports(self, claim_hash: bytes): def get_supports(self, claim_hash: bytes):
supports = [] supports = []
for k, v in self.db.iterator(prefix=DB_PREFIXES.claim_to_support.value + claim_hash): for k, v in self.db.iterator(prefix=Prefixes.claim_to_support.pack_partial_key(claim_hash)):
unpacked_k = Prefixes.claim_to_support.unpack_key(k) unpacked_k = Prefixes.claim_to_support.unpack_key(k)
unpacked_v = Prefixes.claim_to_support.unpack_value(v) unpacked_v = Prefixes.claim_to_support.unpack_value(v)
supports.append((unpacked_k.tx_num, unpacked_k.position, unpacked_v.amount)) supports.append((unpacked_k.tx_num, unpacked_k.position, unpacked_v.amount))