Add table to track the most recently updated block
This commit is contained in:
parent
5a4308e562
commit
dd7088912a
28
alembic/versions/a02f3f2c469f_create_latest_block_table.py
Normal file
28
alembic/versions/a02f3f2c469f_create_latest_block_table.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
"""Create latest block table
|
||||||
|
|
||||||
|
Revision ID: a02f3f2c469f
|
||||||
|
Revises: d70c08b4db6f
|
||||||
|
Create Date: 2021-09-13 21:32:27.181344
|
||||||
|
|
||||||
|
"""
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = "a02f3f2c469f"
|
||||||
|
down_revision = "d70c08b4db6f"
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
op.create_table(
|
||||||
|
"latest_block_update",
|
||||||
|
sa.Column("block_number", sa.Numeric, primary_key=True),
|
||||||
|
sa.Column("updated_at", sa.TIMESTAMP, server_default=sa.func.now()),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
op.drop_table("latest_block_update")
|
25
mev_inspect/crud/latest_block_update.py
Normal file
25
mev_inspect/crud/latest_block_update.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
|
||||||
|
def find_latest_block_update(db_session) -> Optional[int]:
|
||||||
|
result = db_session.execute(
|
||||||
|
"SELECT block_number FROM latest_block_update LIMIT 1"
|
||||||
|
).one_or_none()
|
||||||
|
if result is None:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return int(result[0])
|
||||||
|
|
||||||
|
|
||||||
|
def update_latest_block(db_session, block_number) -> None:
|
||||||
|
db_session.execute(
|
||||||
|
"""
|
||||||
|
UPDATE latest_block_update
|
||||||
|
SET block_number = :block_number, updated_at = current_timestamp;
|
||||||
|
INSERT INTO latest_block_update
|
||||||
|
(block_number, updated_at)
|
||||||
|
SELECT :block_number, current_timestamp
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM latest_block_update);
|
||||||
|
""",
|
||||||
|
params={"block_number": block_number},
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user