1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Repo.Migrations.MoveTokensExpirationIntoOban do
8 import Ecto.Query, only: [from: 2]
11 Pleroma.Config.Oban.warn()
13 Application.ensure_all_started(:oban)
15 Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}],
16 strategy: :one_for_one,
17 name: Pleroma.Supervisor
20 if Pleroma.Config.get([:oauth2, :clean_expired_tokens]) do
21 from(t in Pleroma.Web.OAuth.Token, where: t.valid_until > ^NaiveDateTime.utc_now())
22 |> Pleroma.Repo.stream()
23 |> Stream.each(fn token ->
24 Pleroma.Workers.PurgeExpiredToken.enqueue(%{
26 valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"),
27 mod: Pleroma.Web.OAuth.Token
33 from(t in Pleroma.MFA.Token, where: t.valid_until > ^NaiveDateTime.utc_now())
34 |> Pleroma.Repo.stream()
35 |> Stream.each(fn token ->
36 Pleroma.Workers.PurgeExpiredToken.enqueue(%{
38 valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"),
39 mod: Pleroma.MFA.Token