diff options
author | Alex Gleason <alex@alexgleason.me> | 2021-06-17 15:38:10 -0500 |
---|---|---|
committer | Alex Gleason <alex@alexgleason.me> | 2021-06-17 15:38:10 -0500 |
commit | 3a03d9b65f96099e7c7a831469532c2cec7294c6 (patch) | |
tree | 46d84731c3a53157117fc4c8141fdf6b3d7b8b25 /lib/pleroma/data_migration.ex | |
parent | a704d5499c03cb5609ea38a5f2ef06095ced3ef3 (diff) | |
parent | a8adc300d4cfc88ef19f1977e32068437ed4ad00 (diff) | |
download | pleroma-nsfw-api-mrf.tar.gz |
Merge remote-tracking branch 'pleroma/develop' into nsfw-api-mrfnsfw-api-mrf
Diffstat (limited to 'lib/pleroma/data_migration.ex')
-rw-r--r-- | lib/pleroma/data_migration.ex | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/pleroma/data_migration.ex b/lib/pleroma/data_migration.ex new file mode 100644 index 000000000..1377af16e --- /dev/null +++ b/lib/pleroma/data_migration.ex @@ -0,0 +1,45 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.DataMigration do + use Ecto.Schema + + alias Pleroma.DataMigration + alias Pleroma.DataMigration.State + alias Pleroma.Repo + + import Ecto.Changeset + import Ecto.Query + + schema "data_migrations" do + field(:name, :string) + field(:state, State, default: :pending) + field(:feature_lock, :boolean, default: false) + field(:params, :map, default: %{}) + field(:data, :map, default: %{}) + + timestamps() + end + + def changeset(data_migration, params \\ %{}) do + data_migration + |> cast(params, [:name, :state, :feature_lock, :params, :data]) + |> validate_required([:name]) + |> unique_constraint(:name) + end + + def update_one_by_id(id, params \\ %{}) do + with {1, _} <- + from(dm in DataMigration, where: dm.id == ^id) + |> Repo.update_all(set: params) do + :ok + end + end + + def get_by_name(name) do + Repo.get_by(DataMigration, name: name) + end + + def populate_hashtags_table, do: get_by_name("populate_hashtags_table") +end |