forked from vapor/postgres-nio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPostgresDatabase.swift
35 lines (29 loc) · 1.04 KB
/
PostgresDatabase.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public protocol PostgresDatabase {
var logger: Logger { get }
var eventLoop: EventLoop { get }
func send(
_ request: PostgresRequest,
logger: Logger
) -> EventLoopFuture<Void>
func withConnection<T>(_ closure: @escaping (PostgresConnection) -> EventLoopFuture<T>) -> EventLoopFuture<T>
}
extension PostgresDatabase {
public func logging(to logger: Logger) -> PostgresDatabase {
_PostgresDatabaseCustomLogger(database: self, logger: logger)
}
}
private struct _PostgresDatabaseCustomLogger {
let database: PostgresDatabase
let logger: Logger
}
extension _PostgresDatabaseCustomLogger: PostgresDatabase {
var eventLoop: EventLoop {
self.database.eventLoop
}
func send(_ request: PostgresRequest, logger: Logger) -> EventLoopFuture<Void> {
self.database.send(request, logger: logger)
}
func withConnection<T>(_ closure: @escaping (PostgresConnection) -> EventLoopFuture<T>) -> EventLoopFuture<T> {
self.database.withConnection(closure)
}
}