jshprentz

jshprentz

Programming Phoenix LiveView B10.0: Use consistent design for functions that modify queries (page 178)

After showing and demonstrating code for demographic queries, the book looks ahead:

Now let’s apply the same approach to our product ratings query.

However, the product ratings query uses a constructor, not a reducer:

def with_user_ratings(user) do
  base()
  |> preload_user_ratings(user)
end

Compare that with the demographic query reducer on page 177:

def for_user(query \\ base(), user) do
  query
  |> where([d], d.user_id == ^user.id)
end

Other examples later in the book also use the reducer design:

page 242:

  • def with_average_ratings(query \\ base()) do

page 257:

  • def join_users(query \\ base()) do
  • def join_demographics(query \\ base()) do
  • def filter_by_age_group(query \\ base(), filter) do

page 266:

  • def with_zero_ratings(query \\ base()) do

I suggest that the book consistently use the reducer design or explain why the constructor design is preferred for the product ratings query.

Where Next?

Popular Pragmatic Bookshelf topics Top

New
HarryDeveloper
Hi @venkats, It has been mentioned in the description of ‘Supervisory Job’ title that 2 things as mentioned below result in the same eff...
New
jskubick
I’m running Android Studio “Arctic Fox” 2020.3.1 Patch 2, and I’m embarrassed to admit that I only made it to page 8 before running into ...
New
jskubick
I found an issue in Chapter 7 regarding android:backgroundTint vs app:backgroundTint. How to replicate: load chapter-7 from zipfile i...
New
brunogirin
When I run the coverage example to report on missing lines, I get: pytest --cov=cards --report=term-missing ch7 ERROR: usage: pytest [op...
New
brunogirin
When trying to run tox in parallel as explained on page 151, I got the following error: tox: error: argument -p/–parallel: expected one...
New
jwandekoken
Book: Programming Phoenix LiveView, page 142 (157/378), file lib/pento_web/live/product_live/form_component.ex, in the function below: d...
New
Keton
When running the program in chapter 8, “Implementing Combat”, the printout Health before attack was never printed so I assumed something ...
New
New
gorkaio
root_layout: {PentoWeb.LayoutView, :root}, This results in the following following error: no “root” html template defined for PentoWeb...
New

Other popular topics Top

PragmaticBookshelf
Learn from the award-winning programming series that inspired the Elixir language, and go on a step-by-step journey through the most impo...
New
PragmaticBookshelf
Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell. With Seven Languages in Seven Weeks, by Bruce A. Tate, you’ll go beyond the syntax—and...
New
AstonJ
Or looking forward to? :nerd_face:
502 14279 275
New
Exadra37
Please tell us what is your preferred monitor setup for programming(not gaming) and why you have chosen it. Does your monitor have eye p...
New
siddhant3030
I’m thinking of buying a monitor that I can rotate to use as a vertical monitor? Also, I want to know if someone is using it for program...
New
New
foxtrottwist
A few weeks ago I started using Warp a terminal written in rust. Though in it’s current state of development there are a few caveats (tab...
New
New
New
PragmaticBookshelf
Explore the power of Ash Framework by modeling and building the domain for a real-world web application. Rebecca Le @sevenseacat and ...
New

Sub Categories: