Extend Ecto's query API with your own macros

Imagine for a second this is something you're using a lot when programming Elixir and Phoenix: 

```                
Repo.one(
	from u in User,
		where: fragment("lower(?)", u.email) == ^email
)

```

You can write your own Elixir macro to improve your flow. 

```
defmacro lower(arg) do
	quote do: fragment("lower(?)", unquote(arg))
end
```

Then your query can be rewritten like this: 
```
Repo.one(
	from u in User,
		where: lower(u.email) == ^email
)

```

nickciolpan
07 Jul 2020