Skip to content

Commit 1de9ba2

Browse files
authored
Handle empty list argument without raising error (#4686)
1 parent 8f1ef29 commit 1de9ba2

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

lib/ecto/repo/queryable.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ defmodule Ecto.Repo.Queryable do
9090
one!(name, query_for_get_by(queryable, clauses), opts)
9191
end
9292

93+
def reload(_name, [], _opts), do: []
94+
9395
def reload(name, [head | _] = structs, opts) when is_list(structs) do
9496
results = all(name, query_for_reload(structs), opts)
9597

@@ -105,6 +107,8 @@ defmodule Ecto.Repo.Queryable do
105107
one(name, query_for_reload([struct]), opts)
106108
end
107109

110+
def reload!(_name, [], _opts), do: []
111+
108112
def reload!(name, [head | _] = structs, opts) when is_list(structs) do
109113
query = query_for_reload(structs)
110114
results = all(name, query, opts)

test/ecto/repo_test.exs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,14 @@ defmodule Ecto.RepoTest do
350350
TestRepo.reload(struct_with_custom_source)
351351
assert_received {:all, %{from: %{source: {"custom_schema", MySchema}}}}
352352
end
353+
354+
test "returns empty list when given empty list" do
355+
assert TestRepo.reload([]) == []
356+
end
357+
358+
test "reload! returns empty list when given empty list" do
359+
assert TestRepo.reload!([]) == []
360+
end
353361
end
354362

355363
defmodule DefaultOptionRepo do

0 commit comments

Comments
 (0)