@@ -4,6 +4,7 @@ use powersync::{env::PowerSyncEnvironment, ConnectionPool, PowerSyncDatabase};
44use rusqlite:: Connection ;
55use std:: collections:: hash_map:: Entry ;
66use std:: marker:: PhantomData ;
7+ use std:: sync:: atomic:: { AtomicI32 , Ordering } ;
78use std:: sync:: { Arc , Weak } ;
89use std:: { collections:: HashMap , sync:: Mutex } ;
910use tauri:: {
@@ -35,6 +36,7 @@ impl<R: Runtime, T: Manager<R>> PowerSyncExt<R> for T {
3536pub struct PowerSync < R : Runtime > {
3637 app : PhantomData < AppHandle < R > > ,
3738 databases : Mutex < HashMap < String , Weak < TauriDatabaseState > > > ,
39+ event_id_counter : AtomicI32 ,
3840 pub ( crate ) handles : JavaScriptHandles ,
3941}
4042
@@ -72,7 +74,8 @@ impl<R: Runtime> PowerSync<R> {
7274 let database = PowerSyncDatabase :: new ( env, schema) ;
7375 database. async_tasks ( ) . spawn_with_tokio ( ) ;
7476
75- let db = Arc :: new ( TauriDatabaseState :: new ( app, name, database) ) ;
77+ let event_id = self . event_id_counter . fetch_add ( 1 , Ordering :: SeqCst ) ;
78+ let db = Arc :: new ( TauriDatabaseState :: new ( app, event_id, database) ) ;
7679 entry. insert_entry ( Arc :: downgrade ( & db) ) ;
7780
7881 Ok ( db)
@@ -95,6 +98,7 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
9598 app : PhantomData :: < AppHandle < R > > ,
9699 databases : Default :: default ( ) ,
97100 handles : Default :: default ( ) ,
101+ event_id_counter : Default :: default ( ) ,
98102 } ;
99103 app. manage ( powersync) ;
100104 Ok ( ( ) )
0 commit comments