Packages

An elixir wrapper around SendInc API Client

Current section

Files

Jump to
sendinc_api_client lib sendinc schema.ex
Raw

lib/sendinc/schema.ex

defmodule Sendinc.Schema do
@moduledoc """
This module defines behaviour a schema must implement to work with
this package.
"""
@doc """
This macro creates a SendInc accessible API Schema abstraction
"""
defmacro sendinc_schema(do: fields) do
quote do
@primary_key false
embedded_schema(do: unquote(fields))
end
end
@doc """
This macro allows us to bring in Schema functionality to a module's
lexical context.
"""
defmacro __using__(opts) do
quote do
use Ecto.Schema
import Ecto.Changeset
import unquote(__MODULE__)
def changeset(struct, params) do
raise "Undefined changeset/2 for #{__MODULE__}"
end
defoverridable [changeset: 2]
end
end
end