@@ -100,6 +100,26 @@ class FluentPostgreSQLTests: XCTestCase {
100100 }
101101 }
102102
103+ func testDefaultValue( ) throws {
104+ database. enableLogging ( using: DatabaseLogger ( handler: { print ( $0) } ) )
105+ let conn = try database. makeConnection ( on: eventLoop) . await ( on: eventLoop)
106+ try ? DefaultTest . revert ( on: conn) . await ( on: eventLoop)
107+ try DefaultTest . prepare ( on: conn) . await ( on: eventLoop)
108+ let test = DefaultTest ( )
109+ // _ = try test.save(on: conn).await(on: eventLoop)
110+ let builder = test. query ( on: conn)
111+ builder. query. data = [ " foo " : " bar " ] // there _must_ be a better way
112+ builder. query. action = . create
113+ try builder. execute ( ) . await ( on: eventLoop)
114+ if let fetched = try DefaultTest . query ( on: conn) . first ( ) . await ( on: eventLoop) {
115+ XCTAssertNotNil ( fetched. date? . value)
116+ } else {
117+ XCTFail ( )
118+ }
119+ try DefaultTest . revert ( on: conn) . await ( on: eventLoop)
120+ conn. close ( )
121+ }
122+
103123 static let allTests = [
104124 ( " testSchema " , testSchema) ,
105125 ( " testModels " , testModels) ,
@@ -117,6 +137,45 @@ class FluentPostgreSQLTests: XCTestCase {
117137 ]
118138}
119139
140+ struct PostgreSQLDate : PostgreSQLType , Codable {
141+ static var postgreSQLDataType : PostgreSQLDataType {
142+ return . timestamp
143+ }
144+
145+ static var postgreSQLDataArrayType : PostgreSQLDataType {
146+ return . _timestamp
147+ }
148+
149+ static var postgreSQLColumn : PostgreSQLColumn {
150+ return PostgreSQLColumn ( type: . timestamp, size: nil , default: " CURRENT_TIMESTAMP " )
151+ }
152+
153+ var value : Date ?
154+
155+ init ( _ value: Date ? = nil ) {
156+ self . value = value
157+ }
158+
159+ static func convertFromPostgreSQLData( _ data: PostgreSQLData ) throws -> PostgreSQLDate {
160+ return try PostgreSQLDate ( Date . convertFromPostgreSQLData ( data) )
161+ }
162+
163+ func convertToPostgreSQLData( ) throws -> PostgreSQLData {
164+ return try value? . convertToPostgreSQLData ( ) ?? PostgreSQLData ( type: . timestamp, format: . binary, data: nil )
165+ }
166+ }
167+
168+ struct DefaultTest : PostgreSQLModel , Migration {
169+ var id : Int ?
170+ var date : PostgreSQLDate ?
171+ var foo : String
172+ init ( ) {
173+ self . id = nil
174+ self . date = nil
175+ self . foo = " bar' "
176+ }
177+ }
178+
120179struct Pet : PostgreSQLJSONType , Codable {
121180 var name : String
122181}
0 commit comments