Track usage of media files and add a job to clean them
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
31
lib/service/workers/clean_orphan_media_worker.ex
Normal file
31
lib/service/workers/clean_orphan_media_worker.ex
Normal file
@@ -0,0 +1,31 @@
|
||||
defmodule Mobilizon.Service.Workers.CleanOrphanMediaWorker do
|
||||
@moduledoc """
|
||||
Worker to clean orphan media
|
||||
"""
|
||||
|
||||
use Oban.Worker, queue: "background"
|
||||
alias Mobilizon.Service.CleanOrphanMedia
|
||||
|
||||
@grace_period Mobilizon.Config.get([:instance, :orphan_upload_grace_period_hours], 48)
|
||||
|
||||
@impl Oban.Worker
|
||||
def perform(%Job{}) do
|
||||
if Mobilizon.Config.get!([:instance, :remove_orphan_uploads]) and should_perform?() do
|
||||
CleanOrphanMedia.clean()
|
||||
end
|
||||
end
|
||||
|
||||
@spec should_perform? :: boolean()
|
||||
defp should_perform? do
|
||||
case Cachex.get(:key_value, "last_media_cleanup") do
|
||||
{:ok, %DateTime{} = last_media_cleanup} ->
|
||||
DateTime.compare(
|
||||
last_media_cleanup,
|
||||
DateTime.add(DateTime.utc_now(), @grace_period * -3600)
|
||||
) == :lt
|
||||
|
||||
_ ->
|
||||
true
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user