summaryrefslogtreecommitdiff
path: root/priv
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-08-25 12:30:00 +0300
committerrinpatch <rinpatch@sdf.org>2020-09-10 21:50:41 +0300
commit5ad0cc4c863f7f8a1e6fdfa40eb884a5c94ebf67 (patch)
treed8c857eff3392d1d6cb851840322d89061c931b6 /priv
parent629a8de9cb2ba2cc2d09679862a24031f34abc2f (diff)
move old expirations into Oban
Diffstat (limited to 'priv')
-rw-r--r--priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs29
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