@@ -130,9 +130,7 @@ defmodule MusicLibrary.RecordSets do
|
|||||||
|
|
||||||
Repo.delete(item)
|
Repo.delete(item)
|
||||||
|
|
||||||
recompact_positions(record_set.id)
|
recompact_positions(record_set)
|
||||||
|
|
||||||
{:ok, get_record_set!(record_set.id)}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# sobelow_skip ["SQL.Query"]
|
# sobelow_skip ["SQL.Query"]
|
||||||
@@ -236,20 +234,17 @@ defmodule MusicLibrary.RecordSets do
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp recompact_positions(record_set_id) do
|
defp recompact_positions(record_set) do
|
||||||
items =
|
record_set_id = record_set.id
|
||||||
|
|
||||||
|
record_ids =
|
||||||
from(i in RecordSetItem,
|
from(i in RecordSetItem,
|
||||||
where: i.record_set_id == ^record_set_id,
|
where: i.record_set_id == ^record_set_id,
|
||||||
order_by: [asc: i.position]
|
order_by: [asc: i.position],
|
||||||
|
select: i.record_id
|
||||||
)
|
)
|
||||||
|> Repo.all()
|
|> Repo.all()
|
||||||
|
|
||||||
Enum.with_index(items, fn item, index ->
|
reorder_records_in_set(record_set, record_ids)
|
||||||
if item.position != index do
|
|
||||||
item
|
|
||||||
|> Ecto.Changeset.change(position: index)
|
|
||||||
|> Repo.update!()
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user