Search documentation of ash

# View Source Ash.Query.Aggregate (ash v3.4.30)

Represents an aggregated association value

# Summary

## Types

kind()
t()

## Functions

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

Create a new aggregate, used with `Query.aggregate` or `Ash.aggregate`

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

# Types

Link to this type

# kind()

View Source

    @type kind() ::
      :custom | :exists | :avg | :min | :max | :list | :sum | :first | :count

Link to this type

# t()

View Source

    @type t() :: %Ash.Query.Aggregate{
      agg_name: term(),
      authorize?: term(),
      constraints: term(),
      context: term(),
      default_value: term(),
      field: term(),
      filterable?: term(),
      implementation: term(),
      include_nil?: term(),
      join_filters: term(),
      kind: term(),
      load: term(),
      name: term(),
      query: term(),
      read_action: term(),
      relationship_path: term(),
      resource: term(),
      sensitive?: term(),
      sortable?: term(),
      type: term(),
      uniq?: term()
    }

# Functions

Link to this function

# default_value(atom)

View Source
Link to this function

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

View Source

Create a new aggregate, used with `Query.aggregate` or `Ash.aggregate`

Options:

- `:path` (list of `atom/0`) - The relationship path to aggregate over. Only used when adding aggregates to a query. The default value is `[]`.

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

- `:field` - The field to use for the aggregate. Not necessary for all aggregate types.

- `:expr` (`term/0`) - An expression to aggregate, cannot be used with `field`.

- `:expr_type` - The type of the expression, required if `expr` is used.

- `:arguments` (`map/0`) - Arguments to pass to the field, if field is a calculation.

- `: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. The default value is `true`.

- `:sortable?` (`boolean/0`) - Whether or not this aggregate may be used in sorts. The default value is `true`.

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

- `:constraints` (`term/0`) - Type constraints to use for the aggregate. The default value is `[]`.

- `: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`.

- `:include_nil?` (`boolean/0`) - Whether or not to include `nil` values in the aggregate. Only relevant for `list` and `first` aggregates. The default value is `false`.

- `:join_filters` (map of one or a list of `atom/0` keys and `term/0` values) - 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 `%{}`.

- `:sensitive?` (`boolean/0`) - Whether or not references to this aggregate will be considered sensitive The default value is `false`.

- `: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, opts \\ [])

View Source