Size: a a a

2020 March 24

ŹR

Źmićer Rubinštejn in pro.elixir
можешь my_query |> execute
источник

ŹR

Źmićer Rubinštejn in pro.elixir
можешь my_query |> inspect |> execute
источник

ŹR

Źmićer Rubinštejn in pro.elixir
чо хочешь
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Можешь даже my_query |> inspect |> IO.inspect |> execute
источник

ŹR

Źmićer Rubinštejn in pro.elixir
inspect - херовое название конечно
источник

ŹR

Źmićer Rubinštejn in pro.elixir
поменяй на plan
источник

AB

Alex Bubnov in pro.elixir
Źmićer Rubinštejn
defmodule MyQueries do
 import Ecto.Query
 alias Ecto.Adapters.Queryable
 alias MyLib.Repo

 def my_query do
   from l in "left",
   left_join: r in "right", on: r.id == l.r_id,
   select: {l.id, r:id}
 end
 
 def inspect(query) do
   Queryable.plan_query(query)
 end
 
 def execute(%Ecto.Query{} = query) do
   Repo.all(query)
 end
 def execute({query, _}) do
   Ecto.Adapters.Postgres.Connection.all(query)
 end
end
ок, ты переписал однострочный POC в модуль, круто.
(правда, не факт, что правильно, но это не суть важно)

в смысле, я в целом в курсе, как код писать, и что приколы для однострочников типа |> elem() |> - они только для однострочников
источник

ŹR

Źmićer Rubinštejn in pro.elixir
В целом смысл в том что есть repo и есть dsl
источник

AB

Alex Bubnov in pro.elixir
явный неймспейсинг(Q.something) - моя вкусовщина, так понятнее и потенциал к коллизиям меньше
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Alex Bubnov
явный неймспейсинг(Q.something) - моя вкусовщина, так понятнее и потенциал к коллизиям меньше
У меня более вкусная вкусовщина - я пишу queries в отдельном модуле
источник

ŹR

Źmićer Rubinštejn in pro.elixir
И накаких коллизий, заверяю
источник

AB

Alex Bubnov in pro.elixir
Alex Bubnov
явный неймспейсинг(Q.something) - моя вкусовщина, так понятнее и потенциал к коллизиям меньше
кстати, сюда же - явные алиасы таблиц в запросах
источник

AB

Alex Bubnov in pro.elixir
Źmićer Rubinštejn
У меня более вкусная вкусовщина - я пишу queries в отдельном модуле
ну у тебя поди еще и схемы на все таблицы написаны =)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Alex Bubnov
ну у тебя поди еще и схемы на все таблицы написаны =)
По нескольку схем на таблицу ты имеешь ввиду? Тогда - да
источник

AB

Alex Bubnov in pro.elixir
не, это замечательно, конечно.
но ситуативно.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я ради PoC могу позволить не писать тесты и доки
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Это максимум позволительного говнокода
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Создать "лишний" модуль или функцию мне обычно не жалко
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Их обычно на этапе ПОСЛЕ PoC очень удобно удвлять из-за низкой связанности
источник

AB

Alex Bubnov in pro.elixir
по-моему, тесты говнокоду в целом ортогональны, но это совсем холивар, не буду об этом отвечать.
источник