Current section
Files
Jump to
Current section
Files
lib/ecto_press.ex
defmodule EctoPress do
@moduledoc """
EctoPress is a library to easily generate context modules in Elixir.
Using a simple DSL you can automatically generate the boilerplate for simple context functions.
You can extend this behavior by providing your own resource provider.
See the `EctoPress.DSL` module for more information.
## Examples
```elixir
defmodule MyApp.MyContext do
use EctoPress, repo: MyApp.Repo, resource_provider: MyApp.MyResourceProvider
resource User, MyApp.User
resource Post, MyApp.Post, plural: "articles", only: [:list, :get]
end
iex> MyContext.list_users()
[%MyApp.User{}, ...]
iex> MyContext.list_articles()
[%MyApp.Post{}, ...]
```
"""
@doc """
Use this module to setup your context module.
Delegates to `EctoPress.DSL`.
## Options
- `:repo`: The repo to use for the resources. Defaults to the repo set in the DSL.
- `:resource_provider`: The resource provider to use for the resources. Defaults to `EctoPress.BaseResourceProvider`. Must implement the `EctoPress.ResourceProvider` behaviour.
## Examples
```elixir
defmodule MyApp.MyContext do
use EctoPress, repo: MyApp.Repo, resource_provider: MyApp.MyResourceProvider
resource User, MyApp.User
resource Post, MyApp.Post, plural: "articles", only: [:list, :get]
end
```
"""
defmacro __using__(opts) do
EctoPress.DSL.using_macro(opts)
end
end