ash v1.13.0 Ash.Filter View Source

The representation of a filter in Ash.

Ash filters are stored as nested Ash.Filter.Expression{} and %Ash.Filter.Not{} structs, terminating in a %Ash.Filter.Predicate{} struct. An expression is simply a boolean operator and the left and right hand side of that operator.

Filter Templates

Filter templates are simplified fielter statements (they only support atom keys), that have substitutions in them. Currently, the substitutions are {:_actor, :field} and {:_actor, :_primary_key}

You can pass a filter template to build_filter_from_template/2 with an actor, and it will return the new result

Additionally, you can ask if the filter template contains an actor reference via template_references_actor?/1

Link to this section Summary

Link to this section Types

Specs

t() :: %Ash.Filter{expression: term(), resource: term()}

Link to this section Functions

Link to this function

add_to_filter(base, addition, op \\ :and, aggregates \\ %{})

View Source
Link to this function

add_to_filter!(base, addition, op \\ :and, aggregates \\ %{})

View Source
Link to this function

build_filter_from_template(template, actor)

View Source

Replace any actor value references in a template with the values from a given actor

Link to this function

do_map(expression, func)

View Source
Link to this function

do_reduce(expression, acc, func)

View Source
Link to this function

filter_expression_by_relationship_path(filter, path, scope? \\ false)

View Source
Link to this function

parse(resource, statement, aggregates \\ %{})

View Source
Link to this function

parse!(resource, statement, aggregates \\ %{})

View Source
Link to this function

put_at_path(value, list)

View Source
Link to this function

read_requests(api, filter)

View Source
Link to this function

reduce(filter, acc \\ nil, func)

View Source
Link to this function

relationship_filter_request_paths(filter)

View Source
Link to this function

relationship_paths(filter_or_expression, kind \\ :all)

View Source
Link to this function

remove_aggregates(filter)

View Source
Link to this function

run_other_data_layer_filters(api, resource, filter)

View Source
Link to this function

strict_subset_of(filter, candidate)

View Source

Returns true if the second argument is a strict subset (always returns the same or less data) of the first

Link to this function

strict_subset_of?(filter, candidate)

View Source
Link to this function

template_references_actor?(filter)

View Source

Whether or not a given template contains an actor reference

transform an expression based filter to a simple filter, which is just a list of predicates