# EctoView Helper functions for creating database views using `Ecto.Query` helpers. ## Installation Add `ecto_view` to your list of dependencies in `mix.exs`: ```elixir def deps do [ {:ecto_view, "~> 1.0"} ] end ``` ## Usage ```elixir defmodule MyApplication.Repo.Migration.CreateViewFoo do use Ecto.Migration use EctoView.Migration # This line **MUST** be after `use Ecto.Migration` def change do query = from foo in "foos", # This **MUST** select from table name, no schemas allowed where: foo.bar == 2137, select: %{ # This **MUST** be a map of selected fields a: foo.a, b: foo.b } create view("foos_view", query) end end ``` If you want, you can also create materialised view using `materialized_view/2` function. If you create materialised view, then you can use `EctoView.refresh_materialized_view/3` function to refresh content of given view. If you will add: ```elixir defmodule MyApplication.Repo do use Ecto.Repo, … use EctoView # … end ``` Then there will be a helper function `Repo.refresh_materialised_view/2` that will call respective function for that repo. The docs can be found at [https://hexdocs.pm/ecto_view](https://hexdocs.pm/ecto_view).