defmodule Athena do @moduledoc """ Athena keeps the contexts that define your domain and business logic. Contexts are also responsible for managing your data, regardless if it comes from the database, an external API or others. """ @doc false def model do quote do use Ecto.Schema import Athena.ChangesetHelper import Ecto.Changeset alias Ecto.Changeset @primary_key {:id, :binary_id, autogenerate: true} @foreign_key_type :binary_id @timestamps_opts type: :utc_datetime_usec end end def migration do quote do use Ecto.Migration end end @doc """ When used, dispatch to the appropriate model/etc. """ defmacro __using__(which) when is_atom(which) do apply(__MODULE__, which, []) end end