drizzle-cube
Version:
Drizzle ORM-first semantic layer with Cube.js compatibility. Type-safe analytics and dashboards with SQL injection protection.
37 lines (36 loc) • 1.34 kB
TypeScript
import { CubeQueryOptions, CubeResultSet, MultiQueryConfig } from '../types';
export interface UseMultiCubeQueryResult {
/** Merged data from all queries (null while loading) */
data: unknown[] | null;
/** Individual result sets from each query */
resultSets: CubeResultSet[] | null;
/** Whether any query is still loading */
isLoading: boolean;
/** First error encountered (null if all succeeded) */
error: Error | null;
/** Per-query errors (null for successful queries) */
errors: (Error | null)[];
/** Unique identifier for this query execution */
queryId: string | null;
}
/**
* Hook for executing multiple Cube queries with merged results
*
* @param config - MultiQueryConfig containing queries and merge settings
* @param options - Query options (skip, resetResultSetOnChange)
* @returns Query results with merged data and per-query error tracking
*
* @example
* ```typescript
* const { data, isLoading, error } = useMultiCubeQuery({
* queries: [
* { measures: ['Sales.revenue'] },
* { measures: ['Costs.total'] }
* ],
* mergeStrategy: 'merge',
* mergeKey: 'Sales.date',
* queryLabels: ['Revenue', 'Costs']
* })
* ```
*/
export declare function useMultiCubeQuery(config: MultiQueryConfig | null, options?: CubeQueryOptions): UseMultiCubeQueryResult;