View Source Ash.Query.Aggregate (ash v2.21.13)

Represents an aggregated association value

Summary

Types

@type kind() ::
  :custom | :exists | :avg | :min | :max | :list | :sum | :first | :count
@type t() :: %Ash.Query.Aggregate{
  agg_name: term(),
  authorize?: term(),
  constraints: term(),
  context: term(),
  default_value: term(),
  field: term(),
  filterable?: term(),
  implementation: term(),
  join_filters: term(),
  kind: term(),
  load: term(),
  name: term(),
  query: term(),
  read_action: term(),
  relationship_path: term(),
  resource: term(),
  type: term(),
  uniq?: term()
}

Functions

Link to this function

kind_to_type(kind, attribute_type)

View Source
This function is deprecated. use kind to type/3 instead.
Link to this function

new(resource, name, kind, opts \\ [])

View Source

Create a new aggregate, used with Query.aggregate or Api.aggregate

Options:

  • :path (list of atom/0) - The relationship path to aggregate over. Only used when adding aggregates to a query.

  • :query (term/0) - A base query to use for the aggregate, or a keyword list to be passed to Ash.Query.build/2

  • :field (atom/0) - The field to use for the aggregate. Not necessary for all aggregate types.

  • :default (term/0) - A default value to use for the aggregate if it returns nil.

  • :filterable? (boolean/0) - Whether or not this aggregate may be used in filters.

  • :type (term/0) - A type to use for the aggregate.

  • :constraints (term/0) - Type constraints to use for the aggregate.

  • :implementation (term/0) - The implementation for any custom aggregates.

  • :read_action (atom/0) - The read action to use for the aggregate, defaults to the primary read action.

  • :uniq? (boolean/0) - Whether or not to only consider unique values. Only relevant for count and list aggregates. The default value is false.

  • :join_filters - A map of relationship paths (an atom or list of atoms), to an expression to apply when fetching the aggregate data. See the aggregates guide for more. The default value is %{}.

  • :authorize? (boolean/0) - Whether or not the aggregate query should authorize based on the target action.
    See Ash.Resource.Dsl.aggregates.count for more information. The default value is true.

Link to this function

new(resource, name, kind, relationship, query, field, default \\ nil, filterable? \\ true, type \\ nil, constraints \\ [], implementation \\ nil, uniq? \\ false, read_action \\ nil, authorize? \\ true, join_filters \\ %{})

View Source
This function is deprecated. Use `new/4` instead..
Link to this function

new!(resource, name, kind, opts \\ [])

View Source