projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'feat/chat-list-pagination' into 'develop'
[akkoma]
/
lib
/
pleroma
/
user
/
query.ex
diff --git
a/lib/pleroma/user/query.ex
b/lib/pleroma/user/query.ex
index 64bb24c0e14ac2f2b3cd1c47c5d2fd0659e7e875..fa46545dad167478f6705394e00145adeaf35fb8 100644
(file)
--- a/
lib/pleroma/user/query.ex
+++ b/
lib/pleroma/user/query.ex
@@
-1,5
+1,5
@@
# Pleroma: A lightweight social networking server
# Pleroma: A lightweight social networking server
-# Copyright © 2017-202
0
Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-202
1
Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.User.Query do
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.User.Query do
@@
-43,10
+43,12
@@
defmodule Pleroma.User.Query do
active: boolean(),
deactivated: boolean(),
need_approval: boolean(),
active: boolean(),
deactivated: boolean(),
need_approval: boolean(),
+ unconfirmed: boolean(),
is_admin: boolean(),
is_moderator: boolean(),
super_users: boolean(),
invisible: boolean(),
is_admin: boolean(),
is_moderator: boolean(),
super_users: boolean(),
invisible: boolean(),
+ internal: boolean(),
followers: User.t(),
friends: User.t(),
recipients_from_activity: [String.t()],
followers: User.t(),
friends: User.t(),
recipients_from_activity: [String.t()],
@@
-54,7
+56,8
@@
defmodule Pleroma.User.Query do
ap_id: [String.t()],
order_by: term(),
select: term(),
ap_id: [String.t()],
order_by: term(),
select: term(),
- limit: pos_integer()
+ limit: pos_integer(),
+ actor_types: [String.t()]
}
| map()
}
| map()
@@
-80,7
+83,9
@@
defmodule Pleroma.User.Query do
end
defp prepare_query(query, criteria) do
end
defp prepare_query(query, criteria) do
- Enum.reduce(criteria, query, &compose_query/2)
+ criteria
+ |> Map.put_new(:internal, false)
+ |> Enum.reduce(query, &compose_query/2)
end
defp compose_query({key, value}, query)
end
defp compose_query({key, value}, query)
@@
-111,6
+116,10
@@
defmodule Pleroma.User.Query do
where(query, [u], u.is_admin == ^bool)
end
where(query, [u], u.is_admin == ^bool)
end
+ defp compose_query({:actor_types, actor_types}, query) when is_list(actor_types) do
+ where(query, [u], u.actor_type in ^actor_types)
+ end
+
defp compose_query({:is_moderator, bool}, query) do
where(query, [u], u.is_moderator == ^bool)
end
defp compose_query({:is_moderator, bool}, query) do
where(query, [u], u.is_moderator == ^bool)
end
@@
-128,32
+137,34
@@
defmodule Pleroma.User.Query do
defp compose_query({:external, _}, query), do: location_query(query, false)
defp compose_query({:active, _}, query) do
defp compose_query({:external, _}, query), do: location_query(query, false)
defp compose_query({:active, _}, query) do
-
User.restrict_deactivated(query
)
- |> where([u],
not is_nil(u.nickname)
)
- |> where([u], u.
approval_pending == fals
e)
+
where(query, [u], u.is_active == true
)
+ |> where([u],
u.is_approved == true
)
+ |> where([u], u.
is_confirmed == tru
e)
end
defp compose_query({:legacy_active, _}, query) do
query
|> where([u], fragment("not (?->'deactivated' @> 'true')", u.info))
end
defp compose_query({:legacy_active, _}, query) do
query
|> where([u], fragment("not (?->'deactivated' @> 'true')", u.info))
- |> where([u], not is_nil(u.nickname))
end
defp compose_query({:deactivated, false}, query) do
end
defp compose_query({:deactivated, false}, query) do
-
User.restrict_deactivated(query
)
+
where(query, [u], u.is_active == true
)
end
defp compose_query({:deactivated, true}, query) do
end
defp compose_query({:deactivated, true}, query) do
- where(query, [u], u.deactivated == ^true)
- |> where([u], not is_nil(u.nickname))
+ where(query, [u], u.is_active == false)
end
defp compose_query({:confirmation_pending, bool}, query) do
end
defp compose_query({:confirmation_pending, bool}, query) do
- where(query, [u], u.
confirmation_pending =
= ^bool)
+ where(query, [u], u.
is_confirmed !
= ^bool)
end
defp compose_query({:need_approval, _}, query) do
end
defp compose_query({:need_approval, _}, query) do
- where(query, [u], u.approval_pending)
+ where(query, [u], u.is_approved == false)
+ end
+
+ defp compose_query({:unconfirmed, _}, query) do
+ where(query, [u], u.is_confirmed == false)
end
defp compose_query({:followers, %User{id: id}}, query) do
end
defp compose_query({:followers, %User{id: id}}, query) do
@@
-203,10
+214,15
@@
defmodule Pleroma.User.Query do
limit(query, ^limit)
end
limit(query, ^limit)
end
+ defp compose_query({:internal, false}, query) do
+ query
+ |> where([u], not is_nil(u.nickname))
+ |> where([u], not like(u.nickname, "internal.%"))
+ end
+
defp compose_query(_unsupported_param, query), do: query
defp location_query(query, local) do
where(query, [u], u.local == ^local)
defp compose_query(_unsupported_param, query), do: query
defp location_query(query, local) do
where(query, [u], u.local == ^local)
- |> where([u], not is_nil(u.nickname))
end
end
end
end