@tanstack/db
Version:
A reactive client store for building super fast apps on sync
41 lines (40 loc) • 1.69 kB
TypeScript
import { ConditionOperand, Query } from './schema.js';
import { NamespacedAndKeyedStream } from '../types.js';
/**
* Process the groupBy clause in a D2QL query
*/
export declare function processGroupBy(pipeline: NamespacedAndKeyedStream, query: Query, mainTableAlias: string): NamespacedAndKeyedStream;
/**
* 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: [string, Record<string, unknown>]) => number;
reduce: (values: [number, number][]) => number;
postMap?: ((result: number) => number) | undefined;
} | {
pipe: (stream: import('@electric-sql/d2mini').IStreamBuilder<[string, Record<string, unknown>]>) => import('@electric-sql/d2mini').IStreamBuilder<import('@electric-sql/d2mini').KeyValue<string, number>>;
} | {
preMap: (data: [string, 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: [string, Record<string, unknown>]) => number[];
reduce: (values: [number[], number][]) => number[];
postMap?: ((result: number[]) => number) | undefined;
} | {
preMap: (data: [string, Record<string, unknown>]) => Map<number, number>;
reduce: (values: [Map<number, number>, number][]) => Map<number, number>;
postMap?: ((result: Map<number, number>) => number) | undefined;
};