import type { DocumentByInfo, Indexes, IndexRange, IndexRangeBuilder, NamedIndex, NamedSearchIndex, SearchFilter, SearchFilterBuilder, SearchIndexes } from "convex/server"; import type { GenericId } from "convex/values"; import * as Effect from "effect/Effect"; import * as Schema from "effect/Schema"; import type { BaseDatabaseReader, IndexFieldTypesForEq } from "@confect/core/Types"; import type * as DataModel from "./DataModel"; import * as Document from "./Document"; import * as OrderedQuery from "./OrderedQuery"; import * as QueryStream from "./QueryStream"; import type * as QueryStreamKeyLabels from "./QueryStreamKeyLabels"; import * as QueryStreamIndexRange from "./QueryStreamIndexRange"; import type { QueryStreamOrderDirection as OrderDirection } from "./QueryStreamOrderDirection"; import type * as Table from "./Table"; type ConvexTableInfoFor> = DataModel.TableInfoWithName; type TableInfoFor> = DataModel.TableInfoWithName_; export interface QueryInitializer, Doc = DataModel.DocumentWithName> { readonly get: { (id: GenericId): Effect.Effect; >>(indexName: IndexName, ...indexFieldValues: IndexFieldTypesForEq, TableName, Indexes>[IndexName]>): Effect.Effect; }; readonly index: { >>(indexName: IndexName, indexRange?: (q: IndexRangeBuilder["convexDocument"], NamedIndex, IndexName>>) => IndexRange, order?: OrderDirection): OrderedQuery.OrderedQuery, Doc>; >>(indexName: IndexName, order?: OrderDirection): OrderedQuery.OrderedQuery, Doc>; }; readonly search: >>(indexName: IndexName, searchFilter: (q: SearchFilterBuilder>, NamedSearchIndex, IndexName>>) => SearchFilter) => OrderedQuery.OrderedQuery, Doc>; /** * EXPERIMENTAL—stream-first querying (see `notes/stream-based-querying.md`). * * Like `index`, but returns a {@link QueryStream.QueryStream}: a genuine * Effect `Stream` of documents in index order that stays mergeable and * paginable. * * In SQL terms: an index range scan—`SELECT * FROM table WHERE ORDER * BY [DESC]`; `eq` calls are the equality predicates, the * bound calls are the range predicates. The value is a reusable description * of a query: each run re-runs the index query. * The typed range builder * consumes `eq`-pinned fields from the index's field tuple at the type level, * so the stream's visible label type is exactly the fields that still vary * (the `ORDER BY` columns left after the equality predicates). The order * direction is part of the type too: omitted, it is `"asc"`; a literal is * tracked as that literal, and a value known only at runtime as the union. * The order parameter is either absent or a direction—never `undefined`—so * the type can't claim a literal the runtime default would contradict. */ readonly stream: { > & string, Range extends QueryStreamIndexRange.QueryStreamIndexRange>(indexName: IndexName, indexRange: (q: QueryStreamIndexRange.Builder["convexDocument"], NamedIndex, IndexName>>) => Range): QueryStream.QueryStream>, "asc", Document.DocumentDecodeError, never>; > & string, Range extends QueryStreamIndexRange.QueryStreamIndexRange, Direction extends OrderDirection>(indexName: IndexName, indexRange: (q: QueryStreamIndexRange.Builder["convexDocument"], NamedIndex, IndexName>>) => Range, order: Direction): QueryStream.QueryStream>, Direction, Document.DocumentDecodeError, never>; > & string>(indexName: IndexName): QueryStream.QueryStream, IndexName>>, "asc", Document.DocumentDecodeError, never>; > & string, Direction extends OrderDirection>(indexName: IndexName, order: Direction): QueryStream.QueryStream, IndexName>>, Direction, Document.DocumentDecodeError, never>; }; } export declare const make: >(convexDatabaseReader: BaseDatabaseReader>>, table: Table.WithName) => QueryInitializer, TableName>; export declare const getById: >(convexDatabaseReader: BaseDatabaseReader>>, table: Table.WithName) => (id: GenericId) => Effect.Effect>["document"], Document.DocumentDecodeError | GetByIdFailure, never>; declare const GetByIdFailure_base: Schema.Class, import("effect/Cause").YieldableError>; export declare class GetByIdFailure extends GetByIdFailure_base { get message(): string; } declare const GetByIndexFailure_base: Schema.Class; }>, import("effect/Cause").YieldableError>; export declare class GetByIndexFailure extends GetByIndexFailure_base { get message(): string; } export {}; //# sourceMappingURL=QueryInitializer.d.ts.map