diff options
author | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-08-25 12:30:00 +0300 |
---|---|---|
committer | rinpatch <rinpatch@sdf.org> | 2020-09-10 21:50:41 +0300 |
commit | 5ad0cc4c863f7f8a1e6fdfa40eb884a5c94ebf67 (patch) | |
tree | d8c857eff3392d1d6cb851840322d89061c931b6 | |
parent | 629a8de9cb2ba2cc2d09679862a24031f34abc2f (diff) | |
download | pleroma-5ad0cc4c863f7f8a1e6fdfa40eb884a5c94ebf67.tar.gz pleroma-5ad0cc4c863f7f8a1e6fdfa40eb884a5c94ebf67.zip |
move old expirations into Oban
-rw-r--r-- | priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs new file mode 100644 index 000000000..585d1a600 --- /dev/null +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -0,0 +1,29 @@ +defmodule Pleroma.Repo.Migrations.MoveActivityExpirationsToOban do + use Ecto.Migration + + import Ecto.Query, only: [from: 2] + + def change do + Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}], + strategy: :one_for_one, + name: Pleroma.Supervisor + ) + + from(e in "activity_expirations", + select: %{id: e.id, activity_id: e.activity_id, scheduled_at: e.scheduled_at} + ) + |> Pleroma.RepoStreamer.chunk_stream(500) + |> Stream.each(fn expirations -> + Enum.each(expirations, fn expiration -> + with {:ok, expires_at} <- DateTime.from_naive(expiration.scheduled_at, "Etc/UTC") do + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: FlakeId.to_string(expiration.activity_id), + expires_at: expires_at, + validate: false + }) + end + end) + end) + |> Stream.run() + end +end |