MartinVolerich

MartinVolerich

JSON_API: How best to expose an aggreate value in a GET or READ endpoint

I’m still not 100% with my understanding of the JSON_API layers on Ash.

I’ve created an easy and working aggregate to count the number of related (to_many) records on a resource.

But… I’d like to insert that aggregate value into the JSON api response for gets & reads. I’m currently doing that using the previously learned metadata approach - but I’m curious whether there is a better way to do this.

While I’m at it… Are aggregates the best way to go or should I be using some other form of calculated attributes instead.

Thanks
Martin

Marked As Solved

zachdaniel

zachdaniel

Creator of Ash

Ah, so metadata is not necessary for this.

You can use the fields query parameter to include public aggregates (i.e aggregates with public?: true. For example fields[type]=agg_name,other,fields. If you want the aggregate to be included by default, you can set default_fields on the route or the resource level, i.e

default_fields [:the, :list, :of, :fields, :agg_name]

That will make them appear as standard attributes in the response.

Also Liked

MartinVolerich

MartinVolerich

That’s perfect. Many thanks. The trick (at least to me) was to make the aggregate public and to add it manually to he fields list - or fall back (with no fields list) to the default_fields list.

Thanks again. I’m slowly getting there - step by step.

Martin

Last Post!

MartinVolerich

MartinVolerich

That’s perfect. Many thanks. The trick (at least to me) was to make the aggregate public and to add it manually to he fields list - or fall back (with no fields list) to the default_fields list.

Thanks again. I’m slowly getting there - step by step.

Martin

Where Next?

Popular in Questions Top

JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New

Other popular topics Top

Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
AngeloChecked
What learn first? Rust or Elixir Hi Elixir community! I’m here because i want learn a new language. I’m a junior developer and mainly i ...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New

We're in Beta

About us Mission Statement