A repository query with every option resolved to a concrete value — the
shape a IDataSource evaluates.
Produced by the database plugin's normalizeQuery() from the caller's
FindOptions, so an adapter never has to reason about absent fields.
where: Record<string, unknown>
Filter conditions, matched by equality. Empty means no filter.
filter: FilterExpression
Optional portable expression conjoined with where.
orderBy: Record<string, OrderDirection>
Field-to-direction sort specification. Empty means no ordering.
limit: number
Maximum results, or -1 for unlimited.
offset: number
Number of leading rows to skip.
cursor: string
A keyset cursor position, or undefined when the query starts at the
first page. Carried alongside offset rather than replacing it:
an offset says "skip this many from the start" and a cursor says "after
this row", and the two are contradictory — a query carrying both is
refused by name (§3.10).
select: readonly string[]
Field projection. Empty means all fields.