aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/config/version.ex
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-07-16 19:57:27 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2021-05-11 18:12:33 +0300
commit2538c741c0d1bf9c2d9c8e02953d3d6e63220e8f (patch)
tree85139b44fc541482a2d923985bff58f1c2ccbdb7 /lib/pleroma/config/version.ex
parent745375bdcf2679ff803dd4ebc4a8313a7b5fb157 (diff)
downloadpleroma-feature/config-versioning.tar.gz
config versioningfeature/config-versioning
- added DynamicSupervisor, which starts Pleroma deps and restarts config dependent deps - added versioning for in database config. New version is created from changes which are passed to config update/delete endpoint. Every version contains backup with all changes added through update. Versioning supports rollbacks with N steps. With a rollback, all versions that come after the version on which the rollback was made are deleted.
Diffstat (limited to 'lib/pleroma/config/version.ex')
-rw-r--r--lib/pleroma/config/version.ex25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/pleroma/config/version.ex b/lib/pleroma/config/version.ex
new file mode 100644
index 000000000..2f66cc039
--- /dev/null
+++ b/lib/pleroma/config/version.ex
@@ -0,0 +1,25 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Config.Version do
+ @moduledoc """
+ IMPORTANT!!!
+ Before modifying records in the database directly, please read "Config versioning" in `docs/development/config_versioning.md`.
+ """
+
+ use Ecto.Schema
+
+ import Ecto.Query, only: [from: 2]
+
+ schema "config_versions" do
+ field(:backup, Pleroma.EctoType.Config.BinaryValue)
+ field(:current, :boolean, default: true)
+
+ timestamps()
+ end
+
+ def all do
+ from(v in __MODULE__, order_by: [desc: v.id]) |> Pleroma.Repo.all()
+ end
+end