feat: add punk_bid_acceptances database
This commit is contained in:
parent
71c549b6f3
commit
07aa6e3089
34
alembic/versions/52d75a7e0533_add_punk_bid_acceptances.py
Normal file
34
alembic/versions/52d75a7e0533_add_punk_bid_acceptances.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
"""empty message
|
||||||
|
|
||||||
|
Revision ID: 52d75a7e0533
|
||||||
|
Revises: 7cf0eeb41da0
|
||||||
|
Create Date: 2021-11-26 20:35:58.954138
|
||||||
|
|
||||||
|
"""
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = "52d75a7e0533"
|
||||||
|
down_revision = "7cf0eeb41da0"
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
op.create_table(
|
||||||
|
"punk_bid_acceptances",
|
||||||
|
sa.Column("created_at", sa.TIMESTAMP, server_default=sa.func.now()),
|
||||||
|
sa.Column("block_number", sa.Numeric, nullable=False),
|
||||||
|
sa.Column("transaction_hash", sa.String(66), nullable=False),
|
||||||
|
sa.Column("trace_address", sa.String(256), nullable=False),
|
||||||
|
sa.Column("from_address", sa.String(256), nullable=False),
|
||||||
|
sa.Column("punk_index", sa.Numeric, nullable=False),
|
||||||
|
sa.Column("min_price", sa.Numeric, nullable=False),
|
||||||
|
sa.PrimaryKeyConstraint("transaction_hash", "trace_address"),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
op.drop_table("punk_bid_acceptances")
|
@ -4,10 +4,37 @@ from typing import List
|
|||||||
from mev_inspect.models.punks import (
|
from mev_inspect.models.punks import (
|
||||||
PunkSnipeModel,
|
PunkSnipeModel,
|
||||||
PunkBidModel,
|
PunkBidModel,
|
||||||
|
PunkBidAcceptanceModel,
|
||||||
)
|
)
|
||||||
from mev_inspect.schemas.punk_snipe import PunkSnipe
|
from mev_inspect.schemas.punk_snipe import PunkSnipe
|
||||||
|
|
||||||
from mev_inspect.schemas.punk_bid import PunkBid
|
from mev_inspect.schemas.punk_bid import PunkBid
|
||||||
|
from mev_inspect.schemas.punk_accept_bid import PunkBidAcceptance
|
||||||
|
|
||||||
|
|
||||||
|
def delete_punk_bid_acceptances_for_block(
|
||||||
|
db_session,
|
||||||
|
block_number: int,
|
||||||
|
) -> None:
|
||||||
|
(
|
||||||
|
db_session.query(PunkBidAcceptanceModel)
|
||||||
|
.filter(PunkBidAcceptanceModel.block_number == block_number)
|
||||||
|
.delete()
|
||||||
|
)
|
||||||
|
|
||||||
|
db_session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
def write_punk_bid_acceptances(
|
||||||
|
db_session,
|
||||||
|
punk_bid_acceptances: List[PunkBidAcceptance],
|
||||||
|
) -> None:
|
||||||
|
models = [
|
||||||
|
PunkBidAcceptanceModel(**json.loads(punk_bid_acceptance.json()))
|
||||||
|
for punk_bid_acceptance in punk_bid_acceptances
|
||||||
|
]
|
||||||
|
|
||||||
|
db_session.bulk_save_objects(models)
|
||||||
|
db_session.commit()
|
||||||
|
|
||||||
|
|
||||||
def delete_punk_bids_for_block(
|
def delete_punk_bids_for_block(
|
||||||
|
@ -16,6 +16,8 @@ from mev_inspect.crud.punks import (
|
|||||||
write_punk_snipes,
|
write_punk_snipes,
|
||||||
delete_punk_bids_for_block,
|
delete_punk_bids_for_block,
|
||||||
write_punk_bids,
|
write_punk_bids,
|
||||||
|
delete_punk_bid_acceptances_for_block,
|
||||||
|
write_punk_bid_acceptances,
|
||||||
)
|
)
|
||||||
from mev_inspect.crud.traces import (
|
from mev_inspect.crud.traces import (
|
||||||
delete_classified_traces_for_block,
|
delete_classified_traces_for_block,
|
||||||
@ -103,6 +105,8 @@ async def inspect_block(
|
|||||||
write_punk_bids(inspect_db_session, punk_bids)
|
write_punk_bids(inspect_db_session, punk_bids)
|
||||||
|
|
||||||
punk_bid_acceptances = get_punk_bid_acceptances(classified_traces)
|
punk_bid_acceptances = get_punk_bid_acceptances(classified_traces)
|
||||||
|
delete_punk_bid_acceptances_for_block(inspect_db_session, block_number)
|
||||||
|
write_punk_bid_acceptances(inspect_db_session, punk_bid_acceptances)
|
||||||
|
|
||||||
punk_snipes = get_punk_snipes(punk_bids, punk_bid_acceptances)
|
punk_snipes = get_punk_snipes(punk_bids, punk_bid_acceptances)
|
||||||
logger.info(f"Block: {block_number} -- Found {len(punk_snipes)} punk snipes")
|
logger.info(f"Block: {block_number} -- Found {len(punk_snipes)} punk snipes")
|
||||||
|
@ -24,3 +24,14 @@ class PunkBidModel(Base):
|
|||||||
from_address = Column(String, nullable=False)
|
from_address = Column(String, nullable=False)
|
||||||
punk_index = Column(Integer, nullable=False)
|
punk_index = Column(Integer, nullable=False)
|
||||||
price = Column(Numeric, nullable=False)
|
price = Column(Numeric, nullable=False)
|
||||||
|
|
||||||
|
|
||||||
|
class PunkBidAcceptanceModel(Base):
|
||||||
|
__tablename__ = "punk_bid_acceptances"
|
||||||
|
|
||||||
|
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_price = Column(Numeric, nullable=False)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user