server_utils v0.1.6 ServerUtils.Parsers.ParamsParser
Module to get an integer()
or a PageParams.t
struct from a request map.
In case of page params parse, it validates the maximum page size request and provides the configured maximum param if it is exceeded.
This project provides a default value, but they can be overriding when using this module as well.
Link to this section Summary
Functions
Parses a page params from a cursor pagination request
Parses a integer value from a request params map
Parses a page params from a request params map
Link to this section Functions
Parses a page params from a cursor pagination request.
It returns the CursorPageRequest.t
with the present values and with the default.
Examples
iex> Elixir.ServerUtils.Parsers.ParamsParser.parse_cursor_page_request(%{"cursor" => "a_cursor", "number_of_items" => 23})
%ServerUtils.Page.CursorPageRequest{cursor: "a_cursor", number_of_items: 23}
iex> Elixir.ServerUtils.Parsers.ParamsParser.parse_cursor_page_request(%{"cursor" => "a_cursor", "number_of_items" => 9000})
%ServerUtils.Page.CursorPageRequest{cursor: "a_cursor",
number_of_items: 50}
iex> Elixir.ServerUtils.Parsers.ParamsParser.parse_cursor_page_request(%{"cursor": "", "number_of_items": 0})
%ServerUtils.Page.CursorPageRequest{cursor: "", number_of_items: 25}
parse_integer_param(map(), String.t(), integer()) :: integer()
Parses a integer value from a request params map.
It returns the integer()
with the parsed value or the default value if the param key is not present or is not an integer.
Examples
iex> Elixir.ServerUtils.Parsers.ParamsParser.parse_integer_param(%{a: 5}, :a, 10)
5
iex> Elixir.ServerUtils.Parsers.ParamsParser.parse_integer_param(%{a: 5}, :b, 10)
10
parse_integer_param!(map(), String.t()) :: integer()
Parses a page params from a request params map.
It returns the PageParams.t
with the given values.
If the given page size exceeds the maxim page size or equal or less than 0, then the default value is returned
Examples
iex> Elixir.ServerUtils.Parsers.ParamsParser.parse_page_params(%{"page_number" => 5, "page_size" => 23})
%ServerUtils.Page.PageParams{page_number: 5, page_size: 23}
# With a configured max_page_size of 50
iex> Elixir.ServerUtils.Parsers.ParamsParser.parse_page_params(%{"page_number" => 5, "page_size" => 9000})
%ServerUtils.Page.PageParams{page_number: 5,
page_size: 25
}
iex> Elixir.ServerUtils.Parsers.ParamsParser.parse_page_params(%{"page_number" => 5, "page_size" => 0})
%ServerUtils.Page.PageParams{page_number: 5, page_size: 10}