diff options
author | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-07-16 19:57:27 +0300 |
---|---|---|
committer | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2021-05-11 18:12:33 +0300 |
commit | 2538c741c0d1bf9c2d9c8e02953d3d6e63220e8f (patch) | |
tree | 85139b44fc541482a2d923985bff58f1c2ccbdb7 /lib/pleroma/config/version.ex | |
parent | 745375bdcf2679ff803dd4ebc4a8313a7b5fb157 (diff) | |
download | pleroma-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.ex | 25 |
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 |