httk.serve.optimade.backend.execution

Query execution: runs translated searchers and adapts results for the endpoints.

Classes

StoreResults

Results of a query over one or more searchers.

Functions

execute_query(→ StoreResults)

Module Contents

class httk.serve.optimade.backend.execution.StoreResults(pairs: list[tuple[httk.serve.optimade.backend.adapter.EntrySource, httk.data.query.Searcher]], response_fields: list[str], unknown_response_fields: list[str], limit: int | None, offset: int, total_count: int, recognized_prefixes: tuple[str, Ellipsis])[source]

Results of a query over one or more searchers.

Implements the QueryResults protocol. Iteration yields one ResultRow per entry, whose values map response-field names to values extracted from the matched row objects.

pairs[source]
recognized_prefixes[source]
cur: collections.abc.Iterator[tuple[httk.serve.optimade.backend.adapter.EntrySource, Any]] | None[source]
limit[source]
response_fields[source]
unknown_response_fields[source]
offset[source]
more_data_available = True[source]
count() int[source]

Return all current-filter matches, before pagination.

The endpoint metadata needs the filtered total even after execution has applied page limits and offsets to its searchers. Retaining it here also keeps the value stable once this one-shot result iterator is consumed.

httk.serve.optimade.backend.execution.execute_query(adapter: httk.serve.optimade.backend.adapter.BackendAdapter, entries: list[str], response_fields: list[str], unknown_response_fields: list[str], response_limit: int | None, response_offset: int | None, filter_ast: httk.core.FilterAst | None = None, *, sort: collections.abc.Sequence[tuple[str, bool]] | None = None, debug: bool = False) StoreResults[source]