@@ -10,7 +10,10 @@ use crate::{
1010 operations:: delete_bucket,
1111 schema:: Schema ,
1212 state:: DatabaseState ,
13- sync:: checkpoint:: { validate_checkpoint, ChecksumMismatch } ,
13+ sync:: {
14+ checkpoint:: { validate_checkpoint, ChecksumMismatch } ,
15+ sync_status:: SyncPriorityStatus ,
16+ } ,
1417 sync_local:: { PartialSyncOperation , SyncOperation } ,
1518} ;
1619
@@ -68,6 +71,32 @@ impl StorageAdapter {
6871 Ok ( requests)
6972 }
7073
74+ pub fn collect_sync_state ( & self ) -> Result < Vec < SyncPriorityStatus > , PowerSyncError > {
75+ // language=SQLite
76+ let statement = self
77+ . db
78+ . prepare_v2 (
79+ "SELECT priority, unixepoch(last_synced_at) FROM ps_sync_state ORDER BY priority" ,
80+ )
81+ . into_db_result ( self . db ) ?;
82+
83+ let mut items = Vec :: < SyncPriorityStatus > :: new ( ) ;
84+ while statement. step ( ) ? == ResultCode :: ROW {
85+ let priority = BucketPriority {
86+ number : statement. column_int ( 0 ) ,
87+ } ;
88+ let timestamp = statement. column_int64 ( 1 ) ;
89+
90+ items. push ( SyncPriorityStatus {
91+ priority,
92+ last_synced_at : Some ( Timestamp ( timestamp) ) ,
93+ has_synced : Some ( true ) ,
94+ } ) ;
95+ }
96+
97+ return Ok ( items) ;
98+ }
99+
71100 pub fn delete_buckets < ' a > (
72101 & self ,
73102 buckets : impl IntoIterator < Item = & ' a str > ,
0 commit comments