vapor / mysql-nio

🐬 Non-blocking, event-driven Swift client for MySQL.
MIT License
91 stars 26 forks source link

Allow MySQLConnection creation without specifying an event loop #99

Open gwynne opened 1 year ago

gwynne commented 1 year ago

[The equivalent of] cherry-picked from vapor/postgres-nio#388:

SwiftNIO has landed EventLoopGroup singletons in 2.58.0. See https://github.com/apple/swift-nio/pull/2471.

We should add an additional MySQLConnection connect method, that internally uses the existing one, but uses the NIO singleton:

extension MySQLConnection {
    static func connect(
        to socketAddress: SocketAddress,
        username: String,
        database: String,
        password: String? = nil,
        tlsConfiguration: TLSConfiguration? = .makeClientConfiguration(),
        serverHostname: String? = nil,
        logger: Logger = .init(label: "codes.vapor.mysql")
    ) -> EventLoopFuture<MySQLConnection> {
        Self.connect(
            to: socketAddress,
            username: username,
            password: password,
            tlsConfiguration: tlsConfiguration,
            serverHostname: serverHostname,
            on: MultiThreadedEventLoopGroup.singleton.any()
        )
    }
}