diff --git a/fluent/fixtures b/fluent/fixtures new file mode 100644 index 00000000..d29af581 --- /dev/null +++ b/fluent/fixtures @@ -0,0 +1,40 @@ +--- +currentMenu: fluent-fixtures +--- + +# Fixtures +Sometimes, you may need to prepopulate your database with data. For exemples, you might need insert in your table 'Users' an admin account or a test account. + + +In a separate file (Database+Fixture.swift): +```swift +extension Database { + func insertFixtures(_ data: S) throws where S.Iterator.Element == T { + let context = DatabaseContext(self) + try data.forEach { model in + let query = Query(self) + query.action = .create + query.data = try model.makeNode(context: context) + try driver.query(query) + } + } +} +``` + +In your model User.swift file +```swift +static func prepare(_ database: Database) throws { + try database.create("users") { users in + users.id() + users.string("email") + users.string("password") + } + let seedData: [AppUser] = [ + try User(email: "admin@admin.com", rawPassword: "Def4ultPassword?!"), + try User(email: "test@test.com", rawPassword: "Def4ultPassword?!") + ] + + try database.insertFixtures(seedData) + } + ``` +