OuterfacesEctoApi.QueryEngine.QueryBuilder (Outerfaces Ecto API v0.2.8)

View Source

Provides dynamic filtering and query building for API endpoints.

Summary

Types

association_field_filter_definition()

@type association_field_filter_definition() ::
  {module(), atom(), [atom()], atom(), {atom(), atom()} | atom(), boolean()}
  | {module(), atom(), [atom()], atom(), {atom(), atom()} | atom(), boolean(),
     any()}

field_filter_definition()

@type field_filter_definition() ::
  {module(), atom(), atom(), {atom(), atom()} | atom(), boolean()}
  | {module(), atom(), atom(), {atom(), atom()} | atom(), boolean(), any()}

field_sort_by_definition()

@type field_sort_by_definition() ::
  {module(), atom(), [atom()], atom(), atom(), boolean()}
  | {module(), atom(), atom(), atom(), boolean()}

filter_spec()

sort_by_spec()

@type sort_by_spec() :: {atom(), field_sort_by_definition()}

Functions

build_index_query(schema, queryable, params, filter_specs, sort_specs \\ [])

@spec build_index_query(
  schema :: module(),
  queryable :: Ecto.Queryable.t(),
  params :: map(),
  filter_specs :: [filter_spec()],
  sort_specs :: [sort_by_spec()]
) :: {:ok, Ecto.Query.t()} | {:error, atom()}

ensure_queryable(queryable, schema)

@spec ensure_queryable(Ecto.Queryable.t(), module()) :: Ecto.Query.t()