Elixir URL query string builder and parser

Elixir
defmodule QueryString do
  def encode(params) do
    params
    |> Enum.flat_map(fn
      {key, values} when is_list(values) -> Enum.map(values, &{key, &1})
      pair -> [pair]
    end)
    |> URI.encode_query()
  end

  def parse(query) do
    query
    |> String.trim_leading("?")
    |> URI.decode_query()
  end
end