From 93e65f499f4fe92d85bc97d6a5d78f670e557208 Mon Sep 17 00:00:00 2001 From: preciz Date: Wed, 26 Aug 2026 13:15:31 +0200 Subject: [PATCH] Concatenate query list field once --- lib/plug/conn/query.ex | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/plug/conn/query.ex b/lib/plug/conn/query.ex index 5f436190..90d58af1 100644 --- a/lib/plug/conn/query.ex +++ b/lib/plug/conn/query.ex @@ -427,19 +427,17 @@ defmodule Plug.Conn.Query do # covers non-keyword lists defp encode_pair(parent_field, list, encoder) when is_list(list) do - mapper = fn + field = parent_field <> "[]" + + Enum.map_intersperse(list, ?&, fn value when is_map(value) and map_size(value) != 1 -> raise ArgumentError, "cannot encode maps inside lists when the map has 0 or more than 1 element, " <> "got: #{inspect(value)}" value -> - [?&, encode_pair(parent_field <> "[]", value, encoder)] - end - - list - |> Enum.flat_map(mapper) - |> prune() + encode_pair(field, value, encoder) + end) end # covers nil