Blockchain explorer for Ethereum based network and a tool for inspecting and analyzing EVM based blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blockscout/lib/explorer_web/controllers/pending_transaction_control...

37 lines
1.2 KiB

defmodule ExplorerWeb.PendingTransactionController do
use ExplorerWeb, :controller
import Ecto.Query
alias Explorer.Repo.NewRelic, as: Repo
alias Explorer.Transaction
alias Explorer.PendingTransactionForm
def index(conn, params) do
query = from transaction in Transaction,
left_join: receipt in assoc(transaction, :receipt),
inner_join: to_address in assoc(transaction, :to_address),
inner_join: from_address in assoc(transaction, :from_address),
preload: [to_address: to_address, from_address: from_address],
order_by: [desc: transaction.inserted_at],
where: is_nil(receipt.transaction_id)
total_query = from transaction in Transaction,
select: fragment("count(?)", transaction.id),
left_join: receipt in assoc(transaction, :receipt),
where: is_nil(receipt.transaction_id)
transactions = Repo.paginate(
query,
params
|> Map.put(:total_entries, Repo.one(total_query))
|> Map.put(:page_size, 25)
)
entries = transactions.entries |> Enum.map(&PendingTransactionForm.build/1)
render(
conn,
"index.html",
transactions: Map.put(transactions, :entries, entries)
)
end
end