defmodule Rivet.Utils.Ecto.MapSet do @moduledoc """ Custom Type to support MapSet Contributor: Brandon Gillespie """ @behaviour Ecto.Type @type t :: MapSet.t() def type, do: MapSet def cast(%MapSet{} = ms), do: ms def cast(list) when is_list(list), do: MapSet.new(list) def cast(_), do: :error def load(%MapSet{} = ms), do: ms def load(ms) when is_list(ms), do: {:ok, cast(ms)} def load(_), do: :error # only support virtual for now def dump(%MapSet{} = ms), do: {:ok, MapSet.to_list(ms)} def dump(_), do: :error def embed_as(_), do: :self def equal?(a, b), do: MapSet.equal?(a, b) end