Co-authored-by: FloatingGhost <hannah@coffee-and-dreams.uk> Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/334
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
defmodule Pleroma.Activity.Pruner do
 | 
						|
  @moduledoc """
 | 
						|
  Prunes activities from the database.
 | 
						|
  """
 | 
						|
  @cutoff 30
 | 
						|
 | 
						|
  alias Pleroma.Activity
 | 
						|
  alias Pleroma.Repo
 | 
						|
  import Ecto.Query
 | 
						|
 | 
						|
  def prune_deletes do
 | 
						|
    before_time = cutoff()
 | 
						|
 | 
						|
    from(a in Activity,
 | 
						|
      where: fragment("?->>'type' = ?", a.data, "Delete") and a.inserted_at < ^before_time
 | 
						|
    )
 | 
						|
    |> Repo.delete_all(timeout: :infinity)
 | 
						|
  end
 | 
						|
 | 
						|
  def prune_undos do
 | 
						|
    before_time = cutoff()
 | 
						|
 | 
						|
    from(a in Activity,
 | 
						|
      where: fragment("?->>'type' = ?", a.data, "Undo") and a.inserted_at < ^before_time
 | 
						|
    )
 | 
						|
    |> Repo.delete_all(timeout: :infinity)
 | 
						|
  end
 | 
						|
 | 
						|
  def prune_removes do
 | 
						|
    before_time = cutoff()
 | 
						|
 | 
						|
    from(a in Activity,
 | 
						|
      where: fragment("?->>'type' = ?", a.data, "Remove") and a.inserted_at < ^before_time
 | 
						|
    )
 | 
						|
    |> Repo.delete_all(timeout: :infinity)
 | 
						|
  end
 | 
						|
 | 
						|
  def prune_stale_follow_requests do
 | 
						|
    before_time = cutoff()
 | 
						|
 | 
						|
    from(a in Activity,
 | 
						|
      where:
 | 
						|
        fragment("?->>'type' = ?", a.data, "Follow") and a.inserted_at < ^before_time and
 | 
						|
          fragment("?->>'state' = ?", a.data, "reject")
 | 
						|
    )
 | 
						|
    |> Repo.delete_all(timeout: :infinity)
 | 
						|
  end
 | 
						|
 | 
						|
  defp cutoff do
 | 
						|
    DateTime.utc_now() |> Timex.shift(days: -@cutoff)
 | 
						|
  end
 | 
						|
end
 |