UNPKG

drizzle-cube

Version:

Drizzle ORM-first semantic layer with Cube.js compatibility. Type-safe analytics and dashboards with SQL injection protection.

107 lines (106 loc) 3.89 kB
import { CubeQuery, Filter, SimpleFilter, GroupFilter } from '../types'; import { MetaField, MetaResponse } from './types'; /** * Check if a filter is a simple filter */ export declare function isSimpleFilter(filter: Filter): filter is SimpleFilter; /** * Check if a filter is a group filter */ export declare function isGroupFilter(filter: Filter): filter is GroupFilter; /** * Check if a filter is an AND filter */ export declare function isAndFilter(filter: Filter): filter is GroupFilter; /** * Check if a filter is an OR filter */ export declare function isOrFilter(filter: Filter): filter is GroupFilter; /** * Flatten all simple filters from a hierarchical filter structure */ export declare function flattenFilters(filters: Filter[]): SimpleFilter[]; /** * Count total filters in hierarchical structure */ export declare function countFilters(filters: Filter[]): number; /** * Create a new simple filter */ export declare function createSimpleFilter(member: string, operator?: string, values?: any[]): SimpleFilter; /** * Create a new AND filter group */ export declare function createAndFilter(filters?: Filter[]): GroupFilter; /** * Create a new OR filter group */ export declare function createOrFilter(filters?: Filter[]): GroupFilter; /** * Clean up filters - backward compatible (returns filters unchanged) * @deprecated This function is no longer used as we now support filtering on any schema field */ export declare function cleanupFilters(filters: Filter[], _query?: CubeQuery): Filter[]; /** * Transform filters from new GroupFilter format to legacy server format * Server expects { and: [...] } and { or: [...] } instead of { type: 'and', filters: [...] } */ export declare function transformFiltersForServer(filters: Filter[]): any[]; /** * Transform filters from server/API format to UI format * Converts {and: [...]} and {or: [...]} to {type: 'and', filters: [...]} format */ export declare function transformFiltersFromServer(filters: any[]): Filter[]; /** * Check if query has any content (measures, dimensions, or timeDimensions) */ export declare function hasQueryContent(query: CubeQuery): boolean; /** * Clean query object by removing empty arrays */ export declare function cleanQuery(query: CubeQuery): CubeQuery; /** * Clean a query and transform filters for server compatibility * This version transforms GroupFilter to legacy and/or format */ export declare function cleanQueryForServer(query: CubeQuery): CubeQuery; /** * Transform a Cube.js query from external format to UI internal format * This handles format differences between server/API queries and QueryBuilder state */ export declare function transformQueryForUI(query: any): CubeQuery; /** * Get cube name from field name (e.g., "Employees.count" -> "Employees") */ export declare function getCubeNameFromField(fieldName: string): string; /** * Get field type from schema */ export declare function getFieldType(fieldName: string, schema: MetaResponse): string; /** * Get field title from schema metadata, falling back to field name */ export declare function getFieldTitle(fieldName: string, schema: MetaResponse | null): string; /** * Get available operators for a field type */ export declare function getAvailableOperators(fieldType: string): Array<{ operator: string; label: string; }>; /** * Get ALL filterable fields from schema */ export declare function getAllFilterableFields(schema: MetaResponse): MetaField[]; /** * Convert DateRangeType to Cube.js compatible date range format */ export declare function convertDateRangeTypeToValue(rangeType: string, number?: number): string; /** * Check if a date range type requires a number input */ export declare function requiresNumberInput(rangeType: string): boolean; /** * Format date for Cube.js (YYYY-MM-DD) */ export declare function formatDateForCube(date: Date): string;