drizzle-cube
Version:
Drizzle ORM-first semantic layer with Cube.js compatibility. Type-safe analytics and dashboards with SQL injection protection.
40 lines (39 loc) • 1.07 kB
TypeScript
import { CubeClient } from '../client/CubeClient';
export interface CubeMetaField {
name: string;
title: string;
shortTitle: string;
type: string;
}
export interface CubeMetaRelationship {
targetCube: string;
relationship: 'belongsTo' | 'hasOne' | 'hasMany';
joinFields: Array<{
sourceField: string;
targetField: string;
}>;
}
export interface CubeMetaCube {
name: string;
title: string;
description?: string;
measures: CubeMetaField[];
dimensions: CubeMetaField[];
segments: CubeMetaField[];
relationships?: CubeMetaRelationship[];
}
export interface CubeMeta {
cubes: CubeMetaCube[];
}
export type FieldLabelMap = Record<string, string>;
interface UseCubeMetaResult {
meta: CubeMeta | null;
labelMap: FieldLabelMap;
loading: boolean;
error: string | null;
refetch: () => void;
getFieldLabel: (fieldName: string) => string;
}
export declare function clearMetaCache(): void;
export declare function useCubeMeta(cubeApi: CubeClient): UseCubeMetaResult;
export {};