aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/repo.ex
diff options
context:
space:
mode:
authorrinpatch <rinpatch@sdf.org>2020-01-30 22:16:55 +0300
committerrinpatch <rinpatch@sdf.org>2020-01-30 22:16:55 +0300
commit5b62acf6e9a38f8d14a9fb37cc85e646fb0169e3 (patch)
tree6677ba80418ffd34a78cba75498f2c1ab48ba14c /lib/pleroma/repo.ex
parent45180d4c6058f790475d8ff28018c912db105082 (diff)
parent946de2299cccebac6718e3a132397ff5c06c67ee (diff)
downloadpleroma-5b62acf6e9a38f8d14a9fb37cc85e646fb0169e3.tar.gz
Merge branch 'develop' into fix/disable-rate-limiter-for-socket-localhost
Diffstat (limited to 'lib/pleroma/repo.ex')
-rw-r--r--lib/pleroma/repo.ex35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/pleroma/repo.ex b/lib/pleroma/repo.ex
index f57e088bc..cb0b6653c 100644
--- a/lib/pleroma/repo.ex
+++ b/lib/pleroma/repo.ex
@@ -8,6 +8,8 @@ defmodule Pleroma.Repo do
adapter: Ecto.Adapters.Postgres,
migration_timestamps: [type: :naive_datetime_usec]
+ require Logger
+
defmodule Instrumenter do
use Prometheus.EctoInstrumenter
end
@@ -47,4 +49,37 @@ defmodule Pleroma.Repo do
_ -> {:error, :not_found}
end
end
+
+ def check_migrations_applied!() do
+ unless Pleroma.Config.get(
+ [:i_am_aware_this_may_cause_data_loss, :disable_migration_check],
+ false
+ ) do
+ Ecto.Migrator.with_repo(__MODULE__, fn repo ->
+ down_migrations =
+ Ecto.Migrator.migrations(repo)
+ |> Enum.reject(fn
+ {:up, _, _} -> true
+ {:down, _, _} -> false
+ end)
+
+ if length(down_migrations) > 0 do
+ down_migrations_text =
+ Enum.map(down_migrations, fn {:down, id, name} -> "- #{name} (#{id})\n" end)
+
+ Logger.error(
+ "The following migrations were not applied:\n#{down_migrations_text}If you want to start Pleroma anyway, set\nconfig :pleroma, :i_am_aware_this_may_cause_data_loss, disable_migration_check: true"
+ )
+
+ raise Pleroma.Repo.UnappliedMigrationsError
+ end
+ end)
+ else
+ :ok
+ end
+ end
+end
+
+defmodule Pleroma.Repo.UnappliedMigrationsError do
+ defexception message: "Unapplied Migrations detected"
end