Add activity expirations table
[akkoma] / lib / pleroma / activity_expiration.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.ActivityExpiration do
6 use Ecto.Schema
7
8 alias Pleroma.Activity
9 alias Pleroma.ActivityExpiration
10 alias Pleroma.FlakeId
11 alias Pleroma.Repo
12
13 import Ecto.Query
14
15 @type t :: %__MODULE__{}
16
17 schema "activity_expirations" do
18 belongs_to(:activity, Activity, type: FlakeId)
19 field(:scheduled_at, :naive_datetime)
20 end
21
22 def due_expirations(offset \\ 0) do
23 naive_datetime =
24 NaiveDateTime.utc_now()
25 |> NaiveDateTime.add(offset, :millisecond)
26
27 ActivityExpiration
28 |> where([exp], exp.scheduled_at < ^naive_datetime)
29 |> Repo.all()
30 end
31 end