For me that's ecto (an elixir dsl for performing queries). The single defining improvement is I can define reusable building blocks. (This is also why I like react-style frameworks over raw js).
entry_of(record)
|> select_basic_info()
def entry_of(record) do
Entry
|> where(record_id: record.id)
end
def select_basic_info(query) do
query
|> select([entry], BasicEntey.new(entry.foo, entry.bar))
end