diff --git a/lib/core/src/persist/chain.rs b/lib/core/src/persist/chain.rs index 059ddb3..1eda692 100644 --- a/lib/core/src/persist/chain.rs +++ b/lib/core/src/persist/chain.rs @@ -8,7 +8,7 @@ use serde::{Deserialize, Serialize}; use crate::ensure_sdk; use crate::error::PaymentError; use crate::model::*; -use crate::persist::Persister; +use crate::persist::{get_where_clause_state_in, Persister}; impl Persister { pub(crate) fn insert_chain_swap(&self, chain_swap: &ChainSwap) -> Result<()> { @@ -179,16 +179,7 @@ impl Persister { con: &Connection, states: Vec, ) -> Result> { - let mut where_clause: Vec = Vec::new(); - where_clause.push(format!( - "state in ({})", - states - .iter() - .map(|t| format!("'{}'", *t as i8)) - .collect::>() - .join(", ") - )); - + let where_clause = vec![get_where_clause_state_in(&states)]; self.list_chain_swaps_where(con, where_clause) } diff --git a/lib/core/src/persist/mod.rs b/lib/core/src/persist/mod.rs index f4240e2..a735132 100644 --- a/lib/core/src/persist/mod.rs +++ b/lib/core/src/persist/mod.rs @@ -21,6 +21,18 @@ pub(crate) struct Persister { network: LiquidNetwork, } +/// Builds a WHERE clause that checks if `state` is any of the given arguments +fn get_where_clause_state_in(allowed_states: &[PaymentState]) -> String { + format!( + "state in ({})", + allowed_states + .iter() + .map(|t| format!("'{}'", *t as i8)) + .collect::>() + .join(", ") + ) +} + impl Persister { pub fn new(working_dir: &str, network: LiquidNetwork) -> Result { let main_db_dir = PathBuf::from_str(working_dir)?; diff --git a/lib/core/src/persist/receive.rs b/lib/core/src/persist/receive.rs index f96ec9d..302ce27 100644 --- a/lib/core/src/persist/receive.rs +++ b/lib/core/src/persist/receive.rs @@ -8,7 +8,7 @@ use serde::{Deserialize, Serialize}; use crate::ensure_sdk; use crate::error::PaymentError; use crate::model::*; -use crate::persist::Persister; +use crate::persist::{get_where_clause_state_in, Persister}; impl Persister { pub(crate) fn insert_receive_swap(&self, receive_swap: &ReceiveSwap) -> Result<()> { @@ -129,15 +129,10 @@ impl Persister { &self, con: &Connection, ) -> rusqlite::Result> { - let mut where_clause: Vec = Vec::new(); - where_clause.push(format!( - "state in ({})", - [PaymentState::Created, PaymentState::Pending] - .iter() - .map(|t| format!("'{}'", *t as i8)) - .collect::>() - .join(", ") - )); + let where_clause = vec![get_where_clause_state_in(&[ + PaymentState::Created, + PaymentState::Pending, + ])]; self.list_receive_swaps(con, where_clause) } diff --git a/lib/core/src/persist/send.rs b/lib/core/src/persist/send.rs index 5bba176..1d5a663 100644 --- a/lib/core/src/persist/send.rs +++ b/lib/core/src/persist/send.rs @@ -8,7 +8,7 @@ use serde::{Deserialize, Serialize}; use crate::ensure_sdk; use crate::error::PaymentError; use crate::model::*; -use crate::persist::Persister; +use crate::persist::{get_where_clause_state_in, Persister}; impl Persister { pub(crate) fn insert_send_swap(&self, send_swap: &SendSwap) -> Result<()> { @@ -147,29 +147,19 @@ impl Persister { &self, con: &Connection, ) -> rusqlite::Result> { - let mut where_clause: Vec = Vec::new(); - where_clause.push(format!( - "state in ({})", - [PaymentState::Created, PaymentState::Pending] - .iter() - .map(|t| format!("'{}'", *t as i8)) - .collect::>() - .join(", ") - )); + let where_clause = vec![get_where_clause_state_in(&[ + PaymentState::Created, + PaymentState::Pending, + ])]; self.list_send_swaps(con, where_clause) } pub(crate) fn list_pending_send_swaps(&self) -> Result> { - let mut where_clause: Vec = Vec::new(); - where_clause.push(format!( - "state in ({})", - [PaymentState::Pending, PaymentState::RefundPending] - .iter() - .map(|t| format!("'{}'", *t as i8)) - .collect::>() - .join(", ") - )); + let where_clause = vec![get_where_clause_state_in(&[ + PaymentState::Pending, + PaymentState::RefundPending, + ])]; let con: Connection = self.get_connection()?; let query = Self::list_send_swaps_query(where_clause); diff --git a/lib/core/src/sdk.rs b/lib/core/src/sdk.rs index c84a91a..3cb309d 100644 --- a/lib/core/src/sdk.rs +++ b/lib/core/src/sdk.rs @@ -1355,9 +1355,7 @@ impl LiquidSdk { /// it inserts or updates a corresponding entry in our Payments table. async fn sync_payments_with_chain_data(&self, with_scan: bool) -> Result<()> { let payments_before_sync: HashMap = self - .list_payments(&ListPaymentsRequest { - ..Default::default() - }) + .list_payments(&ListPaymentsRequest::default()) .await? .into_iter() .filter_map(|payment| { diff --git a/packages/flutter/example/pubspec.lock b/packages/flutter/example/pubspec.lock index 2d1196e..529e24e 100644 --- a/packages/flutter/example/pubspec.lock +++ b/packages/flutter/example/pubspec.lock @@ -426,10 +426,10 @@ packages: dependency: transitive description: name: qr - sha256: "64957a3930367bf97cc211a5af99551d630f2f4625e38af10edd6b19131b64b3" + sha256: "5a1d2586170e172b8a8c8470bbbffd5eb0cd38a66c0d77155ea138d3af3a4445" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" qr_flutter: dependency: "direct main" description: