@@ -78,9 +78,16 @@ impl KVStore for SqliteStore {
78
78
} ,
79
79
|row| row. get ( 0 ) ,
80
80
)
81
- . map_err ( |_| {
82
- let msg = format ! ( "Failed to read from key: {}/{}" , namespace, key) ;
83
- std:: io:: Error :: new ( std:: io:: ErrorKind :: NotFound , msg)
81
+ . map_err ( |e| match e {
82
+ rusqlite:: Error :: QueryReturnedNoRows => {
83
+ let msg =
84
+ format ! ( "Failed to read as key could not be found: {}/{}" , namespace, key) ;
85
+ std:: io:: Error :: new ( std:: io:: ErrorKind :: NotFound , msg)
86
+ }
87
+ e => {
88
+ let msg = format ! ( "Failed to read from key {}/{}: {}" , namespace, key, e) ;
89
+ std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
90
+ }
84
91
} ) ?;
85
92
Ok ( Cursor :: new ( res) )
86
93
}
@@ -102,8 +109,8 @@ impl KVStore for SqliteStore {
102
109
":value" : buf,
103
110
} ,
104
111
)
105
- . map_err ( |_ | {
106
- let msg = format ! ( "Failed to write to key: {}/{}" , namespace, key) ;
112
+ . map_err ( |e | {
113
+ let msg = format ! ( "Failed to write to key {}/{}: {} " , namespace, key, e ) ;
107
114
std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
108
115
} ) ?;
109
116
Ok ( ( ) )
@@ -122,8 +129,8 @@ impl KVStore for SqliteStore {
122
129
":key" : key,
123
130
} ,
124
131
)
125
- . map_err ( |_ | {
126
- let msg = format ! ( "Failed to delete key: {}/{}" , namespace, key) ;
132
+ . map_err ( |e | {
133
+ let msg = format ! ( "Failed to delete key {}/{}: {} " , namespace, key, e ) ;
127
134
std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
128
135
} ) ?;
129
136
@@ -136,21 +143,24 @@ impl KVStore for SqliteStore {
136
143
let locked_conn = self . connection . lock ( ) . unwrap ( ) ;
137
144
138
145
let sql = format ! ( "SELECT key FROM {} WHERE namespace=:namespace" , KV_TABLE_NAME ) ;
139
- let mut stmt = locked_conn. prepare ( & sql) . map_err ( |_| {
140
- std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , "Failed to prepare statement" )
146
+ let mut stmt = locked_conn. prepare ( & sql) . map_err ( |e| {
147
+ let msg = format ! ( "Failed to prepare statement: {}" , e) ;
148
+ std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
141
149
} ) ?;
142
150
143
151
let mut keys = Vec :: new ( ) ;
144
152
145
153
let rows_iter = stmt
146
154
. query_map ( named_params ! { ":namespace" : namespace, } , |row| row. get ( 0 ) )
147
- . map_err ( |_| {
148
- std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , "Failed to retrieve queried rows" )
155
+ . map_err ( |e| {
156
+ let msg = format ! ( "Failed to retrieve queried rows: {}" , e) ;
157
+ std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
149
158
} ) ?;
150
159
151
160
for k in rows_iter {
152
- keys. push ( k. map_err ( |_| {
153
- std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , "Failed to retrieve queried rows" )
161
+ keys. push ( k. map_err ( |e| {
162
+ let msg = format ! ( "Failed to retrieve queried rows: {}" , e) ;
163
+ std:: io:: Error :: new ( std:: io:: ErrorKind :: Other , msg)
154
164
} ) ?) ;
155
165
}
156
166
0 commit comments