38 lines
1.5 KiB
Elixir
38 lines
1.5 KiB
Elixir
# Script for populating the database. You can run it as:
|
|
#
|
|
# mix run priv/repo/seeds.exs
|
|
#
|
|
# Bootstrap runs in all environments. Dev seeds (members, groups, sample data)
|
|
# run only in dev and test. Skips entirely if bootstrap was already applied
|
|
# (admin user exists), so safe to run on every start. Set FORCE_SEEDS=true to
|
|
# re-run seeds even when already applied.
|
|
#
|
|
# In production (release): seeds are run via Mv.Release.run_seeds/0 from the
|
|
# container entrypoint. Set RUN_DEV_SEEDS=true to also run dev seeds there.
|
|
#
|
|
# Compiler option ignore_module_conflict is set only during seed evaluation
|
|
# so that eval_file of bootstrap/dev does not emit "redefining module" warnings;
|
|
# it is always restored in `after` to avoid hiding real conflicts elsewhere.
|
|
|
|
_ = Application.ensure_all_started(:mv)
|
|
|
|
if Mv.Release.bootstrap_seeds_applied?() and System.get_env("FORCE_SEEDS") != "true" do
|
|
IO.puts("Seeds already applied. Skipping. (Set FORCE_SEEDS=true to override)")
|
|
else
|
|
prev = Code.compiler_options()
|
|
Code.compiler_options(ignore_module_conflict: true)
|
|
|
|
try do
|
|
# Always run bootstrap (fee types, custom fields, roles, admin, system user, settings)
|
|
Code.eval_file("priv/repo/seeds_bootstrap.exs")
|
|
|
|
# In dev and test only: run dev seeds (20 members, groups, custom field values)
|
|
if Mix.env() in [:dev, :test] do
|
|
Code.eval_file("priv/repo/seeds_dev.exs")
|
|
end
|
|
|
|
IO.puts("✅ All seeds completed.")
|
|
after
|
|
Code.compiler_options(prev)
|
|
end
|
|
end
|