import { IDocumentQueryBaseSingle } from "./IDocumentQueryBaseSingle.js"; import { IAggregationDocumentQuery } from "../Queries/Facets/IAggregationDocumentQuery.js"; import { IEnumerableQuery } from "./IEnumerableQuery.js"; import { QueryResult } from "../Queries/QueryResult.js"; import { DocumentType } from "../DocumentAbstractions.js"; import { QueryData } from "../Queries/QueryData.js"; import { GroupBy } from "../Queries/GroupBy.js"; import { IDocumentQueryBase } from "./IDocumentQueryBase.js"; import { IGroupByDocumentQuery } from "./IGroupByDocumentQuery.js"; import { IFacetBuilder } from "../Queries/Facets/IFacetBuilder.js"; import { FacetBase } from "../Queries/Facets/FacetBase.js"; import { IMoreLikeThisBuilderForDocumentQuery } from "../Queries/MoreLikeThis/IMoreLikeThisBuilderForDocumentQuery.js"; import { MoreLikeThisBase } from "../Queries/MoreLikeThis/MoreLikeThisBase.js"; import { ISuggestionBuilder } from "../Queries/Suggestions/ISuggestionBuilder.js"; import { ISuggestionDocumentQuery } from "../Queries/Suggestions/ISuggestionDocumentQuery.js"; import { SuggestionBase } from "../Queries/Suggestions/SuggestionBase.js"; import { ITimeSeriesQueryBuilder } from "../Queries/TimeSeries/ITimeSeriesQueryBuilder.js"; import { TimeSeriesAggregationResult } from "../Queries/TimeSeries/TimeSeriesAggregationResult.js"; import { TimeSeriesRawResult } from "../Queries/TimeSeries/TimeSeriesRawResult.js"; import { Field } from "../../Types/index.js"; import { ProjectionBehavior } from "../Queries/ProjectionBehavior.js"; import { IFilterFactory } from "../Queries/IFilterFactory.js"; import { IQueryShardedContextBuilder } from "./Querying/Sharding/IQueryShardedContextBuilder.js"; import { IVectorOptions } from "../Queries/VectorSearch/VectorSearchOptions.js"; import { IVectorEmbeddingField, IVectorEmbeddingTextField, IVectorField, IVectorFieldFactory, IVectorFieldValueFactory } from "./VectorFieldFactory.js"; /** * A query against a Raven index */ export interface IDocumentQuery extends IDocumentQueryBase>, IDocumentQueryBaseSingle, IEnumerableQuery { indexName: string; /** * Whether we should apply distinct operation to the query on the server side */ isDistinct: boolean; /** * Returns the query result. Accessing this property for the first time will execute the query. */ getQueryResult(): Promise; /** * Selects the specified fields directly from the index if the are stored. * If the field is not stored in index, value * will come from document directly. */ selectFields(property: string, projectionClass: DocumentType): IDocumentQuery; /** * Selects the specified fields directly from the index if the are stored. * If the field is not stored in index, value * will come from document directly. */ selectFields(properties: string[], projectionClass: DocumentType): IDocumentQuery; /** * Selects the specified fields directly from the index if the are stored. * If the field is not stored in index, value * will come from document directly. */ selectFields(properties: string[], projectionClass: DocumentType, projectionBehavior: ProjectionBehavior): IDocumentQuery; /** * Selects the specified fields directly from the index if the are stored. * If the field is not stored in index, value will come from document directly. */ selectFields(properties: string[]): IDocumentQuery; /** * Selects the specified fields directly from the index if the are stored. * If the field is not stored in index, value will come from document directly. */ selectFields(property: string): IDocumentQuery; /** * Selects the specified fields directly from the index if the are stored. * If the field is not stored in index, value will come from document directly. */ selectFields(queryData: QueryData, projectionClass: DocumentType): IDocumentQuery; /** * Selects the specified fields directly from the index if the are stored. * If the field is not stored in index, value will come from document directly. */ selectFields(queryData: QueryData, projectionClass: DocumentType, projectionBehavior: ProjectionBehavior): IDocumentQuery; /** * Selects a Time Series Aggregation based on * a time series query generated by an ITimeSeriesQueryBuilder. * @param timeSeriesQuery query provider * @param projectionClass result class */ selectTimeSeries(timeSeriesQuery: (builder: ITimeSeriesQueryBuilder) => void, projectionClass: DocumentType): IDocumentQuery; /** * Selects a Time Series Aggregation based on * a time series query generated by an ITimeSeriesQueryBuilder. * @param timeSeriesQuery query provider * @param projectionClass result class */ selectTimeSeries(timeSeriesQuery: (builder: ITimeSeriesQueryBuilder) => void, projectionClass: DocumentType): IDocumentQuery; /** * Changes the return type of the query */ ofType(resultClass: DocumentType): IDocumentQuery; groupBy(fieldName: Field, ...fieldNames: string[]): IGroupByDocumentQuery; groupBy(field: GroupBy, ...fields: GroupBy[]): IGroupByDocumentQuery; moreLikeThis(builder: (moreLikeThisBuilder: IMoreLikeThisBuilderForDocumentQuery) => void): IDocumentQuery; moreLikeThis(moreLikeThis: MoreLikeThisBase): IDocumentQuery; /** * Filter allows querying on documents without the need for issuing indexes. * It is meant for exploratory queries or post query filtering. * Criteria are evaluated at query time so please use Filter wisely to avoid performance issues. * @param builder Builder of a Filter query */ filter(builder: (factory: IFilterFactory) => void): IDocumentQuery; /** * Filter allows querying on documents without the need for issuing indexes. * It is meant for exploratory queries or post query filtering. * Criteria are evaluated at query time so please use Filter wisely to avoid performance issues. * @param builder Builder of a Filter query * @param limit Limits the number of documents processed by Filter. */ filter(builder: (factory: IFilterFactory) => void, limit: number): IDocumentQuery; suggestUsing(suggestion: SuggestionBase): ISuggestionDocumentQuery; suggestUsing(action: (builder: ISuggestionBuilder) => void): ISuggestionDocumentQuery; shardContext(action: (builder: IQueryShardedContextBuilder) => void): IDocumentQuery; aggregateBy(action: (builder: IFacetBuilder) => void): IAggregationDocumentQuery; aggregateBy(facet: FacetBase): IAggregationDocumentQuery; aggregateBy(...facet: FacetBase[]): IAggregationDocumentQuery; aggregateUsing(facetSetupDocumentId: string): IAggregationDocumentQuery; vectorSearch(fieldName: Field | ((factory: IVectorFieldFactory) => IVectorField | IVectorEmbeddingField | IVectorEmbeddingTextField), valueFactory: number[] | string | ((factory: IVectorFieldValueFactory) => void), options?: IVectorOptions): IDocumentQuery; } //# sourceMappingURL=IDocumentQuery.d.ts.map