Skip to content

Commit 0daaf43

Browse files
Pass template_values to context (#6)
1 parent 6455a29 commit 0daaf43

File tree

13 files changed

+103
-106
lines changed

13 files changed

+103
-106
lines changed

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ spec_version: 0.0.1
2727
package: dipdup_hic_et_nunc
2828

2929
database:
30+
kind: sqlite
3031
path: db.sqlite3
3132

3233
contracts:
@@ -124,15 +125,16 @@ class Token(Model):
124125
Now take a look at `handlers` module generated by `init` command. When operation group matching `pattern` block of corresponding handler at config will arrive callback will be fired. This example will simply save minted Hic Et Nunc tokens and their owners to the database:
125126

126127
```python
127-
from dipdup_hic_et_nunc.models import Address, Token
128+
from dipdup.models import HandlerContext, OperationContext
129+
from dipdup_hic_et_nunc.models import *
128130
from dipdup_hic_et_nunc.types.KT1Hkg5qeNhfwpKW4fXvq7HGZB9z2EnmCCA9.parameter.mint_OBJKT import MintObjkt
129131
from dipdup_hic_et_nunc.types.KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton.parameter.mint import Mint
130-
from dipdup_dapps.models import HandlerContext
131132
132133
133134
async def on_mint(
134-
mint_OBJKT: HandlerContext[MintObjkt],
135-
mint: HandlerContext[Mint]
135+
ctx: HandlerContext,
136+
mint_OBJKT: OperationContext[MintObjkt],
137+
mint: OperationContext[Mint],
136138
) -> None:
137139
address, _ = await Address.get_or_create(address=mint.parameter.address)
138140

poetry.lock

Lines changed: 47 additions & 47 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ aiomysql = "^0.0.21"
2727
asyncpg = "^0.22.0"
2828
datamodel-code-generator = "^0.10.0"
2929
"ruamel.yaml" = "^0.17.2"
30-
signalrcore = {git = "https://github.com/droserasprout/signalrcore", rev = "async"}
30+
signalrcore = {git = "https://github.com/dipdup-net/signalrcore", rev = "async"}
3131
tortoise-orm = "^0.17.1"
3232
websockets = "^8.1"
3333
pydantic = "^1.8.1"

src/dipdup/datasources/tzkt/datasource.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import asyncio
22
import logging
33
from functools import partial
4-
from typing import Any, Dict, List, Optional, Tuple
4+
from typing import Any, Dict, List, Optional, Tuple, Union
55

66
import aiohttp
77
from signalrcore.hub.base_hub_connection import BaseHubConnection # type: ignore
@@ -12,7 +12,7 @@
1212
from dipdup.config import ROLLBACK_HANDLER, OperationHandlerConfig, OperationIndexConfig
1313
from dipdup.datasources.tzkt.cache import OperationCache
1414
from dipdup.datasources.tzkt.enums import TzktMessageType
15-
from dipdup.models import HandlerContext, OperationData, State
15+
from dipdup.models import HandlerContext, OperationContext, OperationData, State
1616

1717
TZKT_HTTP_REQUEST_LIMIT = 10000
1818
TZKT_HTTP_REQUEST_SLEEP = 1
@@ -236,19 +236,23 @@ async def on_operation_match(
236236
matched_operations: List[OperationData],
237237
operations: List[OperationData],
238238
):
239-
args = []
239+
handler_context = HandlerContext(
240+
operations=operations,
241+
template_values=index_config.template_values,
242+
)
243+
args: List[Union[OperationContext, HandlerContext]] = [handler_context]
240244
for pattern_config, operation in zip(handler_config.pattern, matched_operations):
241245

242246
parameter_type = pattern_config.parameter_type_cls
243247
parameter = parameter_type.parse_obj(operation.parameter_json)
244248

245-
context = HandlerContext(
249+
operation_context = OperationContext(
246250
data=operation,
247251
parameter=parameter,
248252
)
249-
args.append(context)
253+
args.append(operation_context)
250254

251-
await handler_config.callback_fn(*args, operations, index_config.template_values)
255+
await handler_config.callback_fn(*args)
252256

253257
@classmethod
254258
def convert_operation(cls, operation_json: Dict[str, Any]) -> OperationData:

src/dipdup/models.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from datetime import datetime
22
from enum import Enum
3-
from typing import Any, Dict, Generic, Optional, TypeVar
3+
from typing import Any, Dict, Generic, List, Optional, TypeVar
44

55
from pydantic.dataclasses import dataclass
66
from tortoise import Model, fields
@@ -56,6 +56,12 @@ class OperationData:
5656

5757

5858
@dataclass
59-
class HandlerContext(Generic[ParameterType]):
59+
class OperationContext(Generic[ParameterType]):
6060
data: OperationData
6161
parameter: ParameterType
62+
63+
64+
@dataclass
65+
class HandlerContext:
66+
operations: List[OperationData]
67+
template_values: Optional[Dict[str, str]]

src/dipdup/templates/handler.py.j2

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
from typing import Dict, List, Optional
2-
from dipdup.models import HandlerContext, OperationData
1+
from dipdup.models import HandlerContext, OperationContext
32

43
from {{ package }}.models import *
4+
55
{% for pattern in patterns %}
66
from {{ package }}.types.{{ pattern.destination }}.parameter.{{ pattern.entrypoint }} import {{ pattern.entrypoint.title().replace('_', '') }}
77
{%- endfor %}
88

99
async def {{ handler }}(
10+
ctx: HandlerContext,
1011
{%- for pattern in patterns %}
11-
{{ pattern.entrypoint }}: HandlerContext[{{ pattern.entrypoint.title().replace('_', '') }}],
12+
{{ pattern.entrypoint }}: OperationContext[{{ pattern.entrypoint.title().replace('_', '') }}],
1213
{%- endfor %}
13-
operations: List[OperationData],
14-
template_values: Optional[Dict[str, str]] = None,
1514
) -> None:
1615
...
Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
1-
from typing import Dict, List, Optional
2-
from dipdup.models import HandlerContext, OperationData
3-
1+
from dipdup.models import HandlerContext, OperationContext
42
from dipdup_hic_et_nunc.models import *
5-
63
from dipdup_hic_et_nunc.types.KT1Hkg5qeNhfwpKW4fXvq7HGZB9z2EnmCCA9.parameter.mint_OBJKT import MintObjkt
74
from dipdup_hic_et_nunc.types.KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton.parameter.mint import Mint
85

6+
97
async def on_mint(
10-
mint_OBJKT: HandlerContext[MintObjkt],
11-
mint: HandlerContext[Mint],
12-
operations: List[OperationData],
13-
template_values: Optional[Dict[str, str]] = None,
8+
ctx: HandlerContext,
9+
mint_OBJKT: OperationContext[MintObjkt],
10+
mint: OperationContext[Mint],
1411
) -> None:
15-
...
12+
...

src/dipdup_hic_et_nunc/handlers/on_rollback.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ async def on_rollback(
1313
) -> None:
1414
_logger.warning('Rollback event received, reindexing')
1515
await Tortoise._drop_databases()
16-
os.execl(sys.executable, sys.executable, *sys.argv)
16+
os.execl(sys.executable, sys.executable, *sys.argv)

0 commit comments

Comments
 (0)