054ee514ae5313cbb3ba7949f07d6e05052227b3
[akkoma] / lib / pleroma / activity / pruner.ex
1 defmodule Pleroma.Activity.Pruner do
2 @moduledoc """
3 Prunes activities from the database.
4 """
5 @cutoff 30
6
7 alias Pleroma.Activity
8 alias Pleroma.Repo
9 import Ecto.Query
10
11 def prune_deletes do
12 before_time = cutoff()
13
14 from(a in Activity,
15 where: fragment("?->>'type' = ?", a.data, "Delete") and a.inserted_at < ^before_time
16 )
17 |> Repo.delete_all(timeout: :infinity)
18 end
19
20 def prune_undos do
21 before_time = cutoff()
22
23 from(a in Activity,
24 where: fragment("?->>'type' = ?", a.data, "Undo") and a.inserted_at < ^before_time
25 )
26 |> Repo.delete_all(timeout: :infinity)
27 end
28
29 def prune_removes do
30 before_time = cutoff()
31
32 from(a in Activity,
33 where: fragment("?->>'type' = ?", a.data, "Remove") and a.inserted_at < ^before_time
34 )
35 |> Repo.delete_all(timeout: :infinity)
36 end
37
38 defp cutoff do
39 DateTime.utc_now() |> Timex.shift(days: -@cutoff)
40 end
41 end