Skip to content

Commit da340d8

Browse files
committed
latest driver updates
1 parent 88f2b00 commit da340d8

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

Sources/FluentPostgresDriver/Postgres+Fluent.swift

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,26 @@ extension ConnectionPool: Database where Source.Connection: Database {
4949

5050
extension PostgresError: DatabaseError { }
5151

52+
struct PostgresConverterDelegate: SQLConverterDelegate {
53+
func customDataType(_ dataType: DatabaseSchema.DataType) -> SQLExpression? {
54+
switch dataType {
55+
case .uuid: return SQLRaw("UUID")
56+
default: return nil
57+
}
58+
}
59+
60+
func nestedFieldExpression(_ column: String, _ path: [String]) -> SQLExpression {
61+
return SQLRaw("\(column)->>'\(path[0])'")
62+
}
63+
}
64+
5265
extension PostgresConnection: Database {
5366
public func transaction<T>(_ closure: @escaping (Database) -> EventLoopFuture<T>) -> EventLoopFuture<T> {
5467
return closure(self)
5568
}
5669

5770
public func execute(_ query: DatabaseQuery, _ onOutput: @escaping (DatabaseOutput) throws -> ()) -> EventLoopFuture<Void> {
58-
var sql = SQLQueryConverter().convert(query)
71+
var sql = SQLQueryConverter(delegate: PostgresConverterDelegate()).convert(query)
5972
switch query.action {
6073
case .create:
6174
sql = PostgresReturning(sql)
@@ -67,7 +80,7 @@ extension PostgresConnection: Database {
6780
}
6881

6982
public func execute(_ schema: DatabaseSchema) -> EventLoopFuture<Void> {
70-
return self.sqlQuery(SQLSchemaConverter().convert(schema)) { row in
83+
return self.sqlQuery(SQLSchemaConverter(delegate: PostgresConverterDelegate()).convert(schema)) { row in
7184
fatalError("unexpected output")
7285
}
7386
}
@@ -86,6 +99,6 @@ private struct PostgresReturning: SQLExpression {
8699

87100
func serialize(to serializer: inout SQLSerializer) {
88101
self.base.serialize(to: &serializer)
89-
serializer.write(" RETURNING *")
102+
serializer.write(#" RETURNING id as "fluentID""#)
90103
}
91104
}

0 commit comments

Comments
 (0)