Puts a key-value pair into a map only if the value is present and valid.
Designed for building configuration maps where optional values should only
be included when explicitly set. Supports multiple input formats commonly
used with Spark DSL introspection functions.
{:ok, value} - Spark/Ash introspection result (value must not be nil){:error, _} - Ignored, returns original map:error - Ignored, returns original map- Direct value - Added if not nil
Examples
iex> %{} |> MishkaGervaz.Helpers.map_put_if_set(:name, {:ok, "John"})
%{name: "John"}
iex> %{} |> MishkaGervaz.Helpers.map_put_if_set(:name, {:ok, nil})
%{}
iex> %{} |> MishkaGervaz.Helpers.map_put_if_set(:name, :error)
%{}
iex> %{} |> MishkaGervaz.Helpers.map_put_if_set(:name, {:error, :not_found})
%{}
iex> %{} |> MishkaGervaz.Helpers.map_put_if_set(:name, "John")
%{name: "John"}
iex> %{} |> MishkaGervaz.Helpers.map_put_if_set(:name, nil)
%{}
iex> %{a: 1} |> MishkaGervaz.Helpers.map_put_if_set(:b, {:ok, 2}) |> MishkaGervaz.Helpers.map_put_if_set(:c, {:ok, 3})
%{a: 1, b: 2, c: 3}