@@ -245,6 +245,47 @@ final class FluentPostgresDriverTests: XCTestCase {
245
245
try await db. schema ( Seq . schema) . delete ( )
246
246
}
247
247
248
+ func testSwift6DatePrecisionBug( ) async throws {
249
+ final class Event : Model , @unchecked Sendable {
250
+ static let schema = " orgs "
251
+
252
+ @ID ( custom: " id " , generatedBy: . database) var id : Int ?
253
+ @Field ( key: " date " ) var date : Date
254
+
255
+ init ( ) { }
256
+ }
257
+
258
+ struct CreateEvent : AsyncMigration {
259
+ func prepare( on database: any Database ) async throws {
260
+ try await database. schema ( " orgs " )
261
+ . field ( " id " , . int, . identifier( auto: true ) )
262
+ . field ( " date " , . date, . required)
263
+ . create ( )
264
+ }
265
+
266
+ func revert( on database: any Database ) async throws {
267
+ try await database. schema ( " orgs " ) . delete ( )
268
+ }
269
+ }
270
+
271
+ try await CreateEvent ( ) . prepare ( on: self . db)
272
+ do {
273
+ let date = Date ( )
274
+ let new = Event ( )
275
+ XCTAssertEqual ( date, date)
276
+ new. date = date
277
+ XCTAssertEqual ( new. date, date)
278
+ try await new. save ( on: self . db)
279
+ XCTAssertEqual ( new. date, date)
280
+ let fetched = try await Event . query ( on: self . db) . first ( ) !
281
+ XCTAssertEqual ( fetched. date, date)
282
+ } catch {
283
+ try ? await CreateEvent ( ) . revert ( on: self . db)
284
+ throw error
285
+ }
286
+ try await CreateEvent ( ) . revert ( on: self . db)
287
+ }
288
+
248
289
249
290
var benchmarker : FluentBenchmarker { . init( databases: self . dbs) }
250
291
var eventLoopGroup : any EventLoopGroup { MultiThreadedEventLoopGroup . singleton }
0 commit comments