diff options
Diffstat (limited to 'priv/repo/migrations')
3 files changed, 62 insertions, 0 deletions
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/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  | 
