README.md

# EctoNamedFragment

`EctoNamedFragment` is a library for using named-params in Ecto fragments.

## Installation

Add `ecto_named_fragment` to your list of dependencies in `mix.exs`:

    def deps do
      [{:ecto_named_fragment, "~> 0.1.0"}]
    end

## Usage

Instead of using Ectos `fragment` with ?-based interpolation, `named_fragment` allows you to use named params in your fragments.
`named_fragment` is implemented as a macro on top of Ecto's `fragment` macro.

So `named_fragment("coalesce(:a, :b, :a)", a: 1, b: 2)` will be converted to `fragment("coalesce(?, ?, ?)", 1, 2, 1)` at compile-time.

To use the `named_fragment` macro, `use EctoNamedFragment` in your module:


```elixir
defmodule TestQuery do
  import Ecto.Query
  import EctoNamedFragment

  def test_query do
    left = 1
    right = 2

    query = from u in "users",
      select: named_fragment("coalesce(:left, :right)", left: left, right: right)

    Repo.all(query)
  end
end
```

## License

The entire project is under the MIT License. Please read [the LICENSE file](./LICENSE.md).

### Licensing

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, shall be licensed as above, without any additional terms or conditions.