UNPKG

@decaf-ts/for-couchdb

Version:
65 lines (64 loc) 2.98 kB
import { OrderDirection } from "@decaf-ts/core"; import { Constructor } from "@decaf-ts/decoration"; import { MangoQuery, MangoSelector, SortOrder } from "../types.d.mts"; export type MangoIndexCandidate = { name: string; ddoc: string; fields: string[]; direction?: OrderDirection; source: "table" | "defaultQuery" | "index"; }; export type MangoIndexResolution = { candidate: MangoIndexCandidate; use_index: string | [string, string]; }; export type MangoPlannerLog = { debug?: (message: string) => void; warn?: (message: string) => void; }; export type RequiredMangoIndexShape = { tableName: string; modelName: string; equalityFields: string[]; rangeFields: string[]; sortFields: string[]; sortDirection?: OrderDirection; requiredFields: string[]; }; export type ReversedIndexDeclaration = { attribute: string; compositions: string[]; directions: OrderDirection[]; name: string; ddoc: string; fields: Array<string | Record<string, OrderDirection>>; decorator: string; }; export declare function normalizeSortField(entry: SortOrder): { field: string; direction?: OrderDirection; } | undefined; export declare function getSortFields(query: MangoQuery): string[]; export declare function getSortDirection(query: MangoQuery): OrderDirection | undefined; export declare function getEqualitySelectorFields(selector?: MangoSelector): Set<string>; export declare function getRangeSelectorFields(selector?: MangoSelector): Set<string>; export declare function buildGeneratedIndexCandidates(clazz: Constructor): MangoIndexCandidate[]; export declare function findGeneratedIndexCandidateByName(clazz: Constructor, expectedName: string): MangoIndexCandidate | undefined; export declare function resolveGeneratedIndexForQuery(clazz: Constructor, query: MangoQuery, options?: { preserveDefaultQuery?: boolean; requireSortCoverage?: boolean; }): MangoIndexResolution | undefined; export declare function getRequiredMangoIndexShape(clazz: Constructor, query: MangoQuery): RequiredMangoIndexShape; export declare function reverseRequiredShapeToIndexDeclaration(clazz: Constructor, query: MangoQuery): ReversedIndexDeclaration; export declare function attachGeneratedUseIndex(clazz: Constructor | undefined, query: MangoQuery, log?: MangoPlannerLog, options?: { preserveDefaultQuery?: boolean; requireSortCoverage?: boolean; requireIndex?: boolean; forceNamedIndexes?: boolean; }): void; export declare function requireGeneratedUseIndex(clazz: Constructor, query: MangoQuery, log?: MangoPlannerLog, options?: { requireSortCoverage?: boolean; }): void; export declare function warnScanProneMangoOperators(selector: unknown, log?: MangoPlannerLog, path?: string): void; export declare function ensureDeterministicSort(query: MangoQuery, tieBreaker: string, direction?: OrderDirection): void; export declare function enableMangoExecutionStats(query: MangoQuery): void;