diff --git a/backend/internal/data/shutter_explorer.sql.go b/backend/internal/data/shutter_explorer.sql.go index fa948e5..bdf67e4 100644 --- a/backend/internal/data/shutter_explorer.sql.go +++ b/backend/internal/data/shutter_explorer.sql.go @@ -84,12 +84,11 @@ func (q *Queries) QueryExecutedTransactionStats(ctx context.Context) ([]QueryExe return items, nil } -const queryFromTransactionDetails = `-- name: QueryFromTransactionDetails :one +const queryFromTransactionDetails = `-- name: QueryFromTransactionDetails :many SELECT tx_hash as user_tx_hash, encrypted_tx_hash FROM transaction_details WHERE tx_hash = $1 OR encrypted_tx_hash = $1 ORDER BY submission_time DESC -LIMIT 1 ` type QueryFromTransactionDetailsRow struct { @@ -97,11 +96,24 @@ type QueryFromTransactionDetailsRow struct { EncryptedTxHash string } -func (q *Queries) QueryFromTransactionDetails(ctx context.Context, txHash string) (QueryFromTransactionDetailsRow, error) { - row := q.db.QueryRow(ctx, queryFromTransactionDetails, txHash) - var i QueryFromTransactionDetailsRow - err := row.Scan(&i.UserTxHash, &i.EncryptedTxHash) - return i, err +func (q *Queries) QueryFromTransactionDetails(ctx context.Context, txHash string) ([]QueryFromTransactionDetailsRow, error) { + rows, err := q.db.Query(ctx, queryFromTransactionDetails, txHash) + if err != nil { + return nil, err + } + defer rows.Close() + var items []QueryFromTransactionDetailsRow + for rows.Next() { + var i QueryFromTransactionDetailsRow + if err := rows.Scan(&i.UserTxHash, &i.EncryptedTxHash); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil } const queryGreeter = `-- name: QueryGreeter :many diff --git a/backend/internal/data/sql/queries/shutter_explorer.sql b/backend/internal/data/sql/queries/shutter_explorer.sql index 2d72c40..26d6efa 100644 --- a/backend/internal/data/sql/queries/shutter_explorer.sql +++ b/backend/internal/data/sql/queries/shutter_explorer.sql @@ -139,12 +139,11 @@ SELECT tx_hash, EXTRACT(EPOCH FROM created_at)::BIGINT AS included_timestamp FROM decrypted_tx WHERE slot = $1 AND tx_status = 'shielded inclusion'; --- name: QueryFromTransactionDetails :one +-- name: QueryFromTransactionDetails :many SELECT tx_hash as user_tx_hash, encrypted_tx_hash FROM transaction_details WHERE tx_hash = $1 OR encrypted_tx_hash = $1 -ORDER BY submission_time DESC -LIMIT 1; +ORDER BY submission_time DESC; -- name: QueryTransactionDetailsByTxHash :one WITH prioritized_tx AS ( diff --git a/backend/internal/usecase/transaction.go b/backend/internal/usecase/transaction.go index 94e767b..12110e0 100644 --- a/backend/internal/usecase/transaction.go +++ b/backend/internal/usecase/transaction.go @@ -191,7 +191,13 @@ func (uc *TransactionUsecase) QueryTransactionDetailsByTxHash(ctx context.Contex return nil, &err } } else { - txHashBytes = common.HexToHash(erpcTX.EncryptedTxHash).Bytes() + if len(erpcTX) > 0 { + if txHash == erpcTX[0].EncryptedTxHash { + txHashBytes = common.HexToHash(erpcTX[0].EncryptedTxHash).Bytes() + } else { + txHashBytes = common.HexToHash(erpcTX[0].UserTxHash).Bytes() + } + } } tse, err := uc.observerDBQuery.QueryTransactionDetailsByTxHash(ctx, txHashBytes) @@ -291,8 +297,8 @@ func (uc *TransactionUsecase) QueryTransactionDetailsByTxHash(ctx context.Contex if len(tse.UserTxHash) > 0 { userTxHash = "0x" + hex.EncodeToString(tse.UserTxHash) } else { - if erpcTxErr == nil { - userTxHash = erpcTX.UserTxHash + if len(erpcTX) > 0 { + userTxHash = erpcTX[0].UserTxHash } }