defmodule Rivet.Utils.Ecto.AtomKeymap do
@moduledoc """
Convert map keys from strings to atoms, recursively, when pulling in from the Db.
Contributor: Brandon Gillespie
"""
@behaviour Ecto.Type
@type t :: map()
def type, do: :map
def dump(m), do: {:ok, m}
def embed_as(_), do: :self
def equal?(a, b), do: a == b
def load(m), do: cast(m)
##############################################################################
def cast(vars) when is_map(vars), do: {:ok, Transmogrify.transmogrify(vars, key_convert: :atom)}
def cast(_), do: :error
end