FluentKit 1.0.0 Alpha 2
Pre-release
Pre-release
New:
Model
has been combined withRow
and makes use of Swift 5.1's property wrappers:
final class Planet: Model {
@Field var id: Int?
@Field var name: String
@Parent var galaxy: Galaxy
init() { }
init(id: Int? = nil, name: String, galaxyID: Galaxy.ID) {
self.id = id
self.name = name
self.$galaxy.id = galaxyID
}
}
final class Galaxy: Model {
@Field var id: Int?
@Field var name: String
@Children(\.$galaxy) var planets: [Planet]
init() { }
init(id: Int? = nil, name: String) {
self.id = id
self.name = name
}
}
- Migrations are now required for all models and auto migrations have been temporarily disabled:
struct GalaxyMigration: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
return Galaxy.schema(on: database)
.field(\.$id, .int, .identifier(auto: true))
.field(\.$name, .string, .required)
.create()
}
func revert(on database: Database) -> EventLoopFuture<Void> {
return Galaxy.schema(on: database).delete()
}
}
struct PlanetMigration: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
return Planet.schema(on: database)
.field(\.$id, .int, .identifier(auto: true))
.field(\.$name, .string, .required)
.field("galaxy_id", .int, .required)
.create()
}
func revert(on database: Database) -> EventLoopFuture<Void> {
return Planet.schema(on: database).delete()
}
}