Skip to content

Commit 272bc4d

Browse files
committed
move changes to j2 template
1 parent 683e326 commit 272bc4d

1 file changed

Lines changed: 36 additions & 17 deletions

File tree

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,46 @@
11
from datetime import datetime
2+
from typing import TYPE_CHECKING
23
from typing import cast
34

45
from {{ project.package }}.models import Record
56
from dipdup.context import HookContext
6-
from dipdup.datasources.tezos_tzkt import TezosTzktDatasource
7+
8+
if TYPE_CHECKING:
9+
from dipdup.datasources.tezos_tzkt import TezosTzktDatasource
10+
11+
BATCH_SIZE = 1000
712

813

914
async def check_expiration(
1015
ctx: HookContext,
1116
) -> None:
12-
ds = cast(TezosTzktDatasource, next(iter(ctx.datasources.values())))
13-
expiring_records = (
14-
await Record.filter(expired=False, domain__expires_at__lt=datetime.utcnow()).all().prefetch_related('domain')
15-
)
16-
17-
for record in expiring_records:
18-
ctx.logger.info('Record %s expired at %s', record.id, record.domain.expires_at)
19-
record.expired = True
20-
await record.save()
21-
if record.address:
22-
ctx.logger.debug('Invalidating contract metadata for %s @ %s', record.address, record.id)
23-
await ctx.update_contract_metadata(
24-
network=ds.name,
25-
address=record.address,
26-
metadata={}, # TODO: NULL
27-
)
17+
ds = cast('TezosTzktDatasource', next(iter(ctx.datasources.values())))
18+
total_processed = 0
19+
20+
while True:
21+
expiring_records = (
22+
await Record.filter(expired=False, domain__expires_at__lt=datetime.utcnow())
23+
.limit(BATCH_SIZE)
24+
.prefetch_related('domain')
25+
)
26+
27+
if not expiring_records:
28+
break
29+
30+
for record in expiring_records:
31+
ctx.logger.info('Record %s expired at %s', record.id, record.domain.expires_at)
32+
record.expired = True
33+
await record.save()
34+
if record.address:
35+
ctx.logger.debug('Invalidating contract metadata for %s @ %s', record.address, record.id)
36+
await ctx.update_contract_metadata(
37+
network=ds.name,
38+
address=record.address,
39+
metadata={}, # TODO: NULL
40+
)
41+
42+
total_processed += len(expiring_records)
43+
ctx.logger.info('Processed %s expired records so far', total_processed)
44+
45+
if total_processed:
46+
ctx.logger.info('Finished processing %s expired records', total_processed)

0 commit comments

Comments
 (0)