|
1 | 1 | import FluentSQL |
2 | 2 |
|
3 | | -extension FluentDatabaseID { |
4 | | - public static var psql: FluentDatabaseID { |
| 3 | +extension DatabaseID { |
| 4 | + public static var psql: DatabaseID { |
5 | 5 | return .init(string: "psql") |
6 | 6 | } |
7 | 7 | } |
8 | 8 |
|
9 | | -extension FluentDatabases { |
| 9 | +extension Databases { |
10 | 10 | public mutating func postgres( |
11 | | - config: PostgresDatabase.Config, |
| 11 | + config: PostgresConfig, |
12 | 12 | poolConfig: ConnectionPoolConfig = .init(), |
13 | | - as id: FluentDatabaseID = .psql, |
| 13 | + as id: DatabaseID = .psql, |
14 | 14 | isDefault: Bool = true |
15 | 15 | ) { |
16 | | - let driver = PostgresDriver(connectionPool: .init( |
17 | | - config: poolConfig, |
18 | | - source: .init(config: config, on: self.eventLoop) |
19 | | - )) |
20 | | - self.add(driver, as: id, isDefault: isDefault) |
| 16 | + let db = PostgresConnectionSource( |
| 17 | + config: config, |
| 18 | + on: self.eventLoop |
| 19 | + ) |
| 20 | + let pool = ConnectionPool(config: poolConfig, source: db) |
| 21 | + self.add(pool, as: id, isDefault: isDefault) |
21 | 22 | } |
22 | 23 | } |
23 | 24 |
|
24 | | -publicstructPostgresDriver:FluentDatabase { |
| 25 | +extensionConnectionPool:Databasewhere Source.Connection:SQLDatabase { |
25 | 26 | public var eventLoop: EventLoop { |
26 | | - return self.connectionPool.source.eventLoop |
| 27 | + return self.source.eventLoop |
27 | 28 | } |
28 | | - |
29 | | - public let connectionPool: ConnectionPool<PostgresDatabase> |
30 | | - |
31 | | - public init(connectionPool: ConnectionPool<PostgresDatabase>) { |
32 | | - self.connectionPool = connectionPool |
33 | | - } |
34 | | - |
35 | | - public func execute(_ query: FluentQuery, _ onOutput: @escaping (FluentOutput) throws -> ()) -> EventLoopFuture<Void> { |
36 | | - return connectionPool.withConnection { connection in |
37 | | - var sql = SQLQueryConverter().convert(query) |
38 | | - switch query.action { |
39 | | - case .create: |
40 | | - sql = PostgresReturning(sql) |
41 | | - default: break |
42 | | - } |
43 | | - return connection.sqlQuery(sql) { row in |
44 | | - try onOutput(row.fluentOutput) |
45 | | - } |
| 29 | +} |
| 30 | +extension PostgresConnection: Database { } |
| 31 | + |
| 32 | +extension Database where Self: SQLDatabase { |
| 33 | + public func execute(_ query: DatabaseQuery, _ onOutput: @escaping (DatabaseOutput) throws -> ()) -> EventLoopFuture<Void> { |
| 34 | + var sql = SQLQueryConverter().convert(query) |
| 35 | + switch query.action { |
| 36 | + case .create: |
| 37 | + sql = PostgresReturning(sql) |
| 38 | + default: break |
| 39 | + } |
| 40 | + return self.sqlQuery(sql) { row in |
| 41 | + try onOutput(row.fluentOutput) |
46 | 42 | } |
47 | 43 | } |
48 | 44 |
|
49 | | - public func execute(_ schema: FluentSchema) -> EventLoopFuture<Void> { |
50 | | - return self.connectionPool.withConnection { connection in |
51 | | - return connection.sqlQuery(SQLSchemaConverter().convert(schema)) { row in |
52 | | - fatalError("unexpected output") |
53 | | - } |
| 45 | + public func execute(_ schema: DatabaseSchema) -> EventLoopFuture<Void> { |
| 46 | + return self.sqlQuery(SQLSchemaConverter().convert(schema)) { row in |
| 47 | + fatalError("unexpected output") |
54 | 48 | } |
55 | 49 | } |
56 | 50 |
|
|
0 commit comments