README.md

# Kerosene

Pagination for Ecto and Phoenix.


## Installation

The package is [available in Hex](https://hex.pm/packages/kerosene), the package can be installed as:

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

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

  Add Kerosene to your `repo.ex`:

        defmodule MyApp.Repo do
          use Ecto.Repo, otp_app: :testapp
          use Kerosene, per_page: 2
        end

## Usage
  Start paginating your queries 

        def index(conn, params) do
          {products, kerosene} = 
          Product
          |> Product.with_lowest_price
          |> Repo.paginate(params)

          render(conn, "index.html", products: products, kerosene: kerosene)
        end

  Add view helpers to your view 

        defmodule MyApp.ProductView do
          use MyApp.Web, :view
          import Kerosene.HTML
        end

  Generate the links using the view helpers

        <%= paginate @conn, @kerosene %>

  If you are you building apis or SPA's, Kerosene has support for json.

      defmodule MyApp.ProductView do
          use MyApp.Web, :view
          import Kerosene.JSON

          def render("index.json", %{products: products, kerosene: kerosene, conn: conn}) do
            %{data: render_many(products, MyApp.ProductView, "product.json"),
              pagination: paginate(conn, kerosene)}
          end

          def render("product.json", %{product: product}) do
            %{id: product.id,
              name: product.name,
              description: product.description,
              price: product.price}
          end
        end


  You can also send in options to paginate helper look at the docs for more details.

## Contributing
	
Please do send pull requests and bug reports, positive feedback is always welcome.


## Acknowledgement

I would like to Thank

    * Matt (@mgwidmann)
    * Drew Olson (@drewolson)
    * Akira Matsuda (@amatsuda)

## License

Please take a look at LICENSE.md