defmodule Outlook.Articles.RawInternalTree do
  use Ecto.Type

  def type, do: :string

  def cast([] = tree) do
    {:ok, tree}
  end

  def cast(_), do: :error

  def load(tree) when is_binary(tree) do
    {:ok, Jason.decode!(tree, keys: :atoms!)}
  end

  def dump([] = tree ), do: {:ok, Jason.encode!(tree)}
  def dump(_), do: :error

end
