@@ -100,6 +100,26 @@ class FluentPostgreSQLTests: XCTestCase {
100
100
}
101
101
}
102
102
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
+
103
123
static let allTests = [
104
124
( " testSchema " , testSchema) ,
105
125
( " testModels " , testModels) ,
@@ -117,6 +137,45 @@ class FluentPostgreSQLTests: XCTestCase {
117
137
]
118
138
}
119
139
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
+
120
179
struct Pet : PostgreSQLJSONType , Codable {
121
180
var name : String
122
181
}
0 commit comments