Add Instances.delete_all_unreachable/0

This commit is contained in:
Mark Felder 2025-06-28 13:23:37 -07:00
commit df0880d8d1
2 changed files with 34 additions and 0 deletions

View file

@ -33,4 +33,12 @@ defmodule Pleroma.Instances do
|> Oban.insert() |> Oban.insert()
end) end)
end end
@doc "Deletes all users and activities for unreachable instances"
def delete_all_unreachable do
get_unreachable()
|> Enum.each(fn {domain, _} ->
Instance.delete_users_and_activities(domain)
end)
end
end end

View file

@ -109,4 +109,30 @@ defmodule Pleroma.InstancesTest do
assert job.args["domain"] == unreachable_domain assert job.args["domain"] == unreachable_domain
end end
end end
test "delete_all_unreachable/0 schedules DeleteWorker jobs for all unreachable instances" do
domain1 = "unreachable1.example.com"
domain2 = "unreachable2.example.com"
domain3 = "unreachable3.example.com"
Instances.set_unreachable(domain1)
Instances.set_unreachable(domain2)
Instances.set_unreachable(domain3)
Instances.delete_all_unreachable()
# Verify that DeleteWorker jobs were scheduled for all unreachable domains
jobs = all_enqueued(worker: Pleroma.Workers.DeleteWorker)
assert length(jobs) == 3
domains = Enum.map(jobs, & &1.args["host"])
assert domain1 in domains
assert domain2 in domains
assert domain3 in domains
# Verify all jobs are delete_instance operations
Enum.each(jobs, fn job ->
assert job.args["op"] == "delete_instance"
end)
end
end end