diff --git a/nym-connect/payment-manager/src/error.rs b/nym-connect/payment-manager/src/error.rs index 6efde2d350..567911a470 100644 --- a/nym-connect/payment-manager/src/error.rs +++ b/nym-connect/payment-manager/src/error.rs @@ -22,6 +22,9 @@ pub enum Error { #[error("NyxdError - {0}")] NyxdError(#[from] nym_validator_client::nyxd::error::NyxdError), + #[error("Invalid payment requested")] + InvalidPaymentRequest, + #[error("Bad deposit address")] BadAddress, diff --git a/nym-connect/payment-manager/src/http/routes.rs b/nym-connect/payment-manager/src/http/routes.rs index 38fa16b763..da1001afb9 100644 --- a/nym-connect/payment-manager/src/http/routes.rs +++ b/nym-connect/payment-manager/src/http/routes.rs @@ -30,7 +30,8 @@ pub async fn claim_payment( .storage .manager .get_payment(&claim_payment_request_body.serial_number) - .await?; + .await? + .ok_or(Error::InvalidPaymentRequest)?; let recipient = AccountId::from_str(&claim_payment_request_body.deposit_address) .map_err(|_| Error::BadAddress)?; diff --git a/nym-connect/payment-manager/src/state.rs b/nym-connect/payment-manager/src/state.rs index 6831b7e224..a5067075cf 100644 --- a/nym-connect/payment-manager/src/state.rs +++ b/nym-connect/payment-manager/src/state.rs @@ -25,7 +25,7 @@ pub struct State { } impl State { - pub(crate) async fn new(storage: Storage, client: Client, config: Config) -> Self { + pub(crate) fn new(storage: Storage, client: Client, config: Config) -> Self { State { storage, client, diff --git a/nym-connect/payment-manager/src/storage/manager.rs b/nym-connect/payment-manager/src/storage/manager.rs index d6586b0c45..0bf70a2229 100644 --- a/nym-connect/payment-manager/src/storage/manager.rs +++ b/nym-connect/payment-manager/src/storage/manager.rs @@ -10,7 +10,10 @@ pub(crate) struct StorageManager { // all SQL goes here impl StorageManager { - pub(crate) async fn get_payment(&self, serial_number: &str) -> Result { + pub(crate) async fn get_payment( + &self, + serial_number: &str, + ) -> Result, sqlx::Error> { sqlx::query_as!( Payment, r#" @@ -20,7 +23,7 @@ impl StorageManager { "#, serial_number ) - .fetch_one(&self.connection_pool) + .fetch_optional(&self.connection_pool) .await }