Current section
Files
Jump to
Current section
Files
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