feat: initial files for punk database

This commit is contained in:
Robert Miller 2021-11-25 21:05:42 -05:00
parent b4097baa68
commit 2cc7ac4a20
3 changed files with 49 additions and 0 deletions

30
mev_inspect/crud/punks.py Normal file
View File

@ -0,0 +1,30 @@
import json
from typing import List
from mev_inspect.models.punk_snipes import PunkSnipeModel
from mev_inspect.schemas.punk_snipe import PunkSnipe
def delete_punk_snipes_for_block(
db_session,
block_number: int,
) -> None:
(
db_session.query(PunkSnipeModel)
.filter(PunkSnipeModel.block_number == block_number)
.delete()
)
db_session.commit()
def write_punk_snipes(
db_session,
punk_snipes: List[PunkSnipe],
) -> None:
models = [
PunkSnipeModel(**json.loads(punk_snipe.json())) for punk_snipe in punk_snipes
]
db_session.bulk_save_objects(models)
db_session.commit()

View File

@ -11,6 +11,7 @@ from mev_inspect.crud.arbitrages import (
delete_arbitrages_for_block,
write_arbitrages,
)
from mev_inspect.crud.punks import delete_punk_snipes_for_block, write_punk_snipes
from mev_inspect.crud.traces import (
delete_classified_traces_for_block,
write_classified_traces,
@ -98,6 +99,9 @@ async def inspect_block(
punk_snipes = get_punk_snipes(punk_bids, punk_bid_acceptances)
logger.info(f"Block: {block_number} -- Found {len(punk_snipes)} punk snipes")
delete_punk_snipes_for_block(inspect_db_session, block_number)
write_punk_snipes(inspect_db_session, punk_snipes)
miner_payments = get_miner_payments(
block.miner, block.base_fee_per_gas, classified_traces, block.receipts
)

View File

@ -0,0 +1,15 @@
from sqlalchemy import Column, Numeric, String, ARRAY, Integer
from .base import Base
class PunkSnipeModel(Base):
__tablename__ = "punk_snipes"
block_number = Column(Numeric, nullable=False)
transaction_hash = Column(String, primary_key=True)
trace_address = Column(ARRAY(Integer), primary_key=True)
from_address = Column(String, nullable=False)
punk_index = Column(Integer, nullable=False)
min_acceptance_price = Column(Numeric, nullable=False)
acceptance_price = Column(Numeric, nullable=False)