@@ -5,7 +5,7 @@ use serde::Serialize;
55use sqlite_nostd:: { self as sqlite, Connection , ManagedStmt , ResultCode } ;
66
77use crate :: {
8- error:: PowerSyncError ,
8+ error:: { PSResult , PowerSyncError } ,
99 ext:: SafeManagedStmt ,
1010 operations:: delete_bucket,
1111 schema:: Schema ,
@@ -31,10 +31,11 @@ pub struct StorageAdapter {
3131}
3232
3333impl StorageAdapter {
34- pub fn new ( db : * mut sqlite:: sqlite3 ) -> Result < Self , ResultCode > {
34+ pub fn new ( db : * mut sqlite:: sqlite3 ) -> Result < Self , PowerSyncError > {
3535 // language=SQLite
36- let progress =
37- db. prepare_v2 ( "SELECT name, count_at_last, count_since_last FROM ps_buckets" ) ?;
36+ let progress = db
37+ . prepare_v2 ( "SELECT name, count_at_last, count_since_last FROM ps_buckets" )
38+ . into_db_result ( db) ?;
3839
3940 // language=SQLite
4041 let time = db. prepare_v2 ( "SELECT unixepoch()" ) ?;
@@ -46,11 +47,11 @@ impl StorageAdapter {
4647 } )
4748 }
4849
49- pub fn collect_bucket_requests ( & self ) -> Result < Vec < BucketRequest > , ResultCode > {
50+ pub fn collect_bucket_requests ( & self ) -> Result < Vec < BucketRequest > , PowerSyncError > {
5051 // language=SQLite
5152 let statement = self . db . prepare_v2 (
5253 "SELECT name, last_op FROM ps_buckets WHERE pending_delete = 0 AND name != '$local'" ,
53- ) ?;
54+ ) . into_db_result ( self . db ) ?;
5455
5556 let mut requests = Vec :: < BucketRequest > :: new ( ) ;
5657
@@ -97,23 +98,27 @@ impl StorageAdapter {
9798 }
9899 }
99100
100- pub fn reset_progress ( & self ) -> Result < ( ) , ResultCode > {
101+ pub fn reset_progress ( & self ) -> Result < ( ) , PowerSyncError > {
101102 self . db
102- . exec_safe ( "UPDATE ps_buckets SET count_since_last = 0, count_at_last = 0;" ) ?;
103+ . exec_safe ( "UPDATE ps_buckets SET count_since_last = 0, count_at_last = 0;" )
104+ . into_db_result ( self . db ) ?;
103105 Ok ( ( ) )
104106 }
105107
106- pub fn lookup_bucket ( & self , bucket : & str ) -> Result < BucketInfo , ResultCode > {
108+ pub fn lookup_bucket ( & self , bucket : & str ) -> Result < BucketInfo , PowerSyncError > {
107109 // We do an ON CONFLICT UPDATE simply so that the RETURNING bit works for existing rows.
108110 // We can consider splitting this into separate SELECT and INSERT statements.
109111 // language=SQLite
110- let bucket_statement = self . db . prepare_v2 (
111- "INSERT INTO ps_buckets(name)
112+ let bucket_statement = self
113+ . db
114+ . prepare_v2 (
115+ "INSERT INTO ps_buckets(name)
112116 VALUES(?)
113117 ON CONFLICT DO UPDATE
114118 SET last_applied_op = last_applied_op
115119 RETURNING id, last_applied_op" ,
116- ) ?;
120+ )
121+ . into_db_result ( self . db ) ?;
117122 bucket_statement. bind_text ( 1 , bucket, sqlite:: Destructor :: STATIC ) ?;
118123 let res = bucket_statement. step ( ) ?;
119124 debug_assert_matches ! ( res, ResultCode :: ROW ) ;
@@ -147,7 +152,8 @@ impl StorageAdapter {
147152
148153 let update_bucket = self
149154 . db
150- . prepare_v2 ( "UPDATE ps_buckets SET last_op = ? WHERE name = ?" ) ?;
155+ . prepare_v2 ( "UPDATE ps_buckets SET last_op = ? WHERE name = ?" )
156+ . into_db_result ( self . db ) ?;
151157
152158 for bucket in checkpoint. buckets . values ( ) {
153159 if bucket. is_in_priority ( priority) {
@@ -214,7 +220,7 @@ impl StorageAdapter {
214220 // partial completions.
215221 let update = self . db . prepare_v2 (
216222 "UPDATE ps_buckets SET count_since_last = 0, count_at_last = ? WHERE name = ?" ,
217- ) ?;
223+ ) . into_db_result ( self . db ) ?;
218224
219225 for bucket in checkpoint. buckets . values ( ) {
220226 if let Some ( count) = bucket. count {
0 commit comments