4) ElixirConf 2017 - Thinking In Ecto - Darin Wilson

by @darinwilson


Great talk - there were some typos…

at https://youtu.be/YQxopjai0CU?t=697

this won’t work


something like this, however, will

for album <- albums, do: album.tracks

at https://youtu.be/YQxopjai0CU?t=892

a typo in

def with_tracks_longer_than(name, duration) do

should be

def with_tracks_longer_than(query, duration) do

at https://youtu.be/YQxopjai0CU?t=1147

Repo.transaction do

is not valid, it’s does not accept ast, but a function
should be

Repo.transaction(fn ->

at https://youtu.be/YQxopjai0CU?t=1260

in the case of an error, the returned tuple will have four entries

{:error, atom, any, %{optional(atom) => any}}

the code on the slides should be

case result do
  {:error, :album, album_changeset, _changes} -> …
  {:error, :user, user_changeset, _changes} -> …

at https://youtu.be/YQxopjai0CU?t=1288

missed do keyword and the argument to the function
the code should probably be

def check_user_progress(%{user: user}) do

at https://youtu.be/YQxopjai0CU?t=1435

Repo.all/1 will return a list for both queries
the code for the first one should be

=> [%MusinDb.Artist{...}]

As the speaker in the aforementioned talk, this seems as good a place as any to apologize for all of the mistakes.

I usually test all of the code in my slides, but I made a number of changes at the last minute and didn’t go through my usual cross checks. Rest assured, I won’t be making that mistake again :confounded:

I’m very grateful to @idi527 for pointing out the errors. I’m going to take some time to go through everything and update the slides. I’ll also talk to the conf organizers to see what can be done about updating the video.

Again, my apologies. Lesson learned, the hard way (as usual…)


Any mistakes aside, I enjoyed the talk :slight_smile:


I enjoyed yours as well! It’s great that Phoenix and Ecto are getting some interest from the security community :+1:


I’m pretty confident that this talk is the best introduction I’ve seen to Ecto in any medium. It’s very well done.


can someone explain the repo pattern in detail or some resources to learn the repo pattern?

cc @AstonJ @darinwilson

1 Like

Corrected slides are available here - many thanks to @idi527 for pointing the errors out to me

The link requires an authorization access :slight_smile:

There’s a short write-up here that covers the basics, and there are a number of others available if you do a search. None of the ones I read struck me as absolutely definitive, so you might just read through a few different ones and see what you think.

But in the end, I think reading through the docs on Ecto.Repo will tell you most of what you need to know.

1 Like

@AstonJ thanks for splitting this out of the other thread!

I enjoyed the talk, it was a nice ground-up overview of Ecto (which is a lot to cover in a single talk).

It should be working now :slightly_smiling_face:


Thanks @darinwilson! A real entertaining and useful talk :slight_smile:


Thanks @Nefcairon - I’m glad you found it helpful!

1 Like