Refine. Flop
(Refine v0.3.0)
Copy Markdown
Adapter for using Flop with Refine.
Translates Flop's filter and pagination parameters into Refine search options. Facet value selection (OR sets within a facet) remains part of Refine's own options, while Flop handles field filters and offset pagination.
Summary
Functions
Runs a Refine search using Flop params, resolving the base query and
pagination from opts.
Translates Flop params into Refine search options.
Types
@type create_facets_table_return() :: {:ok, String.t()} | {:error, :column_not_found, String.t()} | {:error, :column_names_not_unique} | {:error, :facets_table_exists, String.t()} | {:error, :identity_column_already_exists, String.t()} | {:error, :identity_column_invalid_type, String.t()} | {:error, :identity_column_not_found, String.t()} | {:error, :invalid_table_name, String.t()} | {:error, :table_names_not_unique} | {:error, Exception.t()}
@type database_option() :: {:repo, repo()} | postgrex_option()
@type database_options() :: [database_option()]
@type facet_configs() :: [facet_config()]
@type facets_table_config() :: %{ add_identity_column_if_not_exists: boolean() | nil, facets_table: String.t(), facets: facet_configs(), identity_column: String.t(), joins: join_configs() | nil, roaringbitmap_type: String.t() | nil, source_table: String.t() } | keyword()
@type flop() :: struct()
@type flop_meta() :: struct()
@type flop_params() :: map()
@type join_configs() :: [join_config()]
@type order_by_entry() :: {String.t(), order_direction()} | {String.t(), order_direction(), sort_nulls()}
@type order_direction() :: :asc | :desc
@type postgrex_options() :: [postgrex_option()]
@type repo() :: module()
@type search_option() :: {:facets, map()} | {:limit, integer()} | {:offset, integer()} | {:order_by, [order_by_entry()]} | {:query, Ecto.Query.t()} | {:repo, repo()} | {:result_fields, [String.t()]} | postgrex_option()
@type search_options() :: [search_option()]
@type search_return() :: {:ok, search_return_data()} | {:error, Exception.t()}
@type sort_nulls() :: :first | :last | :default
Functions
@spec search(facets_table_config(), flop_params(), search_options()) :: search_return()
Runs a Refine search using Flop params, resolving the base query and
pagination from opts.
Returns Refine's search result map with an added flop_meta key holding a
Flop.Meta struct built from the search's total_count.
Raises if the flop dependency is not available; if a schema cannot be
resolved from for or the base query; or if the Flop params are invalid.
@spec to_search_options(flop_params(), search_options()) :: search_options()
Translates Flop params into Refine search options.
Returns opts with :query set to the Flop-filtered query and
:limit / :offset resolved. All other options are passed through.
This does not produce a Flop.Meta struct; use search/3 for that.
Options
:for- the Ecto schema backing the Flop params. Required if no:queryis given, or if the query's source schema can't be determined.:query- a base Ecto query. Defaults to a query built from:for.:limitand:offset- explicit pagination; takes precedence over Flop's. Must be given together or not at all.
Raises if the flop dependency is not available; if a schema cannot be
resolved from for or the base query; or if the Flop params are invalid.