@@ -39,8 +39,9 @@ public final class ApolloSQLiteDatabase: SQLiteDatabase {
39
39
40
40
private func openConnection( ) throws {
41
41
let flags = SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE | SQLITE_OPEN_FULLMUTEX | SQLITE_OPEN_URI
42
- if sqlite3_open_v2 ( dbURL. path, & db, flags, nil ) != SQLITE_OK {
43
- throw SQLiteError . open ( path: dbURL. path)
42
+ let result = sqlite3_open_v2 ( dbURL. path, & db, flags, nil )
43
+ if result != SQLITE_OK {
44
+ throw SQLiteError . open ( path: dbURL. path, resultCode: result)
44
45
}
45
46
}
46
47
@@ -56,15 +57,16 @@ public final class ApolloSQLiteDatabase: SQLiteDatabase {
56
57
private func exec( _ sql: String , errorMessage: @autoclosure ( ) -> String ) throws -> Int32 {
57
58
let result = sqlite3_exec ( db, sql, nil , nil , nil )
58
59
if result != SQLITE_OK {
59
- throw SQLiteError . execution ( message: " \( errorMessage ( ) ) : \( sqliteErrorMessage ( ) ) " )
60
+ throw SQLiteError . execution ( message: " \( errorMessage ( ) ) : \( sqliteErrorMessage ( ) ) " , resultCode : result )
60
61
}
61
62
return result
62
63
}
63
64
64
65
private func prepareStatement( _ sql: String , errorMessage: @autoclosure ( ) -> String ) throws -> OpaquePointer ? {
65
66
var stmt : OpaquePointer ?
66
- if sqlite3_prepare_v2 ( db, sql, - 1 , & stmt, nil ) != SQLITE_OK {
67
- throw SQLiteError . prepare ( message: " \( errorMessage ( ) ) : \( sqliteErrorMessage ( ) ) " )
67
+ let result = sqlite3_prepare_v2 ( db, sql, - 1 , & stmt, nil )
68
+ if result != SQLITE_OK {
69
+ throw SQLiteError . prepare ( message: " \( errorMessage ( ) ) : \( sqliteErrorMessage ( ) ) " , resultCode: result)
68
70
}
69
71
return stmt
70
72
}
@@ -118,7 +120,7 @@ public final class ApolloSQLiteDatabase: SQLiteDatabase {
118
120
rows. append ( DatabaseRow ( cacheKey: key, storedInfo: record) )
119
121
} else if result != SQLITE_DONE {
120
122
let errorMsg = String ( cString: sqlite3_errmsg ( db) )
121
- throw SQLiteError . step ( message: " Failed to step raw row select: \( errorMsg) " )
123
+ throw SQLiteError . step ( message: " Failed to step raw row select: \( errorMsg) " , resultCode : result )
122
124
}
123
125
} while result != SQLITE_DONE
124
126
@@ -149,10 +151,11 @@ public final class ApolloSQLiteDatabase: SQLiteDatabase {
149
151
for (key, record) in records {
150
152
sqlite3_bind_text ( stmt, 1 , key, - 1 , SQLITE_TRANSIENT)
151
153
sqlite3_bind_text ( stmt, 2 , record, - 1 , SQLITE_TRANSIENT)
152
-
153
- if sqlite3_step ( stmt) != SQLITE_DONE {
154
+
155
+ let result = sqlite3_step ( stmt)
156
+ if result != SQLITE_DONE {
154
157
rollbackTransaction ( )
155
- throw SQLiteError . step ( message: " Insert/update failed: \( sqliteErrorMessage ( ) ) " )
158
+ throw SQLiteError . step ( message: " Insert/update failed: \( sqliteErrorMessage ( ) ) " , resultCode : result )
156
159
}
157
160
158
161
sqlite3_reset ( stmt)
@@ -175,8 +178,9 @@ public final class ApolloSQLiteDatabase: SQLiteDatabase {
175
178
defer { sqlite3_finalize ( stmt) }
176
179
177
180
sqlite3_bind_text ( stmt, 1 , cacheKey, - 1 , SQLITE_TRANSIENT)
178
- if sqlite3_step ( stmt) != SQLITE_DONE {
179
- throw SQLiteError . step ( message: " Delete failed: \( sqliteErrorMessage ( ) ) " )
181
+ let result = sqlite3_step ( stmt)
182
+ if result != SQLITE_DONE {
183
+ throw SQLiteError . step ( message: " Delete failed: \( sqliteErrorMessage ( ) ) " , resultCode: result)
180
184
}
181
185
}
182
186
}
@@ -191,8 +195,9 @@ public final class ApolloSQLiteDatabase: SQLiteDatabase {
191
195
defer { sqlite3_finalize ( stmt) }
192
196
193
197
sqlite3_bind_text ( stmt, 1 , wildcardPattern, - 1 , SQLITE_TRANSIENT)
194
- if sqlite3_step ( stmt) != SQLITE_DONE {
195
- throw SQLiteError . step ( message: " Pattern delete failed: \( sqliteErrorMessage ( ) ) " )
198
+ let result = sqlite3_step ( stmt)
199
+ if result != SQLITE_DONE {
200
+ throw SQLiteError . step ( message: " Pattern delete failed: \( sqliteErrorMessage ( ) ) " , resultCode: result)
196
201
}
197
202
}
198
203
}
0 commit comments