For convenience and reducing the need to implement custom list_... function clauses, the generated ones should allow specifying preloads and filtering queries as arguments. Example:
iex> list_items()
[%Item{}, ...]
iex> list_items(from r in Item, limit: 10)
[%Item{}, ...]
iex> list_items(query, [:associated])
[%Item{associated: []}, ...]
iex> list_items([:associated])
[%Item{associated: []}, ...]