76 lines
2.6 KiB
Python
76 lines
2.6 KiB
Python
from typing import List
|
|
from uuid import uuid4
|
|
|
|
from mev_inspect.models.jit_liquidity import JITLiquidityModel
|
|
from mev_inspect.schemas.jit_liquidity import JITLiquidity
|
|
|
|
from .shared import delete_by_block_range
|
|
|
|
|
|
def delete_jit_liquidity_for_blocks(
|
|
db_session,
|
|
after_block_number: int,
|
|
before_block_number: int,
|
|
) -> None:
|
|
delete_by_block_range(
|
|
db_session,
|
|
JITLiquidityModel,
|
|
after_block_number,
|
|
before_block_number,
|
|
)
|
|
db_session.commit()
|
|
|
|
|
|
def write_jit_liquidity(
|
|
db_session,
|
|
jit_liquidity_instances: List[JITLiquidity],
|
|
) -> None:
|
|
jit_liquidity_models = []
|
|
swap_jit_liquidity_ids = []
|
|
|
|
for jit_liquidity in jit_liquidity_instances:
|
|
jit_liquidity_id = str(uuid4())
|
|
jit_liquidity_models.append(
|
|
JITLiquidityModel(
|
|
id=jit_liquidity_id,
|
|
block_number=jit_liquidity.block_number,
|
|
bot_address=jit_liquidity.bot_address,
|
|
pool_address=jit_liquidity.pool_address,
|
|
token0_address=jit_liquidity.token0_address,
|
|
token1_address=jit_liquidity.token1_address,
|
|
mint_transaction_hash=jit_liquidity.mint_transaction_hash,
|
|
mint_transaction_trace=jit_liquidity.mint_trace,
|
|
burn_transaction_hash=jit_liquidity.burn_transaction_hash,
|
|
burn_transaction_trace=jit_liquidity.burn_trace,
|
|
mint_token0_amount=jit_liquidity.mint_token0_amount,
|
|
mint_token1_amount=jit_liquidity.mint_token1_amount,
|
|
burn_token0_amount=jit_liquidity.burn_token0_amount,
|
|
burn_token1_amount=jit_liquidity.burn_token1_amount,
|
|
token0_swap_volume=jit_liquidity.token0_swap_volume,
|
|
token1_swap_volume=jit_liquidity.token1_swap_volume,
|
|
)
|
|
)
|
|
|
|
for swap in jit_liquidity.swaps:
|
|
swap_jit_liquidity_ids.append(
|
|
{
|
|
"jit_liquidity_id": jit_liquidity_id,
|
|
"swap_transaction_hash": swap.transaction_hash,
|
|
"swap_trace_address": swap.trace_address,
|
|
}
|
|
)
|
|
|
|
if len(jit_liquidity_models) > 0:
|
|
db_session.bulk_save_objects(jit_liquidity_models)
|
|
db_session.execute(
|
|
"""
|
|
INSERT INTO jit_liquidity_swaps
|
|
(jit_liquidity_id, swap_transaction_hash, swap_trace_address)
|
|
VALUES
|
|
(:jit_liquidity_id, :swap_transaction_hash, :swap_trace_address)
|
|
""",
|
|
params=swap_jit_liquidity_ids,
|
|
)
|
|
|
|
db_session.commit()
|