mirror of
https://github.com/aljazceru/breez-sdk-liquid.git
synced 2026-02-23 15:04:22 +01:00
Persistence: consolidate state filter (#400)
* Simplify sync_payments_with_chain_data loop * Extract get_where_clause_state_in() util * Bump flutter transitive dependency
This commit is contained in:
@@ -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<PaymentState>,
|
||||
) -> Result<Vec<ChainSwap>> {
|
||||
let mut where_clause: Vec<String> = Vec::new();
|
||||
where_clause.push(format!(
|
||||
"state in ({})",
|
||||
states
|
||||
.iter()
|
||||
.map(|t| format!("'{}'", *t as i8))
|
||||
.collect::<Vec<_>>()
|
||||
.join(", ")
|
||||
));
|
||||
|
||||
let where_clause = vec![get_where_clause_state_in(&states)];
|
||||
self.list_chain_swaps_where(con, where_clause)
|
||||
}
|
||||
|
||||
|
||||
@@ -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::<Vec<_>>()
|
||||
.join(", ")
|
||||
)
|
||||
}
|
||||
|
||||
impl Persister {
|
||||
pub fn new(working_dir: &str, network: LiquidNetwork) -> Result<Self> {
|
||||
let main_db_dir = PathBuf::from_str(working_dir)?;
|
||||
|
||||
@@ -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<Vec<ReceiveSwap>> {
|
||||
let mut where_clause: Vec<String> = Vec::new();
|
||||
where_clause.push(format!(
|
||||
"state in ({})",
|
||||
[PaymentState::Created, PaymentState::Pending]
|
||||
.iter()
|
||||
.map(|t| format!("'{}'", *t as i8))
|
||||
.collect::<Vec<_>>()
|
||||
.join(", ")
|
||||
));
|
||||
let where_clause = vec![get_where_clause_state_in(&[
|
||||
PaymentState::Created,
|
||||
PaymentState::Pending,
|
||||
])];
|
||||
|
||||
self.list_receive_swaps(con, where_clause)
|
||||
}
|
||||
|
||||
@@ -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<Vec<SendSwap>> {
|
||||
let mut where_clause: Vec<String> = Vec::new();
|
||||
where_clause.push(format!(
|
||||
"state in ({})",
|
||||
[PaymentState::Created, PaymentState::Pending]
|
||||
.iter()
|
||||
.map(|t| format!("'{}'", *t as i8))
|
||||
.collect::<Vec<_>>()
|
||||
.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<Vec<SendSwap>> {
|
||||
let mut where_clause: Vec<String> = Vec::new();
|
||||
where_clause.push(format!(
|
||||
"state in ({})",
|
||||
[PaymentState::Pending, PaymentState::RefundPending]
|
||||
.iter()
|
||||
.map(|t| format!("'{}'", *t as i8))
|
||||
.collect::<Vec<_>>()
|
||||
.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);
|
||||
|
||||
@@ -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<String, Payment> = self
|
||||
.list_payments(&ListPaymentsRequest {
|
||||
..Default::default()
|
||||
})
|
||||
.list_payments(&ListPaymentsRequest::default())
|
||||
.await?
|
||||
.into_iter()
|
||||
.filter_map(|payment| {
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user