logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git
commit: 1ad0d94d6f1f11c848f277877cc14b3a47a7ae95
parent 6a6a631c814ff946358dd386bd41bda2c8a37111
Author: Mark Felder <feld@feld.me>
Date:   Tue,  5 Dec 2023 16:35:41 -0500

Change set_reachable/1 to an upsert

Diffstat:

Achangelog.d/reachability.change1+
Mlib/pleroma/instances/instance.ex10+++-------
Mtest/pleroma/instances/instance_test.exs8--------
3 files changed, 4 insertions(+), 15 deletions(-)

diff --git a/changelog.d/reachability.change b/changelog.d/reachability.change @@ -0,0 +1 @@ +Reduce the reachability timestamp update to a single upsert query diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex @@ -97,13 +97,9 @@ defmodule Pleroma.Instances.Instance do def reachable?(url_or_host) when is_binary(url_or_host), do: true def set_reachable(url_or_host) when is_binary(url_or_host) do - with host <- host(url_or_host), - %Instance{} = existing_record <- Repo.get_by(Instance, %{host: host}) do - {:ok, _instance} = - existing_record - |> changeset(%{unreachable_since: nil}) - |> Repo.update() - end + %Instance{host: host(url_or_host)} + |> changeset(%{unreachable_since: nil}) + |> Repo.insert(on_conflict: {:replace, [:unreachable_since]}, conflict_target: :host) end def set_reachable(_), do: {:error, nil} diff --git a/test/pleroma/instances/instance_test.exs b/test/pleroma/instances/instance_test.exs @@ -31,14 +31,6 @@ defmodule Pleroma.Instances.InstanceTest do assert {:ok, instance} = Instance.set_reachable(instance.host) refute instance.unreachable_since end - - test "does NOT create an Instance record in case of no existing matching record" do - host = "domain.org" - assert nil == Instance.set_reachable(host) - - assert [] = Repo.all(Ecto.Query.from(i in Instance)) - assert Instance.reachable?(host) - end end describe "set_unreachable/1" do