Extract pagination helpers

This commit is contained in:
Claudio Ortolina
2026-02-09 11:09:45 +00:00
parent 0bdad096d0
commit 43fd570d10
6 changed files with 56 additions and 169 deletions
@@ -3,6 +3,7 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
import MusicLibraryWeb.Components.BarcodeScanner, only: [barcode_icon: 1]
import MusicLibraryWeb.Components.Pagination
import MusicLibraryWeb.LiveHelpers.Params
import MusicLibraryWeb.RecordComponents
alias MusicLibrary.Collection
@@ -158,30 +159,6 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
|> stream(:records, records, reset: true)
end
defp merge_query(record_list_params, query) do
Map.put(record_list_params, :query, query)
end
defp merge_order(record_list_params, order) do
Map.put(record_list_params, :order, order)
end
defp merge_pagination(record_list_params, params, total_records) do
record_list_params
|> Map.put(:page, parse_int_or_default(params["page"], record_list_params.page))
|> Map.put(
:page_size,
parse_int_or_default(params["page_size"], record_list_params.page_size)
)
|> Map.put(:total_entries, total_records)
end
defp parse_int_or_default(nil, default), do: default
defp parse_int_or_default(value, _default) when is_binary(value) do
String.to_integer(value)
end
defp parse_order("alphabetical"), do: :alphabetical
defp parse_order("purchase"), do: :purchase
defp parse_order("release"), do: :release