30 lines
980 B
Python
30 lines
980 B
Python
from typing import Optional
|
|
|
|
|
|
def find_latest_block_update(db_session) -> Optional[int]:
|
|
result1 = db_session.execute(
|
|
"SELECT block_number FROM swaps order by block_number desc LIMIT 1"
|
|
).one_or_none()
|
|
result2 = db_session.execute(
|
|
"SELECT block_number FROM liquidations order by block_number desc LIMIT 1"
|
|
).one_or_none()
|
|
|
|
if result1 is None or result2 is None:
|
|
return None
|
|
else:
|
|
return max(int(result1[0]), int(result2[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},
|
|
)
|