mev-inspect-py/mev_inspect/crud/jit_liquidity.py

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()