@tanstack/optimistic
Version:
Core optimistic updates library
41 lines (40 loc) • 1.6 kB
TypeScript
import { ConditionOperand, Query } from './schema.js';
import { IStreamBuilder } from '@electric-sql/d2ts';
/**
* Process the groupBy clause in a D2QL query
*/
export declare function processGroupBy(pipeline: IStreamBuilder<Record<string, unknown>>, query: Query, mainTableAlias: string): IStreamBuilder<Record<string, unknown>>;
/**
* Helper function to get an aggregate function based on the function name
*/
export declare function getAggregateFunction(functionName: string, columnRef: string | ConditionOperand, mainTableAlias: string): {
preMap: (data: Record<string, unknown>) => number;
reduce: (values: [number, number][]) => number;
postMap?: ((result: number) => number) | undefined;
} | {
pipe: (stream: IStreamBuilder<Record<string, unknown>>) => IStreamBuilder<import('@electric-sql/d2ts').KeyValue<string, number>>;
} | {
preMap: (data: Record<string, unknown>) => {
sum: number;
count: number;
};
reduce: (values: [{
sum: number;
count: number;
}, number][]) => {
sum: number;
count: number;
};
postMap?: ((result: {
sum: number;
count: number;
}) => number) | undefined;
} | {
preMap: (data: Record<string, unknown>) => number[];
reduce: (values: [number[], number][]) => number[];
postMap?: ((result: number[]) => number) | undefined;
} | {
preMap: (data: Record<string, unknown>) => Map<number, number>;
reduce: (values: [Map<number, number>, number][]) => Map<number, number>;
postMap?: ((result: Map<number, number>) => number) | undefined;
};