Add join table for swaps <=> arbitrages. Write to it
This commit is contained in:
parent
002ef76ecc
commit
c5dc3aa0f9
@ -0,0 +1,38 @@
|
||||
"""Add swap arbitrage join table
|
||||
|
||||
Revision ID: 9b8ae51c5d56
|
||||
Revises: 7eec417a4f3e
|
||||
Create Date: 2021-08-06 17:06:55.364516
|
||||
|
||||
"""
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = "9b8ae51c5d56"
|
||||
down_revision = "7eec417a4f3e"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.create_table(
|
||||
"arbitrage_swaps",
|
||||
sa.Column("created_at", sa.TIMESTAMP, server_default=sa.func.now()),
|
||||
sa.Column("arbitrage_id", sa.String(1024), primary_key=True),
|
||||
sa.Column("swap_transaction_hash", sa.String(66), primary_key=True),
|
||||
sa.Column("swap_trace_address", sa.ARRAY(sa.Integer), primary_key=True),
|
||||
sa.ForeignKeyConstraint(
|
||||
["arbitrage_id"], ["arbitrages.id"], ondelete="CASCADE"
|
||||
),
|
||||
sa.ForeignKeyConstraint(
|
||||
["swap_transaction_hash", "swap_trace_address"],
|
||||
["swaps.transaction_hash", "swaps.trace_address"],
|
||||
ondelete="CASCADE",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_table("arbitrage_swaps")
|
@ -22,19 +22,42 @@ def write_arbitrages(
|
||||
db_session,
|
||||
arbitrages: List[Arbitrage],
|
||||
) -> None:
|
||||
arbitrage_models = [
|
||||
ArbitrageModel(
|
||||
id=str(uuid4()),
|
||||
block_number=arbitrage.block_number,
|
||||
transaction_hash=arbitrage.transaction_hash,
|
||||
account_address=arbitrage.account_address,
|
||||
profit_token_address=arbitrage.profit_token_address,
|
||||
start_amount=arbitrage.start_amount,
|
||||
end_amount=arbitrage.end_amount,
|
||||
profit_amount=arbitrage.profit_amount,
|
||||
arbitrage_models = []
|
||||
swap_arbitrage_ids = []
|
||||
|
||||
for arbitrage in arbitrages:
|
||||
arbitrage_id = str(uuid4())
|
||||
arbitrage_models.append(
|
||||
ArbitrageModel(
|
||||
id=arbitrage_id,
|
||||
block_number=arbitrage.block_number,
|
||||
transaction_hash=arbitrage.transaction_hash,
|
||||
account_address=arbitrage.account_address,
|
||||
profit_token_address=arbitrage.profit_token_address,
|
||||
start_amount=arbitrage.start_amount,
|
||||
end_amount=arbitrage.end_amount,
|
||||
profit_amount=arbitrage.profit_amount,
|
||||
)
|
||||
)
|
||||
for arbitrage in arbitrages
|
||||
]
|
||||
|
||||
for swap in arbitrage.swaps:
|
||||
swap_arbitrage_ids.append(
|
||||
{
|
||||
"arbitrage_id": arbitrage_id,
|
||||
"swap_transaction_hash": swap.transaction_hash,
|
||||
"swap_trace_address": swap.trace_address,
|
||||
}
|
||||
)
|
||||
|
||||
db_session.bulk_save_objects(arbitrage_models)
|
||||
db_session.execute(
|
||||
"""
|
||||
INSERT INTO arbitrage_swaps
|
||||
(arbitrage_id, swap_transaction_hash, swap_trace_address)
|
||||
VALUES
|
||||
(:arbitrage_id, :swap_transaction_hash, :swap_trace_address)
|
||||
""",
|
||||
params=swap_arbitrage_ids,
|
||||
)
|
||||
|
||||
db_session.commit()
|
||||
|
Loading…
x
Reference in New Issue
Block a user