@@ -156,8 +156,12 @@ impl Persister {
156
156
rs.created_at,
157
157
rs.state,
158
158
rs.pair_fees_json,
159
- rs.version
159
+ rs.version,
160
+
161
+ -- Used for filtering
162
+ sync_state.is_local
160
163
FROM receive_swaps AS rs
164
+ LEFT JOIN sync_state ON rs.id = sync_state.data_id
161
165
{where_clause_str}
162
166
ORDER BY rs.created_at
163
167
"
@@ -222,12 +226,21 @@ impl Persister {
222
226
Ok ( ongoing_receive)
223
227
}
224
228
225
- pub ( crate ) fn list_ongoing_receive_swaps ( & self ) -> Result < Vec < ReceiveSwap > > {
229
+ pub ( crate ) fn list_ongoing_receive_swaps (
230
+ & self ,
231
+ is_local : Option < bool > ,
232
+ ) -> Result < Vec < ReceiveSwap > > {
226
233
let con = self . get_connection ( ) ?;
227
- let where_clause = vec ! [ get_where_clause_state_in( & [
234
+ let mut where_clause = vec ! [ get_where_clause_state_in( & [
228
235
PaymentState :: Created ,
229
236
PaymentState :: Pending ,
230
237
] ) ] ;
238
+ if let Some ( is_local) = is_local {
239
+ where_clause. push ( format ! (
240
+ "(sync_state.is_local = {} OR sync_state.is_local IS NULL)" ,
241
+ is_local as i8
242
+ ) ) ;
243
+ }
231
244
232
245
self . list_receive_swaps_where ( & con, where_clause)
233
246
}
@@ -397,7 +410,7 @@ mod tests {
397
410
fn test_fetch_receive_swap ( ) -> Result < ( ) > {
398
411
create_persister ! ( storage) ;
399
412
400
- let receive_swap = new_receive_swap ( None ) ;
413
+ let receive_swap = new_receive_swap ( None , None ) ;
401
414
402
415
storage. insert_or_update_receive_swap ( & receive_swap) ?;
403
416
// Fetch swap by id
@@ -417,16 +430,17 @@ mod tests {
417
430
// List general receive swaps
418
431
let range = 0 ..3 ;
419
432
for _ in range. clone ( ) {
420
- storage. insert_or_update_receive_swap ( & new_receive_swap ( None ) ) ?;
433
+ storage. insert_or_update_receive_swap ( & new_receive_swap ( None , None ) ) ?;
421
434
}
422
435
423
436
let con = storage. get_connection ( ) ?;
424
437
let swaps = storage. list_receive_swaps_where ( & con, vec ! [ ] ) ?;
425
438
assert_eq ! ( swaps. len( ) , range. len( ) ) ;
426
439
427
440
// List ongoing receive swaps
428
- storage. insert_or_update_receive_swap ( & new_receive_swap ( Some ( PaymentState :: Pending ) ) ) ?;
429
- let ongoing_swaps = storage. list_ongoing_receive_swaps ( ) ?;
441
+ storage
442
+ . insert_or_update_receive_swap ( & new_receive_swap ( Some ( PaymentState :: Pending ) , None ) ) ?;
443
+ let ongoing_swaps = storage. list_ongoing_receive_swaps ( None ) ?;
430
444
assert_eq ! ( ongoing_swaps. len( ) , 4 ) ;
431
445
432
446
Ok ( ( ) )
@@ -436,7 +450,7 @@ mod tests {
436
450
fn test_update_receive_swap ( ) -> Result < ( ) > {
437
451
create_persister ! ( storage) ;
438
452
439
- let receive_swap = new_receive_swap ( None ) ;
453
+ let receive_swap = new_receive_swap ( None , None ) ;
440
454
storage. insert_or_update_receive_swap ( & receive_swap) ?;
441
455
442
456
// Update metadata
@@ -466,7 +480,7 @@ mod tests {
466
480
async fn test_writing_stale_swap ( ) -> Result < ( ) > {
467
481
create_persister ! ( storage) ;
468
482
469
- let receive_swap = new_receive_swap ( None ) ;
483
+ let receive_swap = new_receive_swap ( None , None ) ;
470
484
storage. insert_or_update_receive_swap ( & receive_swap) ?;
471
485
472
486
// read - update - write works if there are no updates in between
0 commit comments