diff options
author | Ivan Tashkinov <ivantashkinov@gmail.com> | 2021-02-03 09:31:38 +0300 |
---|---|---|
committer | Ivan Tashkinov <ivantashkinov@gmail.com> | 2021-02-03 09:31:38 +0300 |
commit | 4e14945670bac15a6e183eb8c552d6e0669713ac (patch) | |
tree | c25db5253cafb81dbfa31cc779ffae8e07806b7e /priv/repo | |
parent | cf4765af4098098fa4d6996193432bd19c439a75 (diff) | |
parent | fd2477dfba1f167c7519a029bedd7ae6884a9f1d (diff) | |
download | pleroma-4e14945670bac15a6e183eb8c552d6e0669713ac.tar.gz pleroma-4e14945670bac15a6e183eb8c552d6e0669713ac.zip |
Merge remote-tracking branch 'remotes/origin/develop' into feature/object-hashtags-rework
# Conflicts:
# CHANGELOG.md
# lib/pleroma/web/activity_pub/activity_pub.ex
Diffstat (limited to 'priv/repo')
-rw-r--r-- | priv/repo/migrations/20210122151424_add_last_active_at_to_users.exs | 11 | ||||
-rw-r--r-- | priv/repo/migrations/20210128092834_remove_duplicates_from_activity_expiration_queue.exs | 29 |
2 files changed, 40 insertions, 0 deletions
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 |