@@ -86,10 +86,10 @@ DELETE FROM ps_crud;
8686DELETE FROM ps_untyped;
8787DELETE FROM ps_updated_rows;
8888DELETE FROM ps_kv WHERE key != 'client_id';
89- DELETE FROM ps_sync_state;
9089DELETE FROM ps_stream_subscriptions;
9190" ,
9291 ) ?;
92+ clear_has_synced ( local_db) ?;
9393
9494 let table_glob = if flags. clear_local ( ) {
9595 "ps_data_*"
@@ -155,14 +155,25 @@ fn trigger_resync(db: *mut sqlite::sqlite3, state: &DatabaseState) -> Result<(),
155155 Ok ( Default :: default ( ) )
156156}
157157
158+ fn clear_has_synced ( db : * mut sqlite:: sqlite3 ) -> Result < ( ) , PowerSyncError > {
159+ db. exec_safe ( "DELETE FROM ps_sync_state;" ) ?;
160+ db. exec_safe ( "UPDATE ps_stream_subscriptions SET last_synced_at = NULL" ) ?;
161+ Ok ( ( ) )
162+ }
163+
158164fn powersync_trigger_resync_impl (
159165 ctx : * mut sqlite:: context ,
160- _args : & [ * mut sqlite:: value ] ,
166+ args : & [ * mut sqlite:: value ] ,
161167) -> Result < String , PowerSyncError > {
162168 let local_db = ctx. db_handle ( ) ;
163169 let state = unsafe { DatabaseState :: from_context ( & ctx) } ;
164170 trigger_resync ( local_db, state) ?;
165171
172+ let clear_progress = args[ 0 ] . int ( ) != 0 ;
173+ if clear_progress {
174+ clear_has_synced ( local_db) ?;
175+ }
176+
166177 Ok ( Default :: default ( ) )
167178}
168179
@@ -243,7 +254,7 @@ pub fn register(db: *mut sqlite::sqlite3, state: Rc<DatabaseState>) -> Result<()
243254
244255 db. create_function_v2 (
245256 "powersync_trigger_resync" ,
246- 0 ,
257+ 1 ,
247258 sqlite:: UTF8 ,
248259 Some ( Rc :: into_raw ( state) as * mut c_void ) ,
249260 Some ( powersync_trigger_resync) ,
0 commit comments