Como usar o sql bruto com o ecto Repo

Eu tenho um requisito de upsert, então preciso chamar um procedimento armazenado do postgres ou usar uma expressão de tabela comum. Eu também uso a extensão pgcrypto para senhas e gostaria de usar as funções do postgres (como "crypt" para codificar / decodificar senhas).

Mas não consigo encontrar uma maneira de fazer com que o Ecto jogue com o sql bruto em parte ou no todo. Será que o ecto suportará apenas o elixir dsl e não permitirá que o sqto bruto seja descascado quando o dsl não for suficiente?

Descobri que posso consultar através do adaptador (Rocket é o nome do aplicativo)

q = Ecto.Adapters.Postgres.query(Rocket.Repo,"select * from users limit 1",[])

Mas não sei como obter isso para o modelo. Eu sou novo no elixir e parece que devo usar o Ecto.Model.Schem.esquema/ 3, mas isso falha

Rocket.User.__schema__(:load,q.rows |> List.first,0)
** (FunctionClauseError) no function clause matching in Rocket.User.__schema__/3    

questionAnswers(8)

yourAnswerToTheQuestion