Changelog

Unreleased

[0.12.0] - 2021-08-11

Added

  • Allow to define join fields in Flop.Schema.
  • Allow to define compound fields in Flop.Schema.
  • Support filtering by join fields.
  • Support filtering by compound fields.
  • New filter operator empty.
  • New filter operator not_empty.
  • New function Flop.set_page/2.

Changed

  • Rename option get_cursor_value_func to cursor_value_func.
  • Silently ignore filters with nil value for the field or the value instead of raising an ArgumentError.
  • Allow passing a string as the second argument to Flop.push_order/2.

[0.11.0] - 2021-06-13

Added

Changed

[0.10.0] - 2021-05-03

Added

  • Add function Flop.push_order/2 for updating the order_by and order_directions values of a Flop struct.

[0.9.1] - 2020-10-21

Fixed

[0.9.0] - 2020-10-16

Added

  • Add like, like_and, like_or, ilike, ilike_and and ilike_or filter operators.
  • Add option to disable pagination types globally, for a schema or locally.
  • Add options to disable ordering or filtering.
  • Allow global configuration of get_cursor_value_func, max_limit and default_limit.
  • Add Flop.option type, improve documentation of available options.
  • Add Flop.Cursor.decode!/1.

Changed

  • Refactored the parameter validation. Default limits are now applied to all pagination types. Added validation for the after / before cursor values.
  • Flop.Cursor.decode/1 returns :ok tuple or :error now instead of raising an error if the cursor is invalid.
  • Flop.Cursor.decode/1 returns an error if the decoded cursor value is not a map with atom keys.
  • Improved documentation.

[0.8.4] - 2020-10-14

Fixed

  • Default limit was overriding first / last parameters when building query.

[0.8.3] - 2020-10-14

Fixed

  • Cursor-based pagination: has_next_page? was set when querying with last based on before being set. Likewise, has_previous_page? was set when querying with first based on after being set. Both assumptions are wrong. In both cases, the values are always set to false now.

[0.8.2] - 2020-10-08

Changed

  • Order directions are not restricted anymore for cursor-based pagination.

Fixed

  • Query for cursor-based pagination returned wrong results when using more than one cursor field.
  • Query for cursor-based pagination returned wrong results when using last/before.

[0.8.1] - 2020-10-07

Changed

  • Allow structs in cursor values.

[0.8.0] - 2020-10-07

Added

  • Support for cursor-based pagination. Thanks to @bunker-inspector.
  • Add functions to turn query results into Relay connection format when using cursor-based pagination.

[0.7.1] - 2020-09-04

Fixed

  • Calculation of has_next_page? was wrong.

[0.7.0] - 2020-08-04

Added

Changed

  • Passing a limit without an offset will now set the offset to 0.
  • Passing a page size without a page will now set the page to 1.

[0.6.1] - 2020-06-17

Changed

  • Add Flop to Meta struct.

Fixed

  • Type Flop.Filter.op didn't include all operators.

[0.6.0] - 2020-06-14

Added

[0.5.0] - 2020-05-28

Added

Fixed

  • Filter validation was using sortable fields instead of filterable fields.

[0.4.0] - 2020-05-27

Added

  • Added =~ filter operator.

Fixed

  • Query function wasn't generating valid where clauses for filters.

[0.3.0] - 2020-05-22

Added

[0.2.0] - 2020-05-20

Added

  • Added a max_limit option to Flop.Schema. When set, Flop validates that the limit and page_size parameters don't exceed the configured max limit.

[0.1.0] - 2019-10-19

initial release