lib/ma_crud.ex

defmodule MaCrud do
  @moduledoc """
  Documentation for `MaCrud`.
  """

  defmacro __using__(_) do
    quote do
      require MaCrud
    end
  end

  defmacro generate(schema, opts \\ []) do
    quote do
      require MaCrud.Context
      MaCrud.Context.generate_functions(unquote(schema), unquote(opts))
    end
  end

  @doc """
  ## Examples

      iex> MaCrud.default create: :create_changeset, update: :update_changeset
      :ok

      iex> MaCrud.default only: [:create, :list]
      :ok

      iex> MaCrud.default except: [:get!, :list, :delete]
      :ok
  """

  defmacro default(opts) do
    quote do
      require MaCrud.Context
      MaCrud.Context.default(unquote(opts))
    end
  end
end