Merge pull request #43 from flashbots/on-duplicate-update-classified-traces

Replace existing traces when inspecting a block
This commit is contained in:
Luke Van Seters 2021-08-03 16:35:54 -04:00 committed by GitHub
commit f903fff3c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 1 deletions

View File

@ -0,0 +1,24 @@
"""Add index for classified_traces.block_number
Revision ID: c5da44eb072c
Revises: 0660432b9840
Create Date: 2021-07-30 17:37:27.335475
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'c5da44eb072c'
down_revision = '0660432b9840'
branch_labels = None
depends_on = None
def upgrade():
op.create_index('i_block_number', 'classified_traces', ['block_number'])
def downgrade():
op.drop_index('i_block_number', 'classified_traces')

View File

@ -5,6 +5,17 @@ from mev_inspect.models.classified_traces import ClassifiedTraceModel
from mev_inspect.schemas.classified_traces import ClassifiedTrace
def delete_classified_traces_for_block(
db_session, block_number: int,
) -> None:
(db_session.query(ClassifiedTraceModel)
.filter(ClassifiedTraceModel.block_number == block_number)
.delete()
)
db_session.commit()
def write_classified_traces(
db_session,
classified_traces: List[ClassifiedTrace],

View File

@ -4,7 +4,10 @@ import click
from web3 import Web3
from mev_inspect import block
from mev_inspect.crud.classified_traces import write_classified_traces
from mev_inspect.crud.classified_traces import (
delete_classified_traces_for_block,
write_classified_traces,
)
from mev_inspect.db import get_session
from mev_inspect.classifier_specs import CLASSIFIER_SPECS
from mev_inspect.trace_classifier import TraceClassifier
@ -32,6 +35,7 @@ def inspect_block(block_number: int, rpc: str):
print(f"Returned {len(classified_traces)} classified traces")
db_session = get_session()
delete_classified_traces_for_block(db_session, block_number)
write_classified_traces(db_session, classified_traces)
db_session.close()