Skip to content

Commit 038b40b

Browse files
committed
wip
1 parent b38a1dc commit 038b40b

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

Sources/_StructuredQueriesSQLite/DatabaseFunction.swift

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,12 @@ extension ScalarDatabaseFunction {
1010
SQLITE_UTF8 | (isDeterministic ? SQLITE_DETERMINISTIC : 0),
1111
box,
1212
{ context, argumentCount, arguments in
13-
do {
14-
let box = Unmanaged<ScalarDatabaseFunctionBox>
15-
.fromOpaque(sqlite3_user_data(context))
16-
.takeUnretainedValue()
17-
let arguments = try [QueryBinding](argumentCount: argumentCount, arguments: arguments)
18-
let output = box.function.invoke(arguments)
19-
try output.result(db: context)
20-
} catch {
21-
sqlite3_result_error(context, error.localizedDescription, -1)
22-
}
13+
Unmanaged<ScalarDatabaseFunctionBox>
14+
.fromOpaque(sqlite3_user_data(context))
15+
.takeUnretainedValue()
16+
.function
17+
.invoke([QueryBinding](argumentCount: argumentCount, arguments: arguments))
18+
.result(db: context)
2319
},
2420
nil,
2521
nil,
@@ -39,9 +35,9 @@ private final class ScalarDatabaseFunctionBox {
3935
}
4036

4137
extension [QueryBinding] {
42-
fileprivate init(argumentCount: Int32, arguments: UnsafeMutablePointer<OpaquePointer?>?) throws {
43-
self = try (0..<argumentCount).map { idx in
44-
let value = arguments?[Int(idx)]
38+
fileprivate init(argumentCount: Int32, arguments: UnsafeMutablePointer<OpaquePointer?>?) {
39+
self = (0..<argumentCount).map { offset in
40+
let value = arguments?[Int(offset)]
4541
switch sqlite3_value_type(value) {
4642
case SQLITE_BLOB:
4743
if let blob = sqlite3_value_blob(value) {
@@ -60,7 +56,7 @@ extension [QueryBinding] {
6056
case SQLITE_TEXT:
6157
return .text(String(cString: UnsafePointer(sqlite3_value_text(value))))
6258
default:
63-
throw UnknownType()
59+
return .invalid(UnknownType())
6460
}
6561
}
6662
}
@@ -69,7 +65,7 @@ extension [QueryBinding] {
6965
}
7066

7167
extension QueryBinding {
72-
fileprivate func result(db: OpaquePointer?) throws {
68+
fileprivate func result(db: OpaquePointer?) {
7369
switch self {
7470
case .blob(let value):
7571
sqlite3_result_blob(db, Array(value), Int32(value.count), SQLITE_TRANSIENT)
@@ -86,7 +82,7 @@ extension QueryBinding {
8682
case .uuid(let value):
8783
sqlite3_result_text(db, value.uuidString.lowercased(), -1, SQLITE_TRANSIENT)
8884
case .invalid(let error):
89-
throw error.underlyingError
85+
sqlite3_result_error(db, error.localizedDescription, -1)
9086
}
9187
}
9288
}

0 commit comments

Comments
 (0)