Put custom guards in Web.Utils.Guards
authorAlex Gleason <alex@alexgleason.me>
Mon, 7 Jun 2021 20:51:52 +0000 (15:51 -0500)
committerAlex Gleason <alex@alexgleason.me>
Mon, 7 Jun 2021 20:51:52 +0000 (15:51 -0500)
Speeds up recompilation by removing a compile-time cycle on AdminAPI.Search

lib/pleroma/user/query.ex
lib/pleroma/web/admin_api/search.ex
lib/pleroma/web/utils/guards.ex [new file with mode: 0644]

index fa46545dad167478f6705394e00145adeaf35fb8..ac807fc7927f5340cf37c9fbc83329b222e987c7 100644 (file)
@@ -27,7 +27,7 @@ defmodule Pleroma.User.Query do
       - e.g. Pleroma.User.Query.build(%{ap_id: ["http://ap_id1", "http://ap_id2"]})
   """
   import Ecto.Query
-  import Pleroma.Web.AdminAPI.Search, only: [not_empty_string: 1]
+  import Pleroma.Web.Utils.Guards, only: [not_empty_string: 1]
 
   alias Pleroma.FollowingRelationship
   alias Pleroma.User
index eeeebdf4ec7f1652a03c5bc72256a2e54238b239..01d97447996c400c5e45b637167a2fb88bcb485e 100644 (file)
@@ -10,12 +10,6 @@ defmodule Pleroma.Web.AdminAPI.Search do
 
   @page_size 50
 
-  defmacro not_empty_string(string) do
-    quote do
-      is_binary(unquote(string)) and unquote(string) != ""
-    end
-  end
-
   @spec user(map()) :: {:ok, [User.t()], pos_integer()}
   def user(params \\ %{}) do
     query =
diff --git a/lib/pleroma/web/utils/guards.ex b/lib/pleroma/web/utils/guards.ex
new file mode 100644 (file)
index 0000000..aea7b63
--- /dev/null
@@ -0,0 +1,13 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.Utils.Guards do
+  @moduledoc """
+  Project-wide custom guards.
+  See: https://hexdocs.pm/elixir/master/patterns-and-guards.html#custom-patterns-and-guards-expressions
+  """
+
+  @doc "Checks for non-empty string"
+  defguard not_empty_string(string) when is_binary(string) and string != ""
+end