AstonJ

AstonJ

4) ElixirConf 2017 - Thinking In Ecto - Darin Wilson

by @darinwilson

First 10 of 13 Posts! Switch mode

idi527

idi527

Great talk - there were some typos…

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

this won’t work

albums.tracks

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
  ...
end

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

Repo.transaction(fn ->
  ...
end)

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} -> …
end

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
  ...
end

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

Repo.all(q1)
=> [%MusinDb.Artist{...}]
darinwilson

darinwilson

Author of Programming Ecto

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_face:

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…)

10
Post #3
griffinbyatt

griffinbyatt

Any mistakes aside, I enjoyed the talk :slight_smile:

darinwilson

darinwilson

Author of Programming Ecto

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

JEG2

JEG2

Author of Designing Elixir Systems with OTP

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

maqbool

maqbool

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

cc @AstonJ @darinwilson

darinwilson

darinwilson

Author of Programming Ecto

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

kokolegorille

kokolegorille

The link requires an authorization access :slight_smile:

darinwilson

darinwilson

Author of Programming Ecto

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.

axelson

axelson

Scenic Core Team

@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).

Last Post!

darinwilson

darinwilson

Author of Programming Ecto

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

Where Next?

Trending in Talks Top

bartblast
A year of Hologram releases in review (v0.5 through v0.8), then a deep dive into where it’s headed next: local-first. Most of it is a to...
New
ElixirConf
Mise en Place for Ecto: Organizing Domain Complexity w/Business Rules-Nicholas Henry|ElixirConf 2025 Comments welcome! Vi...
New
ElixirConf
Extending Elixir with WebAssembly Components - Chris Nelson| ElixirConf US 2025 Comments welcome! View the <span class="h...
New
ElixirConf
From Notebook to Production: Evolution of Elixir Projects - Emmanuel Pinault | ElixirConf US 2025 Comments welcome! View...
New
ElixirConf
You can build an AI agent - Dennis Beatty | ElixirConf US 2025 Comments welcome! View the <span class="hashtag-icon-place...
New
ElixirConf
Building Careers, Balancing Life: Stories from the Elixir World and Beyond | ElixirConf US 2025 Comments welcome! View th...
New
ElixirConf
Engineering Network Protocol Clients - Carlos Souza | ElixirConf US 2025 Comments welcome! View the <span class="hashtag-...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge &amp; Solve. They are GUI (Emerge) and State management (S...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
type1fool
I just stumbled on a newly redesigned elixir-lang.org. :tada: It looks like @Software_Mansion did the work, and I think it is generally a...
New
akoutmos
@hugobarauna and I (Alex Koutmos) have been hard at work on writing a book on Nerves that takes you from simply blinking LEDs to building...
New

We're in Beta

About us Mission Statement