summaryrefslogtreecommitdiff
path: root/priv/repo/migrations
diff options
context:
space:
mode:
Diffstat (limited to 'priv/repo/migrations')
-rw-r--r--priv/repo/migrations/20201012173004_refactor_deactivated_user_field.exs22
-rw-r--r--priv/repo/migrations/20210122151424_add_last_active_at_to_users.exs11
-rw-r--r--priv/repo/migrations/20210128092834_remove_duplicates_from_activity_expiration_queue.exs29
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