parent
1a56a5a27a
commit
d95a217f75
@ -0,0 +1,42 @@ |
|||||||
|
defmodule Indexer.Temporary.FailedCreatedAddresses do |
||||||
|
@moduledoc """ |
||||||
|
Temporary module to fix internal transactions and their created transactions if a parent transaction has failed. |
||||||
|
""" |
||||||
|
|
||||||
|
import Ecto.Query |
||||||
|
|
||||||
|
alias Explorer.Chain.{InternalTransaction, Transaction} |
||||||
|
alias Explorer.Repo |
||||||
|
|
||||||
|
def run(json_rpc_named_arguments) do |
||||||
|
query = |
||||||
|
from(it in InternalTransaction, |
||||||
|
left_join: t in assoc(it, :transaction), |
||||||
|
where: t.error == 0 and not is_nil(it.created_contract_address_hash), |
||||||
|
preload: :transaction |
||||||
|
) |
||||||
|
|
||||||
|
query |
||||||
|
|> Repo.all() |
||||||
|
|> Enum.each(fn internal_transaction -> |
||||||
|
internal_transaction |
||||||
|
|> code_entry() |
||||||
|
|> Indexer.Code.Fetcher.run(json_rpc_named_arguments) |
||||||
|
|
||||||
|
internal_transaction.transaction_index |
||||||
|
|> transaction_entry() |
||||||
|
|> Indexer.InternalTransaction.Fetcher.run(json_rpc_named_arguments) |
||||||
|
end) |
||||||
|
end |
||||||
|
|
||||||
|
def code_entry(%InternalTransaction{ |
||||||
|
block_number: block_number, |
||||||
|
created_contract_address_hash: %{bytes: created_contract_bytes} |
||||||
|
}) do |
||||||
|
[{block_number, created_contract_bytes}] |
||||||
|
end |
||||||
|
|
||||||
|
def transaction_entry(%Transaction{hash: %{bytes: bytes}, index: index, block_number: block_number}) do |
||||||
|
[{block_number, bytes, index}] |
||||||
|
end |
||||||
|
end |
Loading…
Reference in new issue