fix release_time and creation_timestamp

This commit is contained in:
Jack Robison 2021-09-09 17:12:12 -04:00 committed by Victor Shyba
parent 12f790ab01
commit 0d19439982
2 changed files with 20 additions and 4 deletions

View file

@ -667,8 +667,8 @@ class LevelDB:
'tx_num': claim.tx_num, 'tx_num': claim.tx_num,
'tx_nout': claim.position, 'tx_nout': claim.position,
'amount': claim.amount, 'amount': claim.amount,
'timestamp': 0, # TODO: fix 'timestamp': self.estimate_timestamp(claim.height),
'creation_timestamp': 0, # TODO: fix 'creation_timestamp': self.estimate_timestamp(claim.creation_height),
'height': claim.height, 'height': claim.height,
'creation_height': claim.creation_height, 'creation_height': claim.creation_height,
'activation_height': claim.activation_height, 'activation_height': claim.activation_height,
@ -713,8 +713,10 @@ class LevelDB:
value['duration'] = reposted_duration value['duration'] = reposted_duration
elif metadata.is_stream and (metadata.stream.video.duration or metadata.stream.audio.duration): elif metadata.is_stream and (metadata.stream.video.duration or metadata.stream.audio.duration):
value['duration'] = metadata.stream.video.duration or metadata.stream.audio.duration value['duration'] = metadata.stream.video.duration or metadata.stream.audio.duration
if metadata.is_stream and metadata.stream.release_time: if metadata.is_stream:
value['release_time'] = metadata.stream.release_time value['release_time'] = metadata.stream.release_time or value['creation_timestamp']
elif metadata.is_repost or metadata.is_collection:
value['release_time'] = value['creation_timestamp']
return value return value
async def all_claims_producer(self, batch_size=500_000): async def all_claims_producer(self, batch_size=500_000):
@ -871,6 +873,11 @@ class LevelDB:
assert len(headers) - 1 == self.db_height, f"{len(headers)} vs {self.db_height}" assert len(headers) - 1 == self.db_height, f"{len(headers)} vs {self.db_height}"
self.headers = headers self.headers = headers
def estimate_timestamp(self, height: int) -> int:
if height < len(self.headers):
return struct.unpack('<I', self.headers[height][100:104])[0]
return int(160.6855883050695 * height)
async def open_dbs(self): async def open_dbs(self):
if self.db: if self.db:
return return

View file

@ -1764,6 +1764,15 @@ class StreamCommands(ClaimTestCase):
self.assertItemCount(await self.daemon.jsonrpc_claim_list(account_id=self.account.id), 3) self.assertItemCount(await self.daemon.jsonrpc_claim_list(account_id=self.account.id), 3)
self.assertItemCount(await self.daemon.jsonrpc_claim_list(account_id=account2_id), 1) self.assertItemCount(await self.daemon.jsonrpc_claim_list(account_id=account2_id), 1)
self.assertEqual(3, len(await self.claim_search(release_time='>0', order_by=['release_time'])))
self.assertEqual(3, len(await self.claim_search(release_time='>=0', order_by=['release_time'])))
self.assertEqual(4, len(await self.claim_search(order_by=['release_time'])))
self.assertEqual(3, len(await self.claim_search(claim_type='stream', order_by=['release_time'])))
self.assertEqual(1, len(await self.claim_search(claim_type='channel', order_by=['release_time'])))
self.assertEqual(1, len(await self.claim_search(release_time='>=123456', order_by=['release_time'])))
self.assertEqual(1, len(await self.claim_search(release_time='>123456', order_by=['release_time'])))
self.assertEqual(2, len(await self.claim_search(release_time='<123457', order_by=['release_time'])))
async def test_setting_fee_fields(self): async def test_setting_fee_fields(self):
tx = await self.out(self.stream_create('paid-stream')) tx = await self.out(self.stream_create('paid-stream'))
txo = tx['outputs'][0] txo = tx['outputs'][0]