Skip to content

Fluent 3.0.0 RC 3

Pre-release
Pre-release
Compare
Choose a tag to compare
@tanner0101 tanner0101 released this 15 Jun 03:38
· 245 commits to main since this release

New:

  • Generic database queries: QueryBuilder and SchemaBuilder now store query types generic to each specific database. This means you can now do much of what required raw SQL queries with type-safe Swift!
  • Timestampable & SoftDeletable are now part of Model: This allows for users to opt in to exactly which timestamps they would like to use. It also removes a lot of type-erasing and casting that needed to happen internally. New lifecycle hooks have been added for soft-deletion as well.
  • Generic transactions + convenience methods: Transactions now allow for a generic return type. Use the new convenience method on DatabaseConnectable to perform a transaction.
  • Data and KeyPath conversion failures are now assertions. This makes working with Fluent a lot easier (huge reduction in try statements) for what really should be develop-time errors.
  • Aggregates are now generic.
  • New update(data:) and create(data:) methods on QueryBuilder allow for easy batch updates.
  • Joins now support joining additional models to previously joined tables.

Fixed:

  • Tons of bug fixes throughout Fluent and all of its drivers.

Breaking changes:

  • Model entity now defaults to the model's type name. It no longer attempts to create a lowercased, pluralized string. Implement static var entity: String on your model if you want to define a custom entity (#492).
  • Timestampable and SoftDeletable key paths must now be optional. Not-implementing these key paths (or returning nil) is equivalent to not conforming to the protocol.
  • join methods have been simplified: join(\Pet.userID, to: \User.id)
  • Please report any breaking changes you notice not listed--they may be unintentional