Skip to content

Commit ac03d7c

Browse files
authored
Actually support query logging (#326)
* Query logging now works as it's supposed to. Also update dependency minimums. * Use logging metadata for logging queries
1 parent dd21809 commit ac03d7c

File tree

3 files changed

+20
-10
lines changed

3 files changed

+20
-10
lines changed

Package.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ let package = Package(
1313
.library(name: "MySQLKit", targets: ["MySQLKit"]),
1414
],
1515
dependencies: [
16-
.package(url: "https://github.com/vapor/mysql-nio.git", from: "1.7.1"),
17-
.package(url: "https://github.com/vapor/sql-kit.git", from: "3.28.0"),
16+
.package(url: "https://github.com/vapor/mysql-nio.git", from: "1.7.2"),
17+
.package(url: "https://github.com/vapor/sql-kit.git", from: "3.29.3"),
1818
.package(url: "https://github.com/vapor/async-kit.git", from: "1.19.0"),
1919
.package(url: "https://github.com/apple/swift-crypto.git", "2.0.0" ..< "4.0.0"),
20-
.package(url: "https://github.com/apple/swift-nio.git", from: "2.64.0"),
20+
.package(url: "https://github.com/apple/swift-nio.git", from: "2.65.0"),
2121
.package(url: "https://github.com/apple/swift-nio-ssl.git", from: "2.26.0"),
2222
],
2323
targets: [
@@ -47,6 +47,4 @@ let package = Package(
4747
var swiftSettings: [SwiftSetting] { [
4848
.enableUpcomingFeature("ConciseMagicFile"),
4949
.enableUpcomingFeature("ForwardTrailingClosures"),
50-
.enableUpcomingFeature("DisableOutwardActorInference"),
51-
.enableExperimentalFeature("StrictConcurrency=complete"),
5250
] }

[email protected]

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ let package = Package(
1313
.library(name: "MySQLKit", targets: ["MySQLKit"]),
1414
],
1515
dependencies: [
16-
.package(url: "https://github.com/vapor/mysql-nio.git", from: "1.7.1"),
17-
.package(url: "https://github.com/vapor/sql-kit.git", from: "3.29.2"),
16+
.package(url: "https://github.com/vapor/mysql-nio.git", from: "1.7.2"),
17+
.package(url: "https://github.com/vapor/sql-kit.git", from: "3.29.3"),
1818
.package(url: "https://github.com/vapor/async-kit.git", from: "1.19.0"),
1919
.package(url: "https://github.com/apple/swift-crypto.git", "2.0.0" ..< "4.0.0"),
20-
.package(url: "https://github.com/apple/swift-nio.git", from: "2.64.0"),
20+
.package(url: "https://github.com/apple/swift-nio.git", from: "2.65.0"),
2121
.package(url: "https://github.com/apple/swift-nio-ssl.git", from: "2.26.0"),
2222
],
2323
targets: [

Sources/MySQLKit/MySQLDatabase+SQL.swift

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ extension MySQLDatabase {
1010
/// - Returns: An instance of `SQLDatabase` which accesses the same database as `self`.
1111
public func sql(
1212
encoder: MySQLDataEncoder = .init(),
13-
decoder: MySQLDataDecoder = .init()
13+
decoder: MySQLDataDecoder = .init(),
14+
queryLogLevel: Logger.Level? = .debug
1415
) -> any SQLDatabase {
15-
MySQLSQLDatabase(database: .init(value: self), encoder: encoder, decoder: decoder)
16+
MySQLSQLDatabase(database: .init(value: self), encoder: encoder, decoder: decoder, queryLogLevel: queryLogLevel)
1617
}
1718
}
1819

@@ -40,10 +41,17 @@ private struct MySQLSQLDatabase<D: MySQLDatabase>: SQLDatabase {
4041
// See `SQLDatabase.dialect`.
4142
var dialect: any SQLDialect { MySQLDialect() }
4243

44+
// See `SQLDatabase.queryLogLevel`.
45+
let queryLogLevel: Logger.Level?
46+
4347
// See `SQLDatabase.execute(sql:_:)`.
4448
func execute(sql query: any SQLExpression, _ onRow: @escaping @Sendable (any SQLRow) -> ()) -> EventLoopFuture<Void> {
4549
let (sql, binds) = self.serialize(query)
4650

51+
if let queryLogLevel = self.queryLogLevel {
52+
self.logger.log(level: queryLogLevel, "Executing query", metadata: ["sql": .string(sql), "binds": .array(binds.map { .string("\($0)") })])
53+
}
54+
4755
do {
4856
return try self.database.value.query(
4957
sql,
@@ -59,6 +67,10 @@ private struct MySQLSQLDatabase<D: MySQLDatabase>: SQLDatabase {
5967
func execute(sql query: any SQLExpression, _ onRow: @escaping @Sendable (any SQLRow) -> ()) async throws {
6068
let (sql, binds) = self.serialize(query)
6169

70+
if let queryLogLevel = self.queryLogLevel {
71+
self.logger.log(level: queryLogLevel, "Executing query", metadata: ["sql": .string(sql), "binds": .array(binds.map { .string("\($0)") })])
72+
}
73+
6274
return try await self.database.value.query(
6375
sql,
6476
binds.map { try self.encoder.encode($0) },

0 commit comments

Comments
 (0)