mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 13:33:20 +12:00
27 lines
947 B
Markdown
27 lines
947 B
Markdown
|
# Aggregates
|
||
|
|
||
|
Aggregates in Ash allow for retrieving summary information over groups of related data. A simple example might be to show the "count of published posts for a user".
|
||
|
|
||
|
## Declaring aggregates on a resource
|
||
|
|
||
|
Example:
|
||
|
```elixir
|
||
|
count :count_of_posts, :posts, filter: [published: true]
|
||
|
```
|
||
|
|
||
|
See the documentation for the aggregates section in `Ash.Resource.Dsl.aggregates/1` for more information.
|
||
|
|
||
|
The aggregates declared on a resource allow for declaring a set of named aggregates that can be used by extensions.
|
||
|
They can also be loaded in the query using `Ash.Query.load/2`, or after the fact using `c:Ash.Api.load/2`. Attributes declared on the resource will be keys in the resource's struct.
|
||
|
|
||
|
## Custom aggregates in the query
|
||
|
|
||
|
Example:
|
||
|
```elixir
|
||
|
User
|
||
|
|> Ash.Query.new()
|
||
|
|> Ash.Query.aggregate(:count_of_posts, :count, :posts, filter: [published: true])
|
||
|
```
|
||
|
|
||
|
See the documentation for `Ash.Query.aggregate/4` for more information.
|