Skip to content

Commit 4cf1a88

Browse files
Hic Et Nunc demo (#11)
1 parent 5c3ab80 commit 4cf1a88

20 files changed

+498
-17
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ $ pip install dipdup
1818

1919
## Creating indexer
2020

21+
If you want to see dipdup in action before diving into details you can run a demo project and use it as reference:
22+
23+
```shell
24+
$ dipdup -c src/demo_hic_et_nunc/dipdup.yml run
25+
```
26+
2127
### Write configuration file
2228

2329
Create a new YAML file and adapt the following example to your needs:
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from demo_hic_et_nunc.models import *
1+
import demo_hic_et_nunc.models as models
22
from demo_hic_et_nunc.types.hen_minter.parameter.cancel_swap import CancelSwap
33
from dipdup.models import HandlerContext, OperationContext
44

@@ -7,4 +7,6 @@ async def on_cancel_swap(
77
ctx: HandlerContext,
88
cancel_swap: OperationContext[CancelSwap],
99
) -> None:
10-
...
10+
swap = await models.Swap.filter(id=int(cancel_swap.parameter.__root__)).get()
11+
swap.status = models.SwapStatus.CANCELED
12+
await swap.save()
Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from demo_hic_et_nunc.models import *
1+
import demo_hic_et_nunc.models as models
22
from demo_hic_et_nunc.types.hen_minter.parameter.collect import Collect
33
from dipdup.models import HandlerContext, OperationContext
44

@@ -7,4 +7,21 @@ async def on_collect(
77
ctx: HandlerContext,
88
collect: OperationContext[Collect],
99
) -> None:
10-
...
10+
swap = await models.Swap.filter(id=collect.parameter.swap_id).get()
11+
seller = await swap.creator
12+
buyer, _ = await models.Holder.get_or_create(address=collect.data.sender_address)
13+
14+
trade = models.Trade(
15+
swap=swap,
16+
seller=seller,
17+
buyer=buyer,
18+
amount=int(collect.parameter.objkt_amount),
19+
level=collect.data.level,
20+
timestamp=collect.data.timestamp,
21+
)
22+
await trade.save()
23+
24+
swap.amount_left -= int(collect.parameter.objkt_amount) # type: ignore
25+
if swap.amount_left == 0:
26+
swap.status = models.SwapStatus.FINISHED
27+
await swap.save()

src/demo_hic_et_nunc/handlers/on_mint.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from demo_hic_et_nunc.models import *
1+
from demo_hic_et_nunc.models import Holder, Token
22
from demo_hic_et_nunc.types.hen_minter.parameter.mint_objkt import MintOBJKT
33
from demo_hic_et_nunc.types.hen_objkts.parameter.mint import Mint
44
from dipdup.models import HandlerContext, OperationContext
@@ -9,4 +9,12 @@ async def on_mint(
99
mint_objkt: OperationContext[MintOBJKT],
1010
mint: OperationContext[Mint],
1111
) -> None:
12-
...
12+
holder, _ = await Holder.get_or_create(address=mint.parameter.address)
13+
token = Token(
14+
id=mint.parameter.token_id,
15+
creator=holder,
16+
supply=mint.parameter.amount,
17+
level=mint.data.level,
18+
timestamp=mint.data.timestamp,
19+
)
20+
await token.save()
Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from demo_hic_et_nunc.models import Swap as SwapModel
1+
import demo_hic_et_nunc.models as models
22
from demo_hic_et_nunc.types.hen_minter.parameter.swap import Swap
33
from dipdup.models import HandlerContext, OperationContext
44

@@ -7,4 +7,15 @@ async def on_swap(
77
ctx: HandlerContext,
88
swap: OperationContext[Swap],
99
) -> None:
10-
...
10+
holder, _ = await models.Holder.get_or_create(address=swap.data.sender_address)
11+
swap_model = models.Swap(
12+
id=int(swap.storage.swap_id) - 1, # type: ignore
13+
creator=holder,
14+
price=swap.parameter.xtz_per_objkt,
15+
amount=swap.parameter.objkt_amount,
16+
amount_left=swap.parameter.objkt_amount,
17+
status=models.SwapStatus.ACTIVE,
18+
level=swap.data.level,
19+
timestamp=swap.data.timestamp,
20+
)
21+
await swap_model.save()

src/demo_hic_et_nunc/models.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
1+
from enum import Enum, IntEnum
2+
13
from tortoise import Model, fields
24

5+
# on mint token, holder
6+
# on_swap new, cancel_swap, collect
7+
8+
9+
class SwapStatus(IntEnum):
10+
ACTIVE = 0
11+
FINISHED = 1
12+
CANCELED = 2
13+
314

415
class Holder(Model):
516
address = fields.CharField(58, pk=True)
@@ -16,9 +27,11 @@ class Token(Model):
1627
class Swap(Model):
1728
id = fields.BigIntField(pk=True)
1829
creator = fields.ForeignKeyField('models.Holder', 'swaps')
30+
price = fields.IntField()
1931
amount = fields.IntField()
2032
amount_left = fields.IntField()
2133
level = fields.BigIntField()
34+
status = fields.IntEnumField(SwapStatus)
2235
timestamp = fields.DatetimeField()
2336

2437

src/demo_quipuswap/handlers/on_fa12_divest_liquidity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from demo_quipuswap.models import *
1+
import demo_quipuswap.models as models
22
from demo_quipuswap.types.quipu_fa12.parameter.divest_liquidity import DivestLiquidity
33
from dipdup.models import HandlerContext, OperationContext
44

src/demo_quipuswap/handlers/on_fa12_invest_liquidity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from demo_quipuswap.models import *
1+
import demo_quipuswap.models as models
22
from demo_quipuswap.types.quipu_fa12.parameter.invest_liquidity import InvestLiquidity
33
from dipdup.models import HandlerContext, OperationContext
44

src/demo_quipuswap/handlers/on_fa12_tez_to_token.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from demo_quipuswap.models import *
1+
import demo_quipuswap.models as models
22
from demo_quipuswap.types.fa12_token.parameter.transfer import Transfer
33
from demo_quipuswap.types.quipu_fa12.parameter.tez_to_token_payment import TezToTokenPayment
44
from dipdup.models import HandlerContext, OperationContext

src/demo_quipuswap/handlers/on_fa12_token_to_tez.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from demo_quipuswap.models import *
1+
import demo_quipuswap.models as models
22
from demo_quipuswap.types.fa12_token.parameter.transfer import Transfer
33
from demo_quipuswap.types.quipu_fa12.parameter.token_to_tez_payment import TokenToTezPayment
44
from dipdup.models import HandlerContext, OperationContext

0 commit comments

Comments
 (0)