import { MetaType } from '../metaTypeCreator'; import { QueryFilterConstraints } from '../queryConstraints'; import { QueryFilterConstraintLimitation } from '../queryConstraintsLimitations'; import { GeneralQuery } from '../refs'; import { ErrorEmptyCompositeFilter } from '../error'; import { OriQueryCompositeFilterConstraint } from '../alias'; export type QueryCompositeFilterConstraint = { type: Y; constraints: X; ref: OriQueryCompositeFilterConstraint; }; type QueryCompositeFilter = , QFCs extends QueryFilterConstraints[]>(...queryFilterConstraints: QFCs extends never ? QFCs : QFCs extends never[] ? [ErrorEmptyCompositeFilter] : QueryFilterConstraintLimitation>) => QueryCompositeFilterConstraint; /** * Creates a new {@link QueryCompositeFilterConstraint} that is a conjunction of * the given filter constraints. A conjunction filter includes a document if it * satisfies all of the given filters. * * @param queryConstraints - Optional. The list of * {@link QueryFilterConstraint}s to perform a conjunction for. These must be * created with calls to {@link where}, {@link or}, or {@link and}. * @returns The newly created {@link QueryCompositeFilterConstraint}. */ export type And = QueryCompositeFilter; export type AndCreator = () => And; /** * Creates a new {@link QueryCompositeFilterConstraint} that is a disjunction of * the given filter constraints. A disjunction filter includes a document if it * satisfies any of the given filters. * * @param queryConstraints - Optional. The list of * {@link QueryFilterConstraint}s to perform a disjunction for. These must be * created with calls to {@link where}, {@link or}, or {@link and}. * @returns The newly created {@link QueryCompositeFilterConstraint}. */ export type Or = QueryCompositeFilter; export type OrCreator = () => Or; export {};