How do I dynamically pass a field name in Ash.Query.filter?
In below code, I am trying to filter by a specific attribute only when it is not null or empty string. It is not throwing any error nor is it filtering.
I tried using field/1
, ref/1
, attribute/1
but they were undefined outside a resource.
How do I make below logic work in Ash?
def filter(query, [department: department, job_title: job_title]) do
query
|> maybe_filter(:department_id, department)
|> maybe_filter(:job_title_id, job_title)
end
defp maybe_filter(query, _field, ""), do: query
defp maybe_filter(query, _field, value) when is_nil(value), do: query
# THIS IS WHERE I AM HAVING CHALLENGES
defp maybe_filter(query, field, value), do: Ash.Query.filter(query, ^field == ^value)