@@ -125,7 +125,7 @@ impl SqliteStore {
125125#[ allow( clippy:: significant_drop_tightening) ]
126126impl EmailStorage for SqliteStore {
127127 fn push ( & self , email : MailRecord ) {
128- let conn = self . conn . lock ( ) . unwrap ( ) ;
128+ let conn = self . conn . lock ( ) . expect ( "lock poisoned" ) ;
129129
130130 let to_json = serde_json:: to_string ( & email. to ) . unwrap_or_default ( ) ;
131131 let headers_json = serde_json:: to_string ( & email. headers ) . unwrap_or_default ( ) ;
@@ -170,10 +170,12 @@ impl EmailStorage for SqliteStore {
170170 }
171171
172172 fn get_all ( & self ) -> Vec < MailRecord > {
173- let conn = self . conn . lock ( ) . unwrap ( ) ;
174- let mut stmt = conn
173+ let conn = self . conn . lock ( ) . expect ( "lock poisoned" ) ;
174+ let Ok ( mut stmt) = conn
175175 . prepare ( "SELECT id, from_addr, to_addrs, subject, text_body, html_body, date, headers, raw FROM emails ORDER BY created_at DESC" )
176- . unwrap ( ) ;
176+ else {
177+ return Vec :: new ( ) ;
178+ } ;
177179
178180 let mut records: Vec < MailRecord > = stmt
179181 . query_map ( [ ] , Self :: row_to_record)
@@ -188,7 +190,7 @@ impl EmailStorage for SqliteStore {
188190 }
189191
190192 fn get_by_id ( & self , id : & str ) -> Option < MailRecord > {
191- let conn = self . conn . lock ( ) . unwrap ( ) ;
193+ let conn = self . conn . lock ( ) . expect ( "lock poisoned" ) ;
192194 let mut stmt = conn
193195 . prepare ( "SELECT id, from_addr, to_addrs, subject, text_body, html_body, date, headers, raw FROM emails WHERE id = ?" )
194196 . ok ( ) ?;
@@ -199,7 +201,7 @@ impl EmailStorage for SqliteStore {
199201 }
200202
201203 fn query ( & self , query : & EmailQuery ) -> Vec < MailRecord > {
202- let conn = self . conn . lock ( ) . unwrap ( ) ;
204+ let conn = self . conn . lock ( ) . expect ( "lock poisoned" ) ;
203205
204206 let mut sql = String :: from (
205207 "SELECT id, from_addr, to_addrs, subject, text_body, html_body, date, headers, raw FROM emails WHERE 1=1"
@@ -248,7 +250,7 @@ impl EmailStorage for SqliteStore {
248250 }
249251
250252 fn get_attachment ( & self , email_id : & str , filename : & str ) -> Option < Attachment > {
251- let conn = self . conn . lock ( ) . unwrap ( ) ;
253+ let conn = self . conn . lock ( ) . expect ( "lock poisoned" ) ;
252254 let mut stmt = conn
253255 . prepare ( "SELECT filename, content_type, content_id, data, size FROM attachments WHERE email_id = ? AND filename = ?" )
254256 . ok ( ) ?;
@@ -266,7 +268,7 @@ impl EmailStorage for SqliteStore {
266268 }
267269
268270 fn get_attachment_by_cid ( & self , email_id : & str , cid : & str ) -> Option < Attachment > {
269- let conn = self . conn . lock ( ) . unwrap ( ) ;
271+ let conn = self . conn . lock ( ) . expect ( "lock poisoned" ) ;
270272 let mut stmt = conn
271273 . prepare ( "SELECT filename, content_type, content_id, data, size FROM attachments WHERE email_id = ? AND content_id = ?" )
272274 . ok ( ) ?;
@@ -284,14 +286,14 @@ impl EmailStorage for SqliteStore {
284286 }
285287
286288 fn clear ( & self ) {
287- let conn = self . conn . lock ( ) . unwrap ( ) ;
289+ let conn = self . conn . lock ( ) . expect ( "lock poisoned" ) ;
288290 let _ = conn. execute ( "DELETE FROM emails" , [ ] ) ;
289291 drop ( conn) ;
290292 let _ = self . notify . send ( ( ) ) ;
291293 }
292294
293295 fn remove ( & self , id : & str ) -> bool {
294- let conn = self . conn . lock ( ) . unwrap ( ) ;
296+ let conn = self . conn . lock ( ) . expect ( "lock poisoned" ) ;
295297 let result = conn. execute ( "DELETE FROM emails WHERE id = ?" , params ! [ id] ) ;
296298 let removed = result. map ( |n| n > 0 ) . unwrap_or ( false ) ;
297299 drop ( conn) ;
@@ -302,7 +304,7 @@ impl EmailStorage for SqliteStore {
302304 }
303305
304306 fn close ( & self ) {
305- let conn = self . conn . lock ( ) . unwrap ( ) ;
307+ let conn = self . conn . lock ( ) . expect ( "lock poisoned" ) ;
306308 // Checkpoint WAL to ensure all data is written to the main database file
307309 let _ = conn. execute_batch ( "PRAGMA wal_checkpoint(TRUNCATE);" ) ;
308310 tracing:: info!( "SQLite database checkpointed and ready for shutdown" ) ;
0 commit comments