Refine.Search (Refine v0.1.2)

Copy Markdown

Search functions.

Summary

Types

create_facets_table_return()

@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()}

database_option()

@type database_option() :: {:repo, repo()} | postgrex_option()

facet_config()

@type facet_config() :: %{
  facet_name: String.t(),
  facet_label: String.t() | nil,
  value_column: String.t() | nil,
  label_column: String.t() | nil,
  value_path: String.t() | nil,
  label_path: String.t() | nil,
  width_bucket: [integer() | float()] | nil
}

facets_config()

@type facets_config() :: [facet_config()]

facets_table_config()

@type facets_table_config() :: %{
  facets_table: String.t(),
  source_table: String.t(),
  add_identity_column_if_not_exists: boolean() | nil,
  identity_column: String.t(),
  facets: facets_config(),
  roaringbitmap_type: String.t() | nil
}

postgrex_option()

@type postgrex_option() :: {:timeout, integer() | :infinity} | {:log, boolean()}

repo()

@type repo() :: module()

search_option()

@type search_option() ::
  {:base_query, Ecto.Query.t()}
  | {:facets, map()}
  | {:result_fields, [atom()]}
  | {:limit, integer()}
  | {:offset, integer()}
  | {:repo, repo()}
  | postgrex_option()

search_return()

@type search_return() :: {:ok, search_return_data()} | {:error, Exception.t()}

search_return_data()

@type search_return_data() :: %{types: map(), rows: [map()], facets: map()}

Functions

search(config, opts \\ [])

@spec search(facets_table_config(), [search_option()]) :: search_return()

See: Refine.search/2.