diff options
Diffstat (limited to 'priv/repo/migrations')
33 files changed, 437 insertions, 8 deletions
| diff --git a/priv/repo/migrations/20190408123347_create_conversations.exs b/priv/repo/migrations/20190408123347_create_conversations.exs index 3eaa6136c..aab6cf802 100644 --- a/priv/repo/migrations/20190408123347_create_conversations.exs +++ b/priv/repo/migrations/20190408123347_create_conversations.exs @@ -1,5 +1,5 @@  # Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Repo.Migrations.CreateConversations do diff --git a/priv/repo/migrations/20190711042021_create_safe_jsonb_set.exs b/priv/repo/migrations/20190711042021_create_safe_jsonb_set.exs index 43d616705..bfac09f9e 100644 --- a/priv/repo/migrations/20190711042021_create_safe_jsonb_set.exs +++ b/priv/repo/migrations/20190711042021_create_safe_jsonb_set.exs @@ -9,7 +9,7 @@ defmodule Pleroma.Repo.Migrations.CreateSafeJsonbSet do      begin        result := jsonb_set(target, path, coalesce(new_value, 'null'::jsonb), create_missing);        if result is NULL then -        raise 'jsonb_set tried to wipe the object, please report this incindent to Pleroma bug tracker. https://git.pleroma.social/pleroma/pleroma/issues/new'; +        raise 'jsonb_set tried to wipe the object, please report this incident to Pleroma bug tracker. https://git.pleroma.social/pleroma/pleroma/issues/new';          return target;        else          return result; diff --git a/priv/repo/migrations/20190730055101_add_oban_jobs_table.exs b/priv/repo/migrations/20190730055101_add_oban_jobs_table.exs index 2f201bd05..5214d59cb 100644 --- a/priv/repo/migrations/20190730055101_add_oban_jobs_table.exs +++ b/priv/repo/migrations/20190730055101_add_oban_jobs_table.exs @@ -1,6 +1,9 @@  defmodule Pleroma.Repo.Migrations.AddObanJobsTable do    use Ecto.Migration -  defdelegate up, to: Oban.Migrations +  def up do +    Oban.Migrations.up(version: 2) +  end +    defdelegate down, to: Oban.Migrations  end diff --git a/priv/repo/migrations/20190917100019_update_oban.exs b/priv/repo/migrations/20190917100019_update_oban.exs index 157dc54f9..f673675de 100644 --- a/priv/repo/migrations/20190917100019_update_oban.exs +++ b/priv/repo/migrations/20190917100019_update_oban.exs @@ -6,6 +6,6 @@ defmodule Pleroma.Repo.Migrations.UpdateOban do    end    def down do -    Oban.Migrations.down(version: 2) +    Oban.Migrations.down(version: 3)    end  end diff --git a/priv/repo/migrations/20200402063221_update_oban_jobs_table.exs b/priv/repo/migrations/20200402063221_update_oban_jobs_table.exs index e7ff04008..ca6856798 100644 --- a/priv/repo/migrations/20200402063221_update_oban_jobs_table.exs +++ b/priv/repo/migrations/20200402063221_update_oban_jobs_table.exs @@ -6,6 +6,6 @@ defmodule Pleroma.Repo.Migrations.UpdateObanJobsTable do    end    def down do -    Oban.Migrations.down(version: 7) +    Oban.Migrations.down(version: 8)    end  end diff --git a/priv/repo/migrations/20200602150528_create_chat_message_reference.exs b/priv/repo/migrations/20200602150528_create_chat_message_reference.exs index 6f9148b7c..5e57cddcf 100644 --- a/priv/repo/migrations/20200602150528_create_chat_message_reference.exs +++ b/priv/repo/migrations/20200602150528_create_chat_message_reference.exs @@ -1,5 +1,5 @@  # Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Repo.Migrations.CreateChatMessageReference do diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs index a703af83f..096ab4ce5 100644 --- a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -6,6 +6,8 @@ defmodule Pleroma.Repo.Migrations.MoveActivityExpirationsToOban do    def change do      Pleroma.Config.Oban.warn() +    Application.ensure_all_started(:oban) +      Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}],        strategy: :one_for_one,        name: Pleroma.Supervisor diff --git a/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs b/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs index 9e49ddacb..725c5ab0b 100644 --- a/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs +++ b/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs @@ -6,6 +6,8 @@ defmodule Pleroma.Repo.Migrations.MoveTokensExpirationIntoOban do    def change do      Pleroma.Config.Oban.warn() +    Application.ensure_all_started(:oban) +      Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}],        strategy: :one_for_one,        name: Pleroma.Supervisor diff --git a/priv/repo/migrations/20201012173004_refactor_deactivated_user_field.exs b/priv/repo/migrations/20201012173004_refactor_deactivated_user_field.exs new file mode 100644 index 000000000..58b75b436 --- /dev/null +++ b/priv/repo/migrations/20201012173004_refactor_deactivated_user_field.exs @@ -0,0 +1,22 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.RefactorDeactivatedUserField do +  use Ecto.Migration + +  def up do +    # Flip the values before we change the meaning of the column +    execute("UPDATE users SET deactivated = NOT deactivated;") +    execute("ALTER TABLE users RENAME COLUMN deactivated TO is_active;") +    execute("ALTER TABLE users ALTER COLUMN is_active SET DEFAULT true;") +    execute("ALTER INDEX users_deactivated_index RENAME TO users_is_active_index;") +  end + +  def down do +    execute("UPDATE users SET is_active = NOT is_active;") +    execute("ALTER TABLE users RENAME COLUMN is_active TO deactivated;") +    execute("ALTER TABLE users ALTER COLUMN deactivated SET DEFAULT false;") +    execute("ALTER INDEX users_is_active_index RENAME TO users_deactivated_index;") +  end +end diff --git a/priv/repo/migrations/20201013141127_refactor_locked_user_field.exs b/priv/repo/migrations/20201013141127_refactor_locked_user_field.exs index 6cd23dbac..3fb643372 100644 --- a/priv/repo/migrations/20201013141127_refactor_locked_user_field.exs +++ b/priv/repo/migrations/20201013141127_refactor_locked_user_field.exs @@ -1,5 +1,5 @@  # Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Repo.Migrations.RefactorLockedUserField do diff --git a/priv/repo/migrations/20201013144052_refactor_discoverable_user_field.exs b/priv/repo/migrations/20201013144052_refactor_discoverable_user_field.exs index 3fdc190cc..6d6738e90 100644 --- a/priv/repo/migrations/20201013144052_refactor_discoverable_user_field.exs +++ b/priv/repo/migrations/20201013144052_refactor_discoverable_user_field.exs @@ -1,5 +1,5 @@  # Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Repo.Migrations.RefactorDiscoverableUserField do diff --git a/priv/repo/migrations/20201013184200_refactor_confirmation_pending_user_field.exs b/priv/repo/migrations/20201013184200_refactor_confirmation_pending_user_field.exs new file mode 100644 index 000000000..d0dc42827 --- /dev/null +++ b/priv/repo/migrations/20201013184200_refactor_confirmation_pending_user_field.exs @@ -0,0 +1,20 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.RefactorConfirmationPendingUserField do +  use Ecto.Migration + +  def up do +    # Flip the values before we change the meaning of the column +    execute("UPDATE users SET confirmation_pending = NOT confirmation_pending;") +    execute("ALTER TABLE users RENAME COLUMN confirmation_pending TO is_confirmed;") +    execute("ALTER TABLE users ALTER COLUMN is_confirmed SET DEFAULT true;") +  end + +  def down do +    execute("UPDATE users SET is_confirmed = NOT is_confirmed;") +    execute("ALTER TABLE users RENAME COLUMN is_confirmed TO confirmation_pending;") +    execute("ALTER TABLE users ALTER COLUMN confirmation_pending SET DEFAULT false;") +  end +end diff --git a/priv/repo/migrations/20201016205220_refactor_approval_pending_user_field.exs b/priv/repo/migrations/20201016205220_refactor_approval_pending_user_field.exs new file mode 100644 index 000000000..944dcf8de --- /dev/null +++ b/priv/repo/migrations/20201016205220_refactor_approval_pending_user_field.exs @@ -0,0 +1,20 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.RefactorApprovalPendingUserField do +  use Ecto.Migration + +  def up do +    # Flip the values before we change the meaning of the column +    execute("UPDATE users SET approval_pending = NOT approval_pending;") +    execute("ALTER TABLE users RENAME COLUMN approval_pending TO is_approved;") +    execute("ALTER TABLE users ALTER COLUMN is_approved SET DEFAULT true;") +  end + +  def down do +    execute("UPDATE users SET is_approved = NOT is_approved;") +    execute("ALTER TABLE users RENAME COLUMN is_approved TO approval_pending;") +    execute("ALTER TABLE users ALTER COLUMN approval_pending SET DEFAULT false;") +  end +end diff --git a/priv/repo/migrations/20201221202251_create_hashtags.exs b/priv/repo/migrations/20201221202251_create_hashtags.exs new file mode 100644 index 000000000..8d2e9ae66 --- /dev/null +++ b/priv/repo/migrations/20201221202251_create_hashtags.exs @@ -0,0 +1,13 @@ +defmodule Pleroma.Repo.Migrations.CreateHashtags do +  use Ecto.Migration + +  def change do +    create_if_not_exists table(:hashtags) do +      add(:name, :citext, null: false) + +      timestamps() +    end + +    create_if_not_exists(unique_index(:hashtags, [:name])) +  end +end diff --git a/priv/repo/migrations/20201221202252_remove_data_from_hashtags.exs b/priv/repo/migrations/20201221202252_remove_data_from_hashtags.exs new file mode 100644 index 000000000..0442c3b87 --- /dev/null +++ b/priv/repo/migrations/20201221202252_remove_data_from_hashtags.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.RemoveDataFromHashtags do +  use Ecto.Migration + +  def up do +    alter table(:hashtags) do +      remove_if_exists(:data, :map) +    end +  end + +  def down do +    alter table(:hashtags) do +      add_if_not_exists(:data, :map, default: %{}) +    end +  end +end diff --git a/priv/repo/migrations/20201221203824_create_hashtags_objects.exs b/priv/repo/migrations/20201221203824_create_hashtags_objects.exs new file mode 100644 index 000000000..581f32b3c --- /dev/null +++ b/priv/repo/migrations/20201221203824_create_hashtags_objects.exs @@ -0,0 +1,13 @@ +defmodule Pleroma.Repo.Migrations.CreateHashtagsObjects do +  use Ecto.Migration + +  def change do +    create_if_not_exists table(:hashtags_objects, primary_key: false) do +      add(:hashtag_id, references(:hashtags), null: false, primary_key: true) +      add(:object_id, references(:objects), null: false, primary_key: true) +    end + +    # Note: PK index: "hashtags_objects_pkey" PRIMARY KEY, btree (hashtag_id, object_id) +    create_if_not_exists(index(:hashtags_objects, [:object_id])) +  end +end diff --git a/priv/repo/migrations/20201231185546_confirm_logged_in_users.exs b/priv/repo/migrations/20201231185546_confirm_logged_in_users.exs new file mode 100644 index 000000000..b9656c17b --- /dev/null +++ b/priv/repo/migrations/20201231185546_confirm_logged_in_users.exs @@ -0,0 +1,22 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.ConfirmLoggedInUsers do +  use Ecto.Migration +  import Ecto.Query +  alias Pleroma.Repo +  alias Pleroma.User +  alias Pleroma.Web.OAuth.Token + +  def up do +    User +    |> where([u], u.is_confirmed == false) +    |> join(:inner, [u], t in Token, on: t.user_id == u.id) +    |> Repo.update_all(set: [is_confirmed: true]) +  end + +  def down do +    :noop +  end +end diff --git a/priv/repo/migrations/20210105195018_create_data_migrations.exs b/priv/repo/migrations/20210105195018_create_data_migrations.exs new file mode 100644 index 000000000..5f2e8d96c --- /dev/null +++ b/priv/repo/migrations/20210105195018_create_data_migrations.exs @@ -0,0 +1,17 @@ +defmodule Pleroma.Repo.Migrations.CreateDataMigrations do +  use Ecto.Migration + +  def change do +    create_if_not_exists table(:data_migrations) do +      add(:name, :string, null: false) +      add(:state, :integer, default: 1) +      add(:feature_lock, :boolean, default: false) +      add(:params, :map, default: %{}) +      add(:data, :map, default: %{}) + +      timestamps() +    end + +    create_if_not_exists(unique_index(:data_migrations, [:name])) +  end +end diff --git a/priv/repo/migrations/20210106183301_data_migration_create_populate_hashtags_table.exs b/priv/repo/migrations/20210106183301_data_migration_create_populate_hashtags_table.exs new file mode 100644 index 000000000..cf3cf26a0 --- /dev/null +++ b/priv/repo/migrations/20210106183301_data_migration_create_populate_hashtags_table.exs @@ -0,0 +1,16 @@ +defmodule Pleroma.Repo.Migrations.DataMigrationCreatePopulateHashtagsTable do +  use Ecto.Migration + +  def up do +    dt = NaiveDateTime.utc_now() + +    execute( +      "INSERT INTO data_migrations(name, inserted_at, updated_at) " <> +        "VALUES ('populate_hashtags_table', '#{dt}', '#{dt}') ON CONFLICT DO NOTHING;" +    ) +  end + +  def down do +    execute("DELETE FROM data_migrations WHERE name = 'populate_hashtags_table';") +  end +end diff --git a/priv/repo/migrations/20210111172254_create_data_migration_failed_ids.exs b/priv/repo/migrations/20210111172254_create_data_migration_failed_ids.exs new file mode 100644 index 000000000..18afa74ac --- /dev/null +++ b/priv/repo/migrations/20210111172254_create_data_migration_failed_ids.exs @@ -0,0 +1,14 @@ +defmodule Pleroma.Repo.Migrations.CreateDataMigrationFailedIds do +  use Ecto.Migration + +  def change do +    create_if_not_exists table(:data_migration_failed_ids, primary_key: false) do +      add(:data_migration_id, references(:data_migrations), null: false, primary_key: true) +      add(:record_id, :bigint, null: false, primary_key: true) +    end + +    create_if_not_exists( +      unique_index(:data_migration_failed_ids, [:data_migration_id, :record_id]) +    ) +  end +end diff --git a/priv/repo/migrations/20210113225652_deprecate_public_endpoint.exs b/priv/repo/migrations/20210113225652_deprecate_public_endpoint.exs new file mode 100644 index 000000000..6f470a459 --- /dev/null +++ b/priv/repo/migrations/20210113225652_deprecate_public_endpoint.exs @@ -0,0 +1,57 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.DeprecatePublicEndpoint do +  use Ecto.Migration + +  def up do +    with %Pleroma.ConfigDB{} = s3_config <- +           Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Uploaders.S3}), +         %Pleroma.ConfigDB{} = upload_config <- +           Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Upload}) do +      public_endpoint = s3_config.value[:public_endpoint] + +      if !is_nil(public_endpoint) do +        upload_value = upload_config.value |> Keyword.merge(base_url: public_endpoint) + +        upload_config +        |> Ecto.Changeset.change(value: upload_value) +        |> Pleroma.Repo.update() + +        s3_value = s3_config.value |> Keyword.delete(:public_endpoint) + +        s3_config +        |> Ecto.Changeset.change(value: s3_value) +        |> Pleroma.Repo.update() +      end +    else +      _ -> :ok +    end +  end + +  def down do +    with %Pleroma.ConfigDB{} = upload_config <- +           Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Upload}), +         %Pleroma.ConfigDB{} = s3_config <- +           Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Uploaders.S3}) do +      base_url = upload_config.value[:base_url] + +      if !is_nil(base_url) do +        s3_value = s3_config.value |> Keyword.merge(public_endpoint: base_url) + +        s3_config +        |> Ecto.Changeset.change(value: s3_value) +        |> Pleroma.Repo.update() + +        upload_value = upload_config.value |> Keyword.delete(:base_url) + +        upload_config +        |> Ecto.Changeset.change(value: upload_value) +        |> Pleroma.Repo.update() +      end +    else +      _ -> :ok +    end +  end +end diff --git a/priv/repo/migrations/20210115205649_upgrade_oban_jobs_to_v9.exs b/priv/repo/migrations/20210115205649_upgrade_oban_jobs_to_v9.exs new file mode 100644 index 000000000..bfb405579 --- /dev/null +++ b/priv/repo/migrations/20210115205649_upgrade_oban_jobs_to_v9.exs @@ -0,0 +1,15 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.UpgradeObanJobsToV9 do +  use Ecto.Migration + +  def up do +    Oban.Migrations.up(version: 9) +  end + +  def down do +    Oban.Migrations.down(version: 9) +  end +end diff --git a/priv/repo/migrations/20210121080964_add_default_text_search_config.exs b/priv/repo/migrations/20210121080964_add_default_text_search_config.exs new file mode 100644 index 000000000..27f600b70 --- /dev/null +++ b/priv/repo/migrations/20210121080964_add_default_text_search_config.exs @@ -0,0 +1,11 @@ +defmodule Pleroma.Repo.Migrations.AddDefaultTextSearchConfig do +  use Ecto.Migration + +  def change do +    execute("DO $$ +    BEGIN +    execute 'ALTER DATABASE \"'||current_database()||'\" SET default_text_search_config = ''english'' '; +    END +    $$;") +  end +end diff --git a/priv/repo/migrations/20210122151424_add_last_active_at_to_users.exs b/priv/repo/migrations/20210122151424_add_last_active_at_to_users.exs new file mode 100644 index 000000000..9671e495b --- /dev/null +++ b/priv/repo/migrations/20210122151424_add_last_active_at_to_users.exs @@ -0,0 +1,11 @@ +defmodule Pleroma.Repo.Migrations.AddLastActiveAtToUsers do +  use Ecto.Migration + +  def change do +    alter table(:users) do +      add(:last_active_at, :naive_datetime) +    end + +    create_if_not_exists(index(:users, [:last_active_at])) +  end +end diff --git a/priv/repo/migrations/20210128092834_remove_duplicates_from_activity_expiration_queue.exs b/priv/repo/migrations/20210128092834_remove_duplicates_from_activity_expiration_queue.exs new file mode 100644 index 000000000..309009205 --- /dev/null +++ b/priv/repo/migrations/20210128092834_remove_duplicates_from_activity_expiration_queue.exs @@ -0,0 +1,29 @@ +defmodule Pleroma.Repo.Migrations.RemoveDuplicatesFromActivityExpirationQueue do +  use Ecto.Migration + +  import Ecto.Query, only: [from: 2] + +  def up do +    duplicate_ids = +      from(j in Oban.Job, +        where: j.queue == "activity_expiration", +        where: j.worker == "Pleroma.Workers.PurgeExpiredActivity", +        where: j.state == "scheduled", +        select: +          {fragment("(?)->>'activity_id'", j.args), fragment("array_agg(?)", j.id), count(j.id)}, +        group_by: fragment("(?)->>'activity_id'", j.args), +        having: count(j.id) > 1 +      ) +      |> Pleroma.Repo.all() +      |> Enum.map(fn {_, ids, _} -> +        max_id = Enum.max(ids) +        List.delete(ids, max_id) +      end) +      |> List.flatten() + +    from(j in Oban.Job, where: j.id in ^duplicate_ids) +    |> Pleroma.Repo.delete_all() +  end + +  def down, do: :noop +end diff --git a/priv/repo/migrations/20210202110641_add_pinned_objects_to_users.exs b/priv/repo/migrations/20210202110641_add_pinned_objects_to_users.exs new file mode 100644 index 000000000..644527246 --- /dev/null +++ b/priv/repo/migrations/20210202110641_add_pinned_objects_to_users.exs @@ -0,0 +1,9 @@ +defmodule Pleroma.Repo.Migrations.AddPinnedObjectsToUsers do +  use Ecto.Migration + +  def change do +    alter table(:users) do +      add(:pinned_objects, :map) +    end +  end +end diff --git a/priv/repo/migrations/20210203141144_add_featured_address_to_users.exs b/priv/repo/migrations/20210203141144_add_featured_address_to_users.exs new file mode 100644 index 000000000..0f6a21611 --- /dev/null +++ b/priv/repo/migrations/20210203141144_add_featured_address_to_users.exs @@ -0,0 +1,23 @@ +defmodule Pleroma.Repo.Migrations.AddFeaturedAddressToUsers do +  use Ecto.Migration + +  def up do +    alter table(:users) do +      add(:featured_address, :string) +    end + +    create(index(:users, [:featured_address])) + +    execute(""" + +    update users set featured_address = concat(ap_id, '/collections/featured') where local = true and featured_address is null; + +    """) +  end + +  def down do +    alter table(:users) do +      remove(:featured_address) +    end +  end +end diff --git a/priv/repo/migrations/20210205145000_move_pinned_activities_into_pinned_objects.exs b/priv/repo/migrations/20210205145000_move_pinned_activities_into_pinned_objects.exs new file mode 100644 index 000000000..9aee545e3 --- /dev/null +++ b/priv/repo/migrations/20210205145000_move_pinned_activities_into_pinned_objects.exs @@ -0,0 +1,28 @@ +defmodule Pleroma.Repo.Migrations.MovePinnedActivitiesIntoPinnedObjects do +  use Ecto.Migration + +  import Ecto.Query + +  alias Pleroma.Repo +  alias Pleroma.User + +  def up do +    from(u in User) +    |> select([u], {u.id, fragment("?.pinned_activities", u)}) +    |> Repo.stream() +    |> Stream.each(fn {user_id, pinned_activities_ids} -> +      pinned_activities = Pleroma.Activity.all_by_ids_with_object(pinned_activities_ids) + +      pins = +        Map.new(pinned_activities, fn %{object: %{data: %{"id" => object_id}}} -> +          {object_id, NaiveDateTime.utc_now()} +        end) + +      from(u in User, where: u.id == ^user_id) +      |> Repo.update_all(set: [pinned_objects: pins]) +    end) +    |> Stream.run() +  end + +  def down, do: :noop +end diff --git a/priv/repo/migrations/20210206045221_remove_pinned_activities_from_users.exs b/priv/repo/migrations/20210206045221_remove_pinned_activities_from_users.exs new file mode 100644 index 000000000..a3ee93f48 --- /dev/null +++ b/priv/repo/migrations/20210206045221_remove_pinned_activities_from_users.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.RemovePinnedActivitiesFromUsers do +  use Ecto.Migration + +  def up do +    alter table(:users) do +      remove(:pinned_activities) +    end +  end + +  def down do +    alter table(:users) do +      add(:pinned_activities, {:array, :string}, default: []) +    end +  end +end diff --git a/priv/repo/migrations/20210218223811_add_disclose_client_to_users.exs b/priv/repo/migrations/20210218223811_add_disclose_client_to_users.exs new file mode 100644 index 000000000..37c5776ff --- /dev/null +++ b/priv/repo/migrations/20210218223811_add_disclose_client_to_users.exs @@ -0,0 +1,9 @@ +defmodule Pleroma.Repo.Migrations.AddDiscloseClientToUsers do +  use Ecto.Migration + +  def change do +    alter table(:users) do +      add(:disclose_client, :boolean, default: true) +    end +  end +end diff --git a/priv/repo/migrations/20210222183840_remove_hashtags_objects_duplicate_index.exs b/priv/repo/migrations/20210222183840_remove_hashtags_objects_duplicate_index.exs new file mode 100644 index 000000000..6c4a2dfdc --- /dev/null +++ b/priv/repo/migrations/20210222183840_remove_hashtags_objects_duplicate_index.exs @@ -0,0 +1,11 @@ +defmodule Pleroma.Repo.Migrations.RemoveHashtagsObjectsDuplicateIndex do +  use Ecto.Migration + +  @moduledoc "Removes `hashtags_objects_hashtag_id_object_id_index` index (duplicate of PK index)." + +  def up do +    drop_if_exists(unique_index(:hashtags_objects, [:hashtag_id, :object_id])) +  end + +  def down, do: nil +end diff --git a/priv/repo/migrations/20210222184616_change_hashtags_name_to_text.exs b/priv/repo/migrations/20210222184616_change_hashtags_name_to_text.exs new file mode 100644 index 000000000..8940b6ca3 --- /dev/null +++ b/priv/repo/migrations/20210222184616_change_hashtags_name_to_text.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.ChangeHashtagsNameToText do +  use Ecto.Migration + +  def up do +    alter table(:hashtags) do +      modify(:name, :text) +    end +  end + +  def down do +    alter table(:hashtags) do +      modify(:name, :citext) +    end +  end +end diff --git a/priv/repo/migrations/20210401143153_user_notification_settings_fix.exs b/priv/repo/migrations/20210401143153_user_notification_settings_fix.exs new file mode 100644 index 000000000..cf68f1be6 --- /dev/null +++ b/priv/repo/migrations/20210401143153_user_notification_settings_fix.exs @@ -0,0 +1,17 @@ +defmodule Pleroma.Repo.Migrations.UserNotificationSettingsFix do +  use Ecto.Migration + +  def up do +    execute(~s(UPDATE users +    SET  +      notification_settings = '{"followers": true, "follows": true, "non_follows": true, "non_followers": true}'::jsonb WHERE notification_settings IS NULL +)) + +    execute("ALTER TABLE users +    ALTER COLUMN notification_settings SET NOT NULL") +  end + +  def down do +    :ok +  end +end | 
