Skip to content

Commit 5a29af8

Browse files
authored
Use rethrows for Database.inTransaction() instead of throws (#18)
1 parent 49f26ed commit 5a29af8

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

Sources/SQLite/Database.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public final class Database {
6262
}
6363
}
6464

65-
public func inTransaction<T>(_ block: (Database) throws -> T) throws -> T {
65+
public func inTransaction<T>(_ block: (Database) throws -> T) rethrows -> T {
6666
return try sync {
6767
_transactionCount += 1
6868
defer { _transactionCount -= 1 }

Tests/SQLiteTests/DatabaseTests.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,21 @@ class DatabaseTests: XCTestCase {
264264
XCTAssertEqual(row, one)
265265
}
266266

267+
func testReturnValueFromInTransactionWithoutTry() throws {
268+
let one: SQLiteArguments = [
269+
"id": .integer(1), "float": .double(1.23), "string": .text("123"), "data": .data(_textData)
270+
]
271+
272+
XCTAssertNoThrow(try database.execute(raw: _createTableWithFloatStringData))
273+
XCTAssertNoThrow(try database.write(_insertIDFloatStringAndData, arguments: one))
274+
275+
let row = database.inTransaction { db in
276+
return try? db.read(_selectWhereID, arguments: ["id": .integer(1)]).first
277+
}
278+
279+
XCTAssertEqual(row, one)
280+
}
281+
267282
func testInvalidInsertOfBlobInTransactionRollsBack() throws {
268283
let one: SQLiteArguments = ["id": .integer(1), "data": .data(_textData)]
269284
let two: SQLiteArguments = ["id": .integer(2)]
@@ -321,6 +336,8 @@ class DatabaseTests: XCTestCase {
321336
("testInsertAndFetchValidJSON", testInsertAndFetchValidJSON),
322337
("testInsertInvalidJSON", testInsertInvalidJSON),
323338
("testInsertFloatStringAndDataInTransaction", testInsertFloatStringAndDataInTransaction),
339+
("testReturnValueFromInTransaction", testReturnValueFromInTransaction),
340+
("testReturnValueFromInTransactionWithoutTry", testReturnValueFromInTransactionWithoutTry),
324341
("testInvalidInsertOfBlobInTransactionRollsBack", testInvalidInsertOfBlobInTransactionRollsBack),
325342
("testHasOpenTransactions", testHasOpenTransactions),
326343
]

0 commit comments

Comments
 (0)