Add table and crud

This commit is contained in:
Gui Heise 2022-01-31 18:48:17 -05:00
parent 78257df3ef
commit c8f8fb2aa3
2 changed files with 52 additions and 0 deletions

View File

@ -0,0 +1,27 @@
"""Create latest_s3_block table
Revision ID: ce116d0badc8
Revises: 5c5375de15fd
Create Date: 2022-01-31 23:36:34.971594
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = "ce116d0badc8"
down_revision = "5c5375de15fd"
branch_labels = None
depends_on = None
def upgrade():
op.create_table(
"latest_s3_block",
sa.Column("block_number", sa.Numeric, nullable=False),
sa.Column("updated_at", sa.TIMESTAMP, server_default=sa.func.now()),
)
def downgrade():
op.drop_table("latest_s3_block")

View File

@ -0,0 +1,25 @@
from typing import Optional
def find_latest_s3_block(db_session) -> Optional[int]:
result = db_session.execute(
"SELECT block_number FROM latest_s3_block LIMIT 1"
).one_or_none()
if result is None:
return None
else:
return int(result[0])
def update_latest_s3_block(db_session, block_number) -> None:
db_session.execute(
"""
UPDATE latest_s3_block
SET block_number = :block_number, updated_at = current_timestamp;
INSERT INTO latest_s3_block
(block_number, updated_at)
SELECT :block_number, current_timestamp
WHERE NOT EXISTS (SELECT 1 FROM latest_s3_blocks);
""",
params={"block_number": block_number},
)