add minimal tx list query and template
This commit is contained in:
parent
dfd954aca6
commit
b8c6fcd900
|
@ -0,0 +1,47 @@
|
|||
<table id="txlist" class="table table-sm table-nowrap card-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-muted c-pointer">#</th>
|
||||
<th class="text-muted">In block</th>
|
||||
<th class="text-muted">Transaction Signature</th>
|
||||
<th class="text-muted text-end table-cell-width-number">CU requested</th>
|
||||
<th class="text-muted text-end table-cell-width-number">Prio Fees</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="list">
|
||||
{% if limit_exceeded %}
|
||||
<tr>
|
||||
<td colspan="7" class="text-warning">Result was truncated</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% for tx in transactions %}
|
||||
<tr>
|
||||
<td>{{ tx.pos }}</td>
|
||||
|
||||
{% if tx.was_included_in_block %}
|
||||
<td><span class="badge bg-success-soft">Included</span></td>
|
||||
{% else %}
|
||||
<td><span class="badge bg-warning-soft">Excluded</span></td>
|
||||
{% endif %}
|
||||
<td>
|
||||
<div class="d-flex align-items-center font-monospace" style="width:20em">
|
||||
<div class="text-truncate">
|
||||
<a href="/transaction/{{tx.signature}}">{{ tx.signature }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-end font-monospace">
|
||||
<div class="font-monospace text-primary">
|
||||
{{ tx.cu_requested | lamports }}
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-end font-monospace">
|
||||
<div class="font-monospace text-primary">
|
||||
{{ tx.prioritization_fees | lamports }}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
|
@ -120,7 +120,7 @@
|
|||
<div class="card-header align-items-center"><h3 class="card-header-title">Transactions requesting locks</h3></div>
|
||||
|
||||
|
||||
{% include "_txlist.html" %}
|
||||
{% include "_txlistmini.html" %}
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ import postgres_connection
|
|||
import json
|
||||
|
||||
|
||||
def run_query(transaction_row_limit=50, filter_txsig=None, filter_account_address=None):
|
||||
def run_query(transaction_row_limit=50, filter_txsig=None):
|
||||
maprows = postgres_connection.query(
|
||||
"""
|
||||
SELECT * FROM (
|
||||
|
@ -24,19 +24,12 @@ def run_query(transaction_row_limit=50, filter_txsig=None, filter_account_addres
|
|||
LEFT JOIN banking_stage_results_2.transaction_infos txi ON txi.transaction_id=tx_slot.transaction_id
|
||||
WHERE true
|
||||
AND (%s or signature = %s)
|
||||
AND (%s or txi.transaction_id in (
|
||||
SELECT transaction_id
|
||||
FROM banking_stage_results_2.accounts_map_transaction amt
|
||||
INNER JOIN banking_stage_results_2.accounts acc ON acc.acc_id=amt.acc_id
|
||||
WHERE account_key = %s
|
||||
))
|
||||
) AS data
|
||||
-- transaction_id is required as tie breaker
|
||||
ORDER BY utc_timestamp DESC, transaction_id DESC
|
||||
LIMIT %s
|
||||
""", [
|
||||
filter_txsig is None, filter_txsig,
|
||||
filter_account_address is None, filter_account_address,
|
||||
transaction_row_limit,
|
||||
])
|
||||
|
||||
|
@ -47,6 +40,35 @@ def run_query(transaction_row_limit=50, filter_txsig=None, filter_account_addres
|
|||
return maprows
|
||||
|
||||
|
||||
def query_transactions_by_address(account_key: str, transaction_row_limit=100):
|
||||
maprows = postgres_connection.query(
|
||||
"""
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
amt.transaction_id,
|
||||
signature,
|
||||
( txi is not null ) AS was_included_in_block,
|
||||
txi.cu_requested,
|
||||
txi.prioritization_fees
|
||||
FROM banking_stage_results_2.accounts_map_transaction amt
|
||||
INNER JOIN banking_stage_results_2.accounts acc ON acc.acc_id=amt.acc_id
|
||||
INNER JOIN banking_stage_results_2.transactions txs ON txs.transaction_id=amt.transaction_id
|
||||
LEFT JOIN banking_stage_results_2.transaction_infos txi ON txi.transaction_id=amt.transaction_id
|
||||
WHERE account_key = %s
|
||||
) AS data
|
||||
ORDER BY transaction_id DESC
|
||||
LIMIT %s
|
||||
""", [
|
||||
account_key,
|
||||
transaction_row_limit,
|
||||
])
|
||||
|
||||
for index, row in enumerate(maprows):
|
||||
row['pos'] = index + 1
|
||||
|
||||
return maprows
|
||||
|
||||
|
||||
# may return multiple rows
|
||||
def search_transaction_by_sig(tx_sig: str):
|
||||
maprows = run_query(transaction_row_limit=10, filter_txsig=tx_sig)
|
||||
|
@ -54,17 +76,11 @@ def search_transaction_by_sig(tx_sig: str):
|
|||
return maprows
|
||||
|
||||
|
||||
def query_transactions_by_address(account_key: str, transaction_row_limit=100):
|
||||
maprows = run_query(transaction_row_limit=transaction_row_limit, filter_account_address=account_key)
|
||||
|
||||
return maprows
|
||||
|
||||
|
||||
# return (rows, is_limit_exceeded)
|
||||
def search_transactions_by_address(account_key: str) -> (list, bool):
|
||||
maprows = run_query(transaction_row_limit=100, filter_account_address=account_key)
|
||||
maprows = query_transactions_by_address(transaction_row_limit=101, account_key=account_key)
|
||||
|
||||
if len(maprows) == 100:
|
||||
if len(maprows) == 101:
|
||||
print("limit exceeded while searching for transactions by address")
|
||||
return maprows, True
|
||||
|
||||
|
|
Loading…
Reference in New Issue