Pro
Seeding
Seeding
Seeding means populating the database with records. We do this in development to show what the web app looks like with data.
We do this in one script file: seeds.exs
seeds.exs
aliasPetalPro.Accounts.User
aliasPetalPro.Accounts.UserSeeder
aliasPetalPro.Accounts.UserToken
aliasPetalPro.Accounts.UserTOTP
aliasPetalPro.Files.File
aliasPetalPro.Files.FileSeeder
aliasPetalPro.Logs.Log
aliasPetalPro.Orgs.Invitation
aliasPetalPro.Orgs.Membership
aliasPetalPro.Orgs.Org
aliasPetalPro.Orgs.OrgSeeder
aliasPetalPro.Posts.Post
aliasPetalPro.Posts.PostSeeder
ifMix.env()==:devdo
PetalPro.Repo.delete_all(Post)
PetalPro.Repo.delete_all(File)
PetalPro.Repo.delete_all(Log)
PetalPro.Repo.delete_all(UserTOTP)
PetalPro.Repo.delete_all(Invitation)
PetalPro.Repo.delete_all(Membership)
PetalPro.Repo.delete_all(Org)
PetalPro.Repo.delete_all(UserToken)
PetalPro.Repo.delete_all(User)
admin =UserSeeder.admin()
normal_user =
UserSeeder.normal_user(%{
email:"[email protected]",
name:"Sarah Cunningham",
password:"password",
confirmed_at:Timex.to_naive_datetime(DateTime.utc_now())
})
UserSeeder.fake_subscription(normal_user)
org =OrgSeeder.random_org(admin)
PetalPro.Orgs.create_invitation(org, %{email: normal_user.email})
UserSeeder.random_users(20)
FileSeeder.create_files(admin)
PostSeeder.create_posts(admin)
end
We use the faker library for randomizing data:
elixir
def random_user_attributes(attrs \\ %{}) do
Enum.into(attrs, %{
name: Faker.Person.En.first_name() <> " " <> Faker.Person.En.last_name(),
email: unique_user_email()
})
end
Seeds should be regularly updated with any new tables you create. This allows you to better test and develop your app.
Last updated 7 months ago