akkoma/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs

35 lines
1,006 B
Elixir
Raw Normal View History

2022-02-25 23:11:42 -07:00
# Pleroma: A lightweight social networking server
# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
2022-02-25 23:11:42 -07:00
# SPDX-License-Identifier: AGPL-3.0-only
2020-08-25 03:30:00 -06:00
defmodule Pleroma.Repo.Migrations.MoveActivityExpirationsToOban do
use Ecto.Migration
import Ecto.Query, only: [from: 2]
def change do
2020-09-13 01:04:50 -06:00
Pleroma.Config.Oban.warn()
Application.ensure_all_started(:oban)
2020-08-25 03:30:00 -06:00
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.Repo.stream()
2020-09-04 03:05:17 -06:00
|> Stream.each(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
})
end
2020-08-25 03:30:00 -06:00
end)
|> Stream.run()
end
end