diff options
Diffstat (limited to 'priv/repo/migrations')
8 files changed, 184 insertions, 0 deletions
| diff --git a/priv/repo/migrations/20200831114918_remove_unread_conversation_count_from_user.exs b/priv/repo/migrations/20200831114918_remove_unread_conversation_count_from_user.exs new file mode 100644 index 000000000..b7bdb9166 --- /dev/null +++ b/priv/repo/migrations/20200831114918_remove_unread_conversation_count_from_user.exs @@ -0,0 +1,38 @@ +defmodule Pleroma.Repo.Migrations.RemoveUnreadConversationCountFromUser do +  use Ecto.Migration +  import Ecto.Query +  alias Pleroma.Repo + +  def up do +    alter table(:users) do +      remove_if_exists(:unread_conversation_count, :integer) +    end +  end + +  def down do +    alter table(:users) do +      add_if_not_exists(:unread_conversation_count, :integer, default: 0) +    end + +    flush() +    recalc_unread_conversation_count() +  end + +  defp recalc_unread_conversation_count do +    participations_subquery = +      from( +        p in "conversation_participations", +        where: p.read == false, +        group_by: p.user_id, +        select: %{user_id: p.user_id, unread_conversation_count: count(p.id)} +      ) + +    from( +      u in "users", +      join: p in subquery(participations_subquery), +      on: p.user_id == u.id, +      update: [set: [unread_conversation_count: p.unread_conversation_count]] +    ) +    |> Repo.update_all([]) +  end +end diff --git a/priv/repo/migrations/20200831115854_add_unread_index_to_conversation_participation.exs b/priv/repo/migrations/20200831115854_add_unread_index_to_conversation_participation.exs new file mode 100644 index 000000000..68771c655 --- /dev/null +++ b/priv/repo/migrations/20200831115854_add_unread_index_to_conversation_participation.exs @@ -0,0 +1,12 @@ +defmodule Pleroma.Repo.Migrations.AddUnreadIndexToConversationParticipation do +  use Ecto.Migration + +  def change do +    create( +      index(:conversation_participations, [:user_id], +        where: "read = false", +        name: "unread_conversation_participation_count_index" +      ) +    ) +  end +end diff --git a/priv/repo/migrations/20200831152600_add_pleroma_report_to_enum_for_notifications.exs b/priv/repo/migrations/20200831152600_add_pleroma_report_to_enum_for_notifications.exs new file mode 100644 index 000000000..01fb90459 --- /dev/null +++ b/priv/repo/migrations/20200831152600_add_pleroma_report_to_enum_for_notifications.exs @@ -0,0 +1,48 @@ +defmodule Pleroma.Repo.Migrations.AddPleromaReportTypeToEnumForNotifications do +  use Ecto.Migration + +  @disable_ddl_transaction true + +  def up do +    """ +    alter type notification_type add value 'pleroma:report' +    """ +    |> execute() +  end + +  def down do +    alter table(:notifications) do +      modify(:type, :string) +    end + +    """ +    delete from notifications where type = 'pleroma:report' +    """ +    |> execute() + +    """ +    drop type if exists notification_type +    """ +    |> execute() + +    """ +    create type notification_type as enum ( +      'follow', +      'follow_request', +      'mention', +      'move', +      'pleroma:emoji_reaction', +      'pleroma:chat_mention', +      'reblog', +      'favourite' +    ) +    """ +    |> execute() + +    """ +    alter table notifications  +    alter column type type notification_type using (type::notification_type) +    """ +    |> execute() +  end +end diff --git a/priv/repo/migrations/20200831192323_create_backups.exs b/priv/repo/migrations/20200831192323_create_backups.exs new file mode 100644 index 000000000..3ac5889e2 --- /dev/null +++ b/priv/repo/migrations/20200831192323_create_backups.exs @@ -0,0 +1,17 @@ +defmodule Pleroma.Repo.Migrations.CreateBackups do +  use Ecto.Migration + +  def change do +    create_if_not_exists table(:backups) do +      add(:user_id, references(:users, type: :uuid, on_delete: :delete_all)) +      add(:file_name, :string, null: false) +      add(:content_type, :string, null: false) +      add(:processed, :boolean, null: false, default: false) +      add(:file_size, :bigint) + +      timestamps() +    end + +    create_if_not_exists(index(:backups, [:user_id])) +  end +end diff --git a/priv/repo/migrations/20200915095704_remove_background_jobs.exs b/priv/repo/migrations/20200915095704_remove_background_jobs.exs new file mode 100644 index 000000000..9785bfb8a --- /dev/null +++ b/priv/repo/migrations/20200915095704_remove_background_jobs.exs @@ -0,0 +1,22 @@ +defmodule Pleroma.Repo.Migrations.RemoveBackgroundJobs do +  use Ecto.Migration + +  import Ecto.Query, only: [from: 2] + +  def up do +    from(j in "oban_jobs", +      where: +        j.queue == ^"background" and +          fragment("?->>'op'", j.args) in ^[ +            "fetch_data_for_activity", +            "media_proxy_prefetch", +            "media_proxy_preload" +          ] and +          j.worker == ^"Pleroma.Workers.BackgroundWorker", +      select: [:id] +    ) +    |> Pleroma.Repo.delete_all() +  end + +  def down, do: :ok +end diff --git a/priv/repo/migrations/20201013144052_refactor_discoverable_user_field.exs b/priv/repo/migrations/20201013144052_refactor_discoverable_user_field.exs new file mode 100644 index 000000000..3fdc190cc --- /dev/null +++ b/priv/repo/migrations/20201013144052_refactor_discoverable_user_field.exs @@ -0,0 +1,15 @@ +# 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.RefactorDiscoverableUserField do +  use Ecto.Migration + +  def up do +    execute("ALTER TABLE users RENAME COLUMN discoverable TO is_discoverable;") +  end + +  def down do +    execute("ALTER TABLE users RENAME COLUMN is_discoverable TO discoverable;") +  end +end diff --git a/priv/repo/migrations/20201113060459_remove_purge_expired_activity_worker_from_oban_config.exs b/priv/repo/migrations/20201113060459_remove_purge_expired_activity_worker_from_oban_config.exs new file mode 100644 index 000000000..fe31f4442 --- /dev/null +++ b/priv/repo/migrations/20201113060459_remove_purge_expired_activity_worker_from_oban_config.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.RemovePurgeExpiredActivityWorkerFromObanConfig do +  use Ecto.Migration + +  def change do +    with %Pleroma.ConfigDB{} = config <- +           Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Oban}), +         crontab when is_list(crontab) <- config.value[:crontab], +         index when is_integer(index) <- +           Enum.find_index(crontab, fn {_, worker} -> +             worker == Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker +           end) do +      updated_value = Keyword.put(config.value, :crontab, List.delete_at(crontab, index)) + +      config +      |> Ecto.Changeset.change(value: updated_value) +      |> Pleroma.Repo.update() +    end +  end +end diff --git a/priv/repo/migrations/20201217172858_data_migration_prolong_o_auth_tokens_valid_until.exs b/priv/repo/migrations/20201217172858_data_migration_prolong_o_auth_tokens_valid_until.exs new file mode 100644 index 000000000..560cc7447 --- /dev/null +++ b/priv/repo/migrations/20201217172858_data_migration_prolong_o_auth_tokens_valid_until.exs @@ -0,0 +1,13 @@ +defmodule Pleroma.Repo.Migrations.DataMigrationProlongOAuthTokensValidUntil do +  use Ecto.Migration + +  def up do +    expires_in = Pleroma.Config.get!([:oauth2, :token_expires_in]) +    valid_until = NaiveDateTime.add(NaiveDateTime.utc_now(), expires_in, :second) +    execute("update oauth_tokens set valid_until = '#{valid_until}'") +  end + +  def down do +    :noop +  end +end | 
