Skip to content

Commit ab1f7e5

Browse files
committed
fix: restore nil param handling, remove unused executeQuery
1 parent cf3e62a commit ab1f7e5

2 files changed

Lines changed: 4 additions & 26 deletions

File tree

Plugins/CloudflareD1DriverPlugin/CloudflareD1PluginDriver.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ final class CloudflareD1PluginDriver: PluginDatabaseDriver, @unchecked Sendable
139139

140140
let startTime = Date()
141141
let trimmed = query.trimmingCharacters(in: .whitespacesAndNewlines)
142-
let payload = try await client.executeRaw(sql: trimmed, params: parameters)
142+
let anyParams: [Any?] = parameters.map { $0 as Any? }
143+
let payload = try await client.executeRaw(sql: trimmed, params: anyParams)
143144
let executionTime = Date().timeIntervalSince(startTime)
144145
return mapRawResult(payload, executionTime: executionTime)
145146
}

Plugins/CloudflareD1DriverPlugin/D1HttpClient.swift

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,6 @@ struct D1RawResults: Decodable {
4646
}
4747
}
4848

49-
struct D1QueryResultPayload: Decodable {
50-
let results: [[String: D1Value]]?
51-
let meta: D1QueryMeta?
52-
let success: Bool
53-
54-
private enum CodingKeys: String, CodingKey {
55-
case results, meta, success
56-
}
57-
}
5849

5950
struct D1QueryMeta: Decodable {
6051
let duration: Double?
@@ -90,6 +81,8 @@ struct D1ListResponse: Decodable {
9081
}
9182
}
9283

84+
// No .bool case: D1/SQLite stores booleans as integers (0/1),
85+
// and Foundation's JSONDecoder decodes JSON true/false as Int when Int is tried first.
9386
enum D1Value: Decodable {
9487
case string(String)
9588
case int(Int)
@@ -207,22 +200,6 @@ final class D1HttpClient: @unchecked Sendable {
207200
return first
208201
}
209202

210-
func executeQuery(sql: String, params: [Any?]? = nil) async throws -> D1QueryResultPayload {
211-
let dbId = databaseId
212-
let url = try baseURL(databaseId: dbId).appendingPathComponent("query")
213-
let body = try buildQueryBody(sql: sql, params: params)
214-
let data = try await performRequest(url: url, method: "POST", body: body)
215-
216-
let envelope = try JSONDecoder().decode(D1ApiResponse<[D1QueryResultPayload]>.self, from: data)
217-
try checkApiSuccess(envelope)
218-
219-
guard let results = envelope.result, let first = results.first else {
220-
throw D1HttpError(message: String(localized: "Empty response from Cloudflare D1"))
221-
}
222-
223-
return first
224-
}
225-
226203
func getDatabaseDetails() async throws -> D1DatabaseInfo {
227204
let dbId = databaseId
228205
let url = try baseURL(databaseId: dbId)

0 commit comments

Comments
 (0)