In order to work on my knowledge gap about Ecto Queries that I mentioned yesterday, I started reading Programming Ecto. I have started at the beginning, as the introduction chapter advises to and have read about Ecto.Repo today and I have to admit that my mind feels a bit blown right now.
I had never taken the time before to look into Ecto’s Documentation when I wasn’t looking for the answer to a specific problem. Therefore, I have read a bit about the Query, Changest and Schema modules, but I just never came across a problem with the Repo module, so I never looked into it. First big learning moment: Look into the documentation of every important aspect of a library you are working with!
Second big learning moment: Repo has an
aggregate function! I needed to count some things in some databases several times in the past few weeks and I used Ecto’s Query module to do that. I actually had to google how to do counting operations with Ecto.Query, but I never tried approaching this in another way.
So instead of something like
import Ecto.Query Application.Repo.all(from foo in Application.ReadModel, select: count(foo.id))
I can just type
Application.Repo.aggregate(Application.ReadModel, :count, :id)
So much easier and less error prone!
I feel very stupid and very enlightened at the same time.
And now I’m off to the Christmas Market for our office Christmas party. Cheers.