From 0a09fd4efa8cd08aca8ca239302f9ec886fd42b6 Mon Sep 17 00:00:00 2001 From: Luke Van Seters Date: Fri, 30 Jul 2021 13:36:46 -0400 Subject: [PATCH 1/2] Delete all traces for a block before writing in the script --- mev_inspect/crud/classified_traces.py | 11 +++++++++++ scripts/inspect_block.py | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/mev_inspect/crud/classified_traces.py b/mev_inspect/crud/classified_traces.py index 15059c5..4bd8675 100644 --- a/mev_inspect/crud/classified_traces.py +++ b/mev_inspect/crud/classified_traces.py @@ -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], diff --git a/scripts/inspect_block.py b/scripts/inspect_block.py index 2e8c26c..8ae7f6c 100644 --- a/scripts/inspect_block.py +++ b/scripts/inspect_block.py @@ -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() From 369570affca0b3bb50ad5b31c7c440e73e153b14 Mon Sep 17 00:00:00 2001 From: Luke Van Seters Date: Fri, 30 Jul 2021 13:40:45 -0400 Subject: [PATCH 2/2] Add index on block number to make delete quick --- ..._add_index_for_classified_traces_block_.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 alembic/versions/c5da44eb072c_add_index_for_classified_traces_block_.py diff --git a/alembic/versions/c5da44eb072c_add_index_for_classified_traces_block_.py b/alembic/versions/c5da44eb072c_add_index_for_classified_traces_block_.py new file mode 100644 index 0000000..f0edd49 --- /dev/null +++ b/alembic/versions/c5da44eb072c_add_index_for_classified_traces_block_.py @@ -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')