attempt non-atomic update for gallery ordering

This commit is contained in:
byte[] 2020-03-29 23:04:30 -04:00
parent 723bfa213f
commit bd401cf967

View file

@ -255,21 +255,29 @@ defmodule Philomena.Galleries do
[
[
id: interaction.id,
gallery_id: interaction.gallery_id,
image_id: interaction.image_id,
position: interaction_positions[new_index]
]
]
end
end)
changes
|> Enum.map(fn change ->
id = Keyword.fetch!(change, :id)
change = Keyword.delete(change, :id)
Interaction
|> where([i], i.id == ^id)
|> Repo.update_all(set: change)
end)
# Do the update in a single statement
Repo.insert_all(
Interaction,
changes,
on_conflict: {:replace, [:position]},
conflict_target: [:id]
)
# Repo.insert_all(
# Interaction,
# changes,
# on_conflict: {:replace, [:position]},
# conflict_target: [:id]
# )
# Now update all the associated images
Images.reindex_images(Map.keys(requested))