Files
music_library/lib/music_library/batch.ex
T
Claudio Ortolina 4ef09b47f4 Unify batching logic
2026-02-10 19:29:54 +00:00

32 lines
651 B
Elixir

defmodule MusicLibrary.Batch do
alias MusicLibrary.Repo
require Logger
def run_on_all(queryable, label, fun) do
stream = Repo.stream(queryable, max_rows: 50)
Repo.transaction(
fn ->
Enum.reduce(stream, [], fn record, acc ->
case fun.(record) do
{:error, reason} ->
Logger.error(
"Failed to run function on #{label} #{record.id} with #{inspect(reason)}"
)
[record.id | acc]
:ok ->
acc
{:ok, _result} ->
acc
end
end)
end,
timeout: :infinity
)
end
end