First pass at uniformed types, specs and docs

- spec public functions (skipping controllers, views, live views and
components)
- use types instead of explanations in docs
- remove redundant docs
- fix typos
This commit is contained in:
Claudio Ortolina
2026-03-06 08:33:11 +00:00
parent 99e30d5fdf
commit 7cf9b4e7f8
81 changed files with 652 additions and 300 deletions
@@ -1,6 +1,7 @@
defmodule MusicLibraryWeb.LiveHelpers.Params do
@pagination Application.compile_env!(:music_library, :pagination)
@spec parse_page(String.t() | nil | term()) :: pos_integer()
def parse_page(nil), do: 1
def parse_page(page) when is_binary(page) do
@@ -12,6 +13,8 @@ defmodule MusicLibraryWeb.LiveHelpers.Params do
def parse_page(_), do: 1
@spec parse_page_size(String.t() | nil | term(), [pos_integer()] | nil, pos_integer()) ::
pos_integer()
def parse_page_size(nil, _allowed, default), do: default
def parse_page_size(page_size, allowed, default) when is_binary(page_size) do
@@ -26,6 +29,7 @@ defmodule MusicLibraryWeb.LiveHelpers.Params do
def parse_page_size(_, _allowed, default), do: default
@spec merge_pagination(map(), map(), non_neg_integer(), keyword()) :: map()
def merge_pagination(params, url_params, total_entries, opts \\ []) do
allowed = Keyword.get(opts, :allowed_page_sizes)
default_page_size = params[:page_size] || @pagination[:default_page_size]
@@ -39,14 +43,18 @@ defmodule MusicLibraryWeb.LiveHelpers.Params do
|> Map.put(:total_entries, total_entries)
end
@spec merge_query(map(), String.t() | nil) :: map()
def merge_query(params, query) do
Map.put(params, :query, query)
end
@spec merge_order(map(), atom()) :: map()
def merge_order(params, order) do
Map.put(params, :order, order)
end
@spec apply_fallback_index(Phoenix.LiveView.Socket.t(), map(), atom(), function()) ::
Phoenix.LiveView.Socket.t()
def apply_fallback_index(socket, params, stream_key, apply_action_fn) do
if get_in(socket.assigns, [:streams, stream_key]) == nil do
apply_action_fn.(socket, :index, params)