mirror of
https://github.com/swift-server/RediStack.git
synced 2026-06-02 07:37:33 +00:00
36 lines
1.0 KiB
Swift
36 lines
1.0 KiB
Swift
import Foundation
|
|
import NIORedis
|
|
|
|
public final class RedisConnection {
|
|
let _driverConnection: NIORedis.RedisConnection
|
|
|
|
private let queue: DispatchQueue
|
|
|
|
deinit { _driverConnection.close() }
|
|
|
|
init(driver: NIORedis.RedisConnection, callbackQueue: DispatchQueue) {
|
|
self._driverConnection = driver
|
|
self.queue = callbackQueue
|
|
}
|
|
|
|
/// Creates a `RedisPipeline` for executing a batch of commands.
|
|
public func makePipeline(callbackQueue: DispatchQueue? = nil) -> RedisPipeline {
|
|
return .init(connection: self, callbackQueue: callbackQueue ?? queue)
|
|
}
|
|
|
|
public func get(
|
|
_ key: String,
|
|
_ callback: @escaping (Result<String?, Error>
|
|
) -> Void) {
|
|
// TODO: Make this a generic method to avoid copy/paste
|
|
_driverConnection.get(key)
|
|
.map { result in
|
|
self.queue.async { callback(.success(result)) }
|
|
}
|
|
.whenFailure { error in
|
|
self.queue.async { callback(.failure(error)) }
|
|
}
|
|
}
|
|
}
|
|
|