@@ -3,7 +3,6 @@ extern crate alloc;
33use alloc:: boxed:: Box ;
44use alloc:: string:: String ;
55use core:: ffi:: { c_char, c_int, c_void} ;
6- use core:: slice;
76
87use sqlite:: { Connection , ResultCode , Value } ;
98use sqlite_nostd as sqlite;
@@ -29,7 +28,7 @@ struct VirtualTable {
2928 base : sqlite:: vtab ,
3029 db : * mut sqlite:: sqlite3 ,
3130 current_tx : Option < i64 > ,
32- insert_statement : Option < ManagedStmt >
31+ insert_statement : Option < ManagedStmt > ,
3332}
3433
3534extern "C" fn connect (
@@ -40,8 +39,7 @@ extern "C" fn connect(
4039 vtab : * mut * mut sqlite:: vtab ,
4140 _err : * mut * mut c_char ,
4241) -> c_int {
43- if let Err ( rc) = sqlite:: declare_vtab ( db, "CREATE TABLE powersync_crud_(data TEXT);" )
44- {
42+ if let Err ( rc) = sqlite:: declare_vtab ( db, "CREATE TABLE powersync_crud_(data TEXT);" ) {
4543 return rc as c_int ;
4644 }
4745
@@ -54,7 +52,7 @@ extern "C" fn connect(
5452 } ,
5553 db,
5654 current_tx : None ,
57- insert_statement : None
55+ insert_statement : None ,
5856 } ) ) ;
5957 * vtab = tab. cast :: < sqlite:: vtab > ( ) ;
6058 let _ = sqlite:: vtab_config ( db, 0 ) ;
@@ -69,17 +67,17 @@ extern "C" fn disconnect(vtab: *mut sqlite::vtab) -> c_int {
6967 ResultCode :: OK as c_int
7068}
7169
72-
7370fn begin_impl ( tab : & mut VirtualTable ) -> Result < ( ) , SQLiteError > {
7471 let db = tab. db ;
7572
7673 let insert_statement = db. prepare_v3 ( "INSERT INTO ps_crud(tx_id, data) VALUES (?1, ?2)" , 0 ) ?;
7774 tab. insert_statement = Some ( insert_statement) ;
7875
7976 // language=SQLite
80- let statement = db. prepare_v2 ( "UPDATE ps_tx SET next_tx = next_tx + 1 WHERE id = 1 RETURNING next_tx" ) ?;
77+ let statement =
78+ db. prepare_v2 ( "UPDATE ps_tx SET next_tx = next_tx + 1 WHERE id = 1 RETURNING next_tx" ) ?;
8179 if statement. step ( ) ? == ResultCode :: ROW {
82- let tx_id = statement. column_int64 ( 0 ) ? - 1 ;
80+ let tx_id = statement. column_int64 ( 0 ) - 1 ;
8381 tab. current_tx = Some ( tx_id) ;
8482 } else {
8583 return Err ( SQLiteError :: from ( ResultCode :: ABORT ) ) ;
@@ -109,23 +107,27 @@ extern "C" fn rollback(vtab: *mut sqlite::vtab) -> c_int {
109107 ResultCode :: OK as c_int
110108}
111109
112- fn insert_operation (
113- vtab : * mut sqlite:: vtab , data : & str ) -> Result < ( ) , SQLiteError > {
110+ fn insert_operation ( vtab : * mut sqlite:: vtab , data : & str ) -> Result < ( ) , SQLiteError > {
114111 let tab = unsafe { & mut * ( vtab. cast :: < VirtualTable > ( ) ) } ;
115112 if tab. current_tx . is_none ( ) {
116- return Err ( SQLiteError ( ResultCode :: MISUSE , Some ( String :: from ( "No tx_id" ) ) ) ) ;
113+ return Err ( SQLiteError (
114+ ResultCode :: MISUSE ,
115+ Some ( String :: from ( "No tx_id" ) ) ,
116+ ) ) ;
117117 }
118118 let current_tx = tab. current_tx . unwrap ( ) ;
119119 // language=SQLite
120- let statement = tab. insert_statement . as_ref ( ) . ok_or ( SQLiteError :: from ( NULL ) ) ?;
120+ let statement = tab
121+ . insert_statement
122+ . as_ref ( )
123+ . ok_or ( SQLiteError :: from ( NULL ) ) ?;
121124 statement. bind_int64 ( 1 , current_tx) ?;
122125 statement. bind_text ( 2 , data, sqlite:: Destructor :: STATIC ) ?;
123126 statement. exec ( ) ?;
124127
125128 Ok ( ( ) )
126129}
127130
128-
129131extern "C" fn update (
130132 vtab : * mut sqlite:: vtab ,
131133 argc : c_int ,
@@ -178,6 +180,7 @@ static MODULE: sqlite_nostd::module = sqlite_nostd::module {
178180 xRelease : None ,
179181 xRollbackTo : None ,
180182 xShadowName : None ,
183+ xIntegrity : None ,
181184} ;
182185
183186pub fn register ( db : * mut sqlite:: sqlite3 ) -> Result < ( ) , ResultCode > {
0 commit comments