1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.DataMigration do
8 alias Pleroma.DataMigration
9 alias Pleroma.DataMigration.State
15 @type t :: %__MODULE__{}
17 schema "data_migrations" do
19 field(:state, State, default: :pending)
20 field(:feature_lock, :boolean, default: false)
21 field(:params, :map, default: %{})
22 field(:data, :map, default: %{})
27 def changeset(data_migration, params \\ %{}) do
29 |> cast(params, [:name, :state, :feature_lock, :params, :data])
30 |> validate_required([:name])
31 |> unique_constraint(:name)
34 def update_one_by_id(id, params \\ %{}) do
36 from(dm in DataMigration, where: dm.id == ^id)
37 |> Repo.update_all(set: params) do
42 def get_by_name(name) do
43 Repo.get_by(DataMigration, name: name)
46 def populate_hashtags_table, do: get_by_name("populate_hashtags_table")
47 def delete_context_objects, do: get_by_name("delete_context_objects")