Read the richer queries guide. Signatures below come from the published SDK declarations. Access SDK services through db; use their constructors only when integrating at a lower level.
QueryOperator
type QueryOperator =
| "eq"
| "neq"
| "in"
| "gt"
| "gte"
| "lt"
| "lte"
| "is"
| "textSearch"
| "contains"
| "containedBy"
| "overlaps"
| "like"
| "ilike";
FilterOperator
type FilterOperator = QueryOperator | "cs" | "cd" | "ov";
QueryField
type QueryField<T> = Keys<T> | `${JsonRoot<T>}->${string}`;
QueryFieldValue
type QueryFieldValue<T, K extends string> = K extends keyof T
? T[K]
: K extends `${infer Root}->${infer Rest}`
? Root extends keyof T
? Rest extends `>${string}`
? string | null | undefined
: JsonPathValue<T[Root], Rest>
: unknown
: unknown;
DeepPartial
type DeepPartial<T> = T extends readonly (infer V)[]
? readonly DeepPartial<V>[]
: T extends object
? {
[K in keyof T]?: DeepPartial<T[K]>;
}
: T;
FilterValue
type FilterValue<T, O extends FilterOperator> = O extends "in"
? readonly T[]
: O extends "is"
? null | boolean
: O extends "like" | "ilike" | "textSearch"
? string
: O extends "contains" | "containedBy" | "cs" | "cd"
? DeepPartial<T>
: O extends "overlaps" | "ov"
? NonNullable<T> extends readonly unknown[]
? NonNullable<T>
: unknown extends T
? readonly unknown[]
: never
: T;
Supporting declarations
These types appear in public signatures but are not package exports.
PredicateOperator
type PredicateOperator = QueryOperator | "and" | "or" | "not";
Predicate
interface Predicate {
field: string;
op: PredicateOperator;
value: unknown;
}
Keys
type Keys<T> = keyof T & string;
JsonRoot
type JsonRoot<T> = {
[K in Keys<T>]: NonNullable<T[K]> extends object ? K : never;
}[Keys<T>];
Child
type Child<T, K extends string> = K extends keyof NonNullable<T>
? NonNullable<T>[K]
: NonNullable<T> extends readonly (infer V)[]
? K extends `${number}`
? V
: unknown
: unknown;
JsonPathValue
type JsonPathValue<T, P extends string> = P extends `${infer K}->${infer Rest}`
? Rest extends `>${string}`
? string | null | undefined
: JsonPathValue<Child<T, K>, Rest>
: Child<T, P> | undefined;