Skip to content

Commit

Permalink
fix: add special CompletedTransactionConversionError type
Browse files Browse the repository at this point in the history
  • Loading branch information
therustmonk committed Oct 15, 2021
1 parent 7b62984 commit 1aecde2
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 10 deletions.
4 changes: 3 additions & 1 deletion base_layer/wallet/src/transaction_service/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
use crate::{
error::WalletStorageError,
output_manager_service::error::OutputManagerError,
transaction_service::storage::database::DbKey,
transaction_service::storage::{database::DbKey, sqlite_db::CompletedTransactionConversionError},
};
use diesel::result::Error as DieselError;
use futures::channel::oneshot::Canceled;
Expand Down Expand Up @@ -190,6 +190,8 @@ pub enum TransactionStorageError {
OutOfRangeError(#[from] OutOfRangeError),
#[error("Error converting a type: `{0}`")]
ConversionError(#[from] TransactionConversionError),
#[error("Completed transaction conversion error: `{0}`")]
CompletedConversionError(#[from] CompletedTransactionConversionError),
#[error("Serde json error: `{0}`")]
SerdeJsonError(#[from] SerdeJsonError),
#[error("R2d2 error")]
Expand Down
30 changes: 21 additions & 9 deletions base_layer/wallet/src/transaction_service/storage/sqlite_db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,13 @@ use std::{
sync::{Arc, MutexGuard, RwLock},
};
use tari_common_types::{
transaction::{TransactionDirection, TransactionStatus, TxId},
transaction::{
TransactionConversionError,
TransactionDirection,
TransactionDirectionError,
TransactionStatus,
TxId,
},
types::{BlockHash, PublicKey},
};
use tari_comms::types::CommsPublicKey;
Expand All @@ -55,6 +61,7 @@ use tari_crypto::tari_utilities::{
hex::{from_hex, Hex},
ByteArray,
};
use thiserror::Error;
use tokio::time::Instant;

const LOG_TARGET: &str = "wallet::transaction_service::database::sqlite_db";
Expand Down Expand Up @@ -871,13 +878,7 @@ impl TransactionBackend for TransactionServiceSqliteDatabase {
let mut coinbase_txs = CompletedTransactionSql::index_coinbase_at_block_height(block_height as i64, &conn)?;
for c in coinbase_txs.iter_mut() {
self.decrypt_if_necessary(c)?;
// TODO: WARNING! The change hides the intermediate error!
// Use `CompletedTransactionConversionError` ASAP!!!
let completed_tx = CompletedTransaction::try_from(c.clone())?;
// .map_err(|_| {
// TransactionStorageError::ConversionError("Error converting to CompletedTransaction".to_string())
// })?;

if completed_tx.amount == amount {
return Ok(Some(completed_tx));
}
Expand Down Expand Up @@ -1640,9 +1641,20 @@ impl TryFrom<CompletedTransaction> for CompletedTransactionSql {
}
}

#[derive(Debug, Error)]
pub enum CompletedTransactionConversionError {
#[error("CompletedTransaction conversion failed by wrong direction: {0}")]
DirectionError(#[from] TransactionDirectionError),
#[error("CompletedTransaction conversion failed with transaction conversion: {0}")]
ConversionError(#[from] TransactionConversionError),
#[error("CompletedTransaction conversion failed with json error: {0}")]
JsonError(#[from] serde_json::Error),
#[error("CompletedTransaction conversion failed with key error: {0}")]
KeyError(#[from] TransactionKeyError),
}

impl TryFrom<CompletedTransactionSql> for CompletedTransaction {
// TODO: Add `CompletedTransactionConversionError` instead
type Error = TransactionStorageError;
type Error = CompletedTransactionConversionError;

fn try_from(c: CompletedTransactionSql) -> Result<Self, Self::Error> {
Ok(Self {
Expand Down

0 comments on commit 1aecde2

Please sign in to comment.