Every manifest-driven model mixes in the helpers defined here so calling
Model.filterWhere({ ... }) yields a typed builder with revision-aware
defaults and a small bag of operator helpers (Model.ops).
⚠️ Helpers must be invoked inline where the target field is known:
destructuring const { neq } = Thing.ops is fine, but avoid caching helper
results (for example const isBlocked = neq(id)). Once detached from the
literal, TypeScript can no longer narrow the operator to a specific field,
so it will compile even if you later attach it to the wrong column.
Shared implementation for the typed ModelConstructor.filterWhere surface.
Every manifest-driven model mixes in the helpers defined here so calling
Model.filterWhere({ ... })yields a typed builder with revision-aware defaults and a small bag of operator helpers (Model.ops).⚠️ Helpers must be invoked inline where the target field is known: destructuring
const { neq } = Thing.opsis fine, but avoid caching helper results (for exampleconst isBlocked = neq(id)). Once detached from the literal, TypeScript can no longer narrow the operator to a specific field, so it will compile even if you later attach it to the wrong column.