@getanthill/datastore
Version:
Event-Sourced Datastore
63 lines (62 loc) • 2.88 kB
TypeScript
import type { JSONSchemaType } from 'ajv';
import type { Datastore } from '.';
import type { Any, AnyObject } from '../typings';
export interface MultiQuery {
datastore: string;
model: string;
source: 'events' | 'entities';
query: object;
headers?: any;
raw?: any;
correlationField?: string;
}
export interface Iteration {
query_index: number;
page: number;
version: number;
max_version: number;
is_exhausted: boolean;
cursor_last_id: string;
cursor_last_correlation_id: string;
results: AnyObject[];
}
export declare const ERRORS: {
INCOMPATIBLE_MULTIPLE_HANDLE_OPTIONS: string;
INCOMPATIBLE_MUTATION_ON_EVENTS: string;
};
export declare function objToJsonSchema(obj: Any): JSONSchemaType<Any>;
export declare function defaultWalkMultiSortHandler(a: any, b: any): any;
export declare function sortResults(results: AnyObject[], sortHandler?: (a: any, b: any) => any): AnyObject[];
export declare function getMinVersions(datastores: Map<string, Datastore>, queries: MultiQuery[]): Promise<number[]>;
export declare function getMaxVersions(datastores: Map<string, Datastore>, queries: MultiQuery[]): Promise<number[]>;
export declare function fetchResultsForQuery(datastores: Map<string, Datastore>, query: MultiQuery, pageSize: number, queryIteration: Iteration, opts?: {
version_ordered?: boolean;
}): Promise<AnyObject[]>;
export declare function handleResults(results: Array<AnyObject>, queries: MultiQuery[], iteration: Map<number, Iteration>, handler: (res: any, query: MultiQuery, queryIteration: Iteration, batch_id: number, index: number) => any, opts?: {
handle_in_order?: boolean;
handle_in_parallel?: boolean;
}): Promise<void>;
export declare function handleIterationWithMutation(datastores: Map<string, Datastore>, iteration: Map<number, Iteration>, clonedIteration: Map<number, Iteration>, queries: MultiQuery[], pageSize: number, opts?: {
sleep?: number;
version_ordered?: boolean;
handle_in_order?: boolean;
handle_in_parallel?: boolean;
chunk_size?: number;
}): Promise<void>;
export declare function getLastMatchingCorrelationIdIndex(before: Array<string>, after: Array<string>): number;
export declare function checkOptions(queries: MultiQuery[], opts?: {
sleep?: number;
version_ordered?: boolean;
handle_in_order?: boolean;
handle_in_parallel?: boolean;
chunk_size?: number;
is_mutating?: boolean;
}): void;
export declare function walkMulti(datastores: Map<string, Datastore>, queries: MultiQuery[], pageSize: number | undefined, handler: (res: any, query: MultiQuery, queryIteration: Iteration) => any, opts?: {
sleep?: number;
version_ordered?: boolean;
handle_in_order?: boolean;
handle_in_parallel?: boolean;
chunk_size?: number;
is_mutating?: boolean;
}, sortHandler?: (a: any, b: any) => any): Promise<void>;