Refactor using with

This commit is contained in:
mdashlw 2025-02-25 05:06:42 +00:00 committed by GitHub
parent 9bbe9bc65d
commit 3f2402c187
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -18,32 +18,22 @@ defmodule Philomena.Images.Query do
do: {:error, "Filter queries inside filters are not allowed."}
defp filter_id_transform(%{user: user} = ctx, value) do
case Integer.parse(value) do
{value, ""} when value >= 0 ->
filter =
case ctx do
%{filters: %{^value => filter}} -> filter
_ -> nil
end
with {value, ""} <- Integer.parse(value),
{:ok, filter} <- Map.fetch(ctx.filters, value),
true <- Canada.Can.can?(user, :show, filter) do
ctx = Map.merge(ctx, %{filter: true})
if is_nil(filter) or not Canada.Can.can?(user, :show, filter) do
{:error, "Invalid filter `#{value}`."}
else
ctx = Map.merge(ctx, %{filter: true})
{:ok,
%{
bool: %{
must_not: [
%{terms: %{tag_ids: filter.hidden_tag_ids}},
invalid_filter_guard(ctx, filter.hidden_complex_str)
]
}
}}
end
_error ->
{:error, "Invalid filter `#{value}`."}
{:ok,
%{
bool: %{
must_not: [
%{terms: %{tag_ids: filter.hidden_tag_ids}},
invalid_filter_guard(ctx, filter.hidden_complex_str)
]
}
}}
else
_ -> {:error, "Invalid filter `#{value}`."}
end
end