Я бы не сказал, что это плохая практика. Тем не менее, я считаю, что все больше людей, знакомых с Фениксом, имеют хоть какой-то опыт работы с Ecto. Я полагаю, что использование Ecto позволит другим разработчикам быстрее начать вносить свой вклад в ваш проект.
С учетом сказанного, если вы действительно не хотите использовать Ecto, вы можете просто использовать драйвер Elixir для своей базы данных. У вас также есть возможность использовать fragment
для части запроса, которую вы не уверены или не можете написать в самом Ecto. Также есть функция query
, где вы можете выполнить текстовый запрос к вашей базе данных.
Для чего бы вы ни стояли, вы должны написать запрос следующим образом:
MyApp.Repo.one(from p in MyApp.Proxies,
select: %{http_prox: sum(p.http == 1)
socks_prox: sum(p.socks == 1),
ssl_prox: sum(p.is_ssl == 1),
sneak_prox: sum(p.sneakers == 1),
shopify_prox: sum(p.shopify == 1),
google_prox: sum(p.google == 1),
ebay_prox: sum(p.ebay == 1),
strawpoll_prox: sum(p.strawpoll == 1)
})
Имейте в виду, что это не проверено, поскольку Postgres не допускает логическое значение в функции sum, и я не знаю, какую БД вы используете.