whisky_provider/maestro/utils/
transaction_utils.rs1use crate::maestro::models::transaction::TransactionDetail;
2
3use whisky_common::{models::TransactionInfo, WError};
4
5use super::utxo_utils::to_utxo;
6
7pub fn transaction_detail_to_info(
8 transaction_detail: TransactionDetail,
9) -> Result<TransactionInfo, WError> {
10 let tx_info = TransactionInfo {
11 index: transaction_detail.block_tx_index as u32,
12 block: transaction_detail.block_hash,
13 hash: transaction_detail.tx_hash,
14 slot: transaction_detail.block_absolute_slot.to_string(),
15 fees: transaction_detail.fee.to_string(),
16 size: transaction_detail.size as u32,
17 deposit: transaction_detail.deposit.to_string(),
18 invalid_before: match transaction_detail.invalid_before {
19 Some(i) => i.to_string(),
20 None => "".to_string(),
21 },
22 invalid_after: transaction_detail
23 .invalid_hereafter
24 .unwrap_or(0)
25 .to_string(),
26 inputs: transaction_detail
27 .inputs
28 .iter()
29 .map(to_utxo)
30 .collect::<Result<Vec<_>, _>>()?,
31 outputs: transaction_detail
32 .outputs
33 .iter()
34 .map(to_utxo)
35 .collect::<Result<Vec<_>, _>>()?,
36 block_height: Some(transaction_detail.block_height as u32),
37 block_time: Some(transaction_detail.block_timestamp as u64),
38 };
39 Ok(tx_info)
40}