Add crud and models to write transfers to the DB

This commit is contained in:
Luke Van Seters 2021-09-17 09:31:08 -04:00
parent d37bf8f6e2
commit 2b7c8532f2
2 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,28 @@
import json
from typing import List
from mev_inspect.models.transfers import TransferModel
from mev_inspect.schemas.transfers import ERC20Transfer
def delete_transfers_for_block(
db_session,
block_number: int,
) -> None:
(
db_session.query(TransferModel)
.filter(TransferModel.block_number == block_number)
.delete()
)
db_session.commit()
def write_transfers(
db_session,
transfers: List[ERC20Transfer],
) -> None:
models = [TransferModel(**json.loads(transfer.json())) for transfer in transfers]
db_session.bulk_save_objects(models)
db_session.commit()

View File

@ -0,0 +1,17 @@
from sqlalchemy import Column, Numeric, String, ARRAY, Integer
from .base import Base
class TransferModel(Base):
__tablename__ = "transfers"
block_number = Column(Numeric, nullable=False)
transaction_hash = Column(String, primary_key=True)
trace_address = Column(ARRAY(Integer), nullable=False)
protocol = Column(String, nullable=True)
from_address = Column(String, nullable=False)
to_address = Column(String, nullable=False)
token_address = Column(String, nullable=False)
amount = Column(Numeric, nullable=False)
error = Column(String, nullable=True)