feat: initial files for punk database
This commit is contained in:
parent
b4097baa68
commit
2cc7ac4a20
30
mev_inspect/crud/punks.py
Normal file
30
mev_inspect/crud/punks.py
Normal 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()
|
@ -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
|
||||
)
|
||||
|
15
mev_inspect/models/punk_snipes.py
Normal file
15
mev_inspect/models/punk_snipes.py
Normal 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)
|
Loading…
x
Reference in New Issue
Block a user