drizzle-cube 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +24 -2
  2. package/dist/adapters/hono/index.d.ts +5 -1
  3. package/dist/adapters/hono/index.js +259 -96
  4. package/dist/client/client/CubeClient.d.ts +15 -0
  5. package/dist/client/components/AnalyticsDashboard.d.ts +2 -0
  6. package/dist/client/components/AnalyticsPage.d.ts +1 -0
  7. package/dist/client/components/AnalyticsPortlet.d.ts +6 -0
  8. package/dist/client/components/ChartConfigEditor.d.ts +8 -0
  9. package/dist/client/components/ChartErrorBoundary.d.ts +21 -0
  10. package/dist/client/components/DashboardEditModal.d.ts +14 -0
  11. package/dist/client/components/DashboardGrid.d.ts +11 -0
  12. package/dist/client/components/Modal.d.ts +16 -0
  13. package/dist/client/components/PortletContainer.d.ts +10 -0
  14. package/dist/client/components/PortletEditModal.d.ts +12 -0
  15. package/dist/client/components/QueryBuilder/CubeMetaExplorer.d.ts +4 -0
  16. package/dist/client/components/QueryBuilder/QueryPanel.d.ts +4 -0
  17. package/dist/client/components/QueryBuilder/ResultsPanel.d.ts +4 -0
  18. package/dist/client/components/QueryBuilder/SetupPanel.d.ts +11 -0
  19. package/dist/client/components/QueryBuilder/index.d.ts +3 -0
  20. package/dist/client/components/QueryBuilder/types.d.ts +132 -0
  21. package/dist/client/components/QueryBuilder/utils.d.ts +42 -0
  22. package/dist/client/components/charts/AreaChart.d.ts +2 -0
  23. package/dist/client/components/charts/BarChart.d.ts +2 -0
  24. package/dist/client/components/charts/ChartContainer.d.ts +7 -0
  25. package/dist/client/components/charts/ChartLegend.d.ts +7 -0
  26. package/dist/client/components/charts/ChartTooltip.d.ts +7 -0
  27. package/dist/client/components/charts/DataTable.d.ts +2 -0
  28. package/dist/client/components/charts/LineChart.d.ts +2 -0
  29. package/dist/client/components/charts/PieChart.d.ts +2 -0
  30. package/dist/client/components/charts/RadarChart.d.ts +2 -0
  31. package/dist/client/components/charts/RadialBarChart.d.ts +2 -0
  32. package/dist/client/components/charts/ScatterChart.d.ts +2 -0
  33. package/dist/client/components/charts/TreeMapChart.d.ts +2 -0
  34. package/dist/client/components/charts/index.d.ts +13 -0
  35. package/dist/client/hooks/useCubeQuery.d.ts +8 -0
  36. package/dist/client/index.d.ts +15 -0
  37. package/dist/client/index.js +25439 -4
  38. package/dist/client/providers/CubeProvider.d.ts +15 -0
  39. package/dist/client/styles.css +1 -0
  40. package/dist/client/types.d.ts +111 -0
  41. package/dist/client/utils/chartConstants.d.ts +15 -0
  42. package/dist/client/utils/chartUtils.d.ts +9 -0
  43. package/dist/client/utils/index.d.ts +87 -0
  44. package/dist/server/index.d.ts +84 -1155
  45. package/dist/server/index.js +1046 -2826
  46. package/package.json +14 -3
@@ -1,9 +1,4 @@
1
1
  import { AnyColumn } from 'drizzle-orm';
2
- import { Many } from 'drizzle-orm';
3
- import { One } from 'drizzle-orm';
4
- import { PgColumn } from 'drizzle-orm/pg-core';
5
- import { PgTableWithColumns } from 'drizzle-orm/pg-core';
6
- import { Relations } from 'drizzle-orm';
7
2
  import { SQL } from 'drizzle-orm';
8
3
 
9
4
  /**
@@ -13,7 +8,7 @@ export declare abstract class BaseDatabaseExecutor<TSchema extends Record<string
13
8
  db: DrizzleDatabase<TSchema>;
14
9
  schema?: TSchema | undefined;
15
10
  constructor(db: DrizzleDatabase<TSchema>, schema?: TSchema | undefined);
16
- abstract execute<T = any[]>(query: SQL | any): Promise<T>;
11
+ abstract execute<T = any[]>(query: SQL | any, measureFields?: string[]): Promise<T>;
17
12
  abstract getEngineType(): 'postgres' | 'mysql' | 'sqlite';
18
13
  }
19
14
 
@@ -106,6 +101,8 @@ export declare interface Cube<TSchema extends Record<string, any> = Record<strin
106
101
  dimensions: Record<string, Dimension<TSchema>>;
107
102
  /** Cube measures using direct column references */
108
103
  measures: Record<string, Measure<TSchema>>;
104
+ /** Optional joins to other cubes for multi-cube queries */
105
+ joins?: Record<string, CubeJoin<TSchema>>;
109
106
  }
110
107
 
111
108
  /**
@@ -150,14 +147,6 @@ export declare interface CubeMetadata {
150
147
  segments: any[];
151
148
  }
152
149
 
153
- /**
154
- * Enhanced Cube with join definitions for multi-cube support
155
- */
156
- export declare interface CubeWithJoins<TSchema extends Record<string, any> = Record<string, any>> extends Cube<TSchema> {
157
- /** Joins to other cubes for multi-cube queries */
158
- joins?: Record<string, CubeJoin<TSchema>>;
159
- }
160
-
161
150
  /**
162
151
  * Database executor that wraps Drizzle ORM
163
152
  * Provides type-safe SQL execution with engine-specific implementations
@@ -168,7 +157,7 @@ export declare interface DatabaseExecutor<TSchema extends Record<string, any> =
168
157
  /** Optional schema for type inference */
169
158
  schema?: TSchema;
170
159
  /** Execute a Drizzle SQL query or query object */
171
- execute<T = any[]>(query: SQL | any): Promise<T>;
160
+ execute<T = any[]>(query: SQL | any, measureFields?: string[]): Promise<T>;
172
161
  /** Get the database engine type */
173
162
  getEngineType(): 'postgres' | 'mysql' | 'sqlite';
174
163
  }
@@ -194,121 +183,6 @@ export declare function defineLegacyCube<TSchema extends Record<string, any>>(_s
194
183
  name: string;
195
184
  }): SemanticCube<TSchema>;
196
185
 
197
- export declare const departments: PgTableWithColumns< {
198
- name: "departments";
199
- schema: undefined;
200
- columns: {
201
- id: PgColumn< {
202
- name: "id";
203
- tableName: "departments";
204
- dataType: "number";
205
- columnType: "PgInteger";
206
- data: number;
207
- driverParam: string | number;
208
- notNull: true;
209
- hasDefault: false;
210
- isPrimaryKey: true;
211
- isAutoincrement: false;
212
- hasRuntimeDefault: false;
213
- enumValues: undefined;
214
- baseColumn: never;
215
- identity: undefined;
216
- generated: undefined;
217
- }, {}, {}>;
218
- name: PgColumn< {
219
- name: "name";
220
- tableName: "departments";
221
- dataType: "string";
222
- columnType: "PgText";
223
- data: string;
224
- driverParam: string;
225
- notNull: true;
226
- hasDefault: false;
227
- isPrimaryKey: false;
228
- isAutoincrement: false;
229
- hasRuntimeDefault: false;
230
- enumValues: [string, ...string[]];
231
- baseColumn: never;
232
- identity: undefined;
233
- generated: undefined;
234
- }, {}, {}>;
235
- description: PgColumn< {
236
- name: "description";
237
- tableName: "departments";
238
- dataType: "string";
239
- columnType: "PgText";
240
- data: string;
241
- driverParam: string;
242
- notNull: false;
243
- hasDefault: false;
244
- isPrimaryKey: false;
245
- isAutoincrement: false;
246
- hasRuntimeDefault: false;
247
- enumValues: [string, ...string[]];
248
- baseColumn: never;
249
- identity: undefined;
250
- generated: undefined;
251
- }, {}, {}>;
252
- organisation: PgColumn< {
253
- name: "organisation";
254
- tableName: "departments";
255
- dataType: "number";
256
- columnType: "PgInteger";
257
- data: number;
258
- driverParam: string | number;
259
- notNull: true;
260
- hasDefault: false;
261
- isPrimaryKey: false;
262
- isAutoincrement: false;
263
- hasRuntimeDefault: false;
264
- enumValues: undefined;
265
- baseColumn: never;
266
- identity: undefined;
267
- generated: undefined;
268
- }, {}, {}>;
269
- createdAt: PgColumn< {
270
- name: "created_at";
271
- tableName: "departments";
272
- dataType: "date";
273
- columnType: "PgTimestamp";
274
- data: Date;
275
- driverParam: string;
276
- notNull: false;
277
- hasDefault: true;
278
- isPrimaryKey: false;
279
- isAutoincrement: false;
280
- hasRuntimeDefault: false;
281
- enumValues: undefined;
282
- baseColumn: never;
283
- identity: undefined;
284
- generated: undefined;
285
- }, {}, {}>;
286
- updatedAt: PgColumn< {
287
- name: "updated_at";
288
- tableName: "departments";
289
- dataType: "date";
290
- columnType: "PgTimestamp";
291
- data: Date;
292
- driverParam: string;
293
- notNull: false;
294
- hasDefault: true;
295
- isPrimaryKey: false;
296
- isAutoincrement: false;
297
- hasRuntimeDefault: false;
298
- enumValues: undefined;
299
- baseColumn: never;
300
- identity: undefined;
301
- generated: undefined;
302
- }, {}, {}>;
303
- };
304
- dialect: "pg";
305
- }>;
306
-
307
- export declare const departmentsRelations: Relations<"departments", {
308
- organisation: One<"organisations", true>;
309
- employees: Many<"employees">;
310
- }>;
311
-
312
186
  /**
313
187
  * Dimension definition
314
188
  */
@@ -374,785 +248,6 @@ export declare type DrizzleDatabase<TSchema extends Record<string, any> = Record
374
248
  schema?: TSchema;
375
249
  };
376
250
 
377
- export declare const employees: PgTableWithColumns< {
378
- name: "employees";
379
- schema: undefined;
380
- columns: {
381
- id: PgColumn< {
382
- name: "id";
383
- tableName: "employees";
384
- dataType: "number";
385
- columnType: "PgInteger";
386
- data: number;
387
- driverParam: string | number;
388
- notNull: true;
389
- hasDefault: false;
390
- isPrimaryKey: true;
391
- isAutoincrement: false;
392
- hasRuntimeDefault: false;
393
- enumValues: undefined;
394
- baseColumn: never;
395
- identity: undefined;
396
- generated: undefined;
397
- }, {}, {}>;
398
- name: PgColumn< {
399
- name: "name";
400
- tableName: "employees";
401
- dataType: "string";
402
- columnType: "PgText";
403
- data: string;
404
- driverParam: string;
405
- notNull: true;
406
- hasDefault: false;
407
- isPrimaryKey: false;
408
- isAutoincrement: false;
409
- hasRuntimeDefault: false;
410
- enumValues: [string, ...string[]];
411
- baseColumn: never;
412
- identity: undefined;
413
- generated: undefined;
414
- }, {}, {}>;
415
- email: PgColumn< {
416
- name: "email";
417
- tableName: "employees";
418
- dataType: "string";
419
- columnType: "PgText";
420
- data: string;
421
- driverParam: string;
422
- notNull: true;
423
- hasDefault: false;
424
- isPrimaryKey: false;
425
- isAutoincrement: false;
426
- hasRuntimeDefault: false;
427
- enumValues: [string, ...string[]];
428
- baseColumn: never;
429
- identity: undefined;
430
- generated: undefined;
431
- }, {}, {}>;
432
- active: PgColumn< {
433
- name: "active";
434
- tableName: "employees";
435
- dataType: "boolean";
436
- columnType: "PgBoolean";
437
- data: boolean;
438
- driverParam: boolean;
439
- notNull: false;
440
- hasDefault: true;
441
- isPrimaryKey: false;
442
- isAutoincrement: false;
443
- hasRuntimeDefault: false;
444
- enumValues: undefined;
445
- baseColumn: never;
446
- identity: undefined;
447
- generated: undefined;
448
- }, {}, {}>;
449
- fteBasis: PgColumn< {
450
- name: "fte_basis";
451
- tableName: "employees";
452
- dataType: "string";
453
- columnType: "PgNumeric";
454
- data: string;
455
- driverParam: string;
456
- notNull: false;
457
- hasDefault: true;
458
- isPrimaryKey: false;
459
- isAutoincrement: false;
460
- hasRuntimeDefault: false;
461
- enumValues: undefined;
462
- baseColumn: never;
463
- identity: undefined;
464
- generated: undefined;
465
- }, {}, {}>;
466
- startDate: PgColumn< {
467
- name: "start_date";
468
- tableName: "employees";
469
- dataType: "date";
470
- columnType: "PgTimestamp";
471
- data: Date;
472
- driverParam: string;
473
- notNull: false;
474
- hasDefault: false;
475
- isPrimaryKey: false;
476
- isAutoincrement: false;
477
- hasRuntimeDefault: false;
478
- enumValues: undefined;
479
- baseColumn: never;
480
- identity: undefined;
481
- generated: undefined;
482
- }, {}, {}>;
483
- endDate: PgColumn< {
484
- name: "end_date";
485
- tableName: "employees";
486
- dataType: "date";
487
- columnType: "PgTimestamp";
488
- data: Date;
489
- driverParam: string;
490
- notNull: false;
491
- hasDefault: false;
492
- isPrimaryKey: false;
493
- isAutoincrement: false;
494
- hasRuntimeDefault: false;
495
- enumValues: undefined;
496
- baseColumn: never;
497
- identity: undefined;
498
- generated: undefined;
499
- }, {}, {}>;
500
- department: PgColumn< {
501
- name: "department";
502
- tableName: "employees";
503
- dataType: "number";
504
- columnType: "PgInteger";
505
- data: number;
506
- driverParam: string | number;
507
- notNull: false;
508
- hasDefault: false;
509
- isPrimaryKey: false;
510
- isAutoincrement: false;
511
- hasRuntimeDefault: false;
512
- enumValues: undefined;
513
- baseColumn: never;
514
- identity: undefined;
515
- generated: undefined;
516
- }, {}, {}>;
517
- supplier: PgColumn< {
518
- name: "supplier";
519
- tableName: "employees";
520
- dataType: "number";
521
- columnType: "PgInteger";
522
- data: number;
523
- driverParam: string | number;
524
- notNull: false;
525
- hasDefault: false;
526
- isPrimaryKey: false;
527
- isAutoincrement: false;
528
- hasRuntimeDefault: false;
529
- enumValues: undefined;
530
- baseColumn: never;
531
- identity: undefined;
532
- generated: undefined;
533
- }, {}, {}>;
534
- organisation: PgColumn< {
535
- name: "organisation";
536
- tableName: "employees";
537
- dataType: "number";
538
- columnType: "PgInteger";
539
- data: number;
540
- driverParam: string | number;
541
- notNull: true;
542
- hasDefault: false;
543
- isPrimaryKey: false;
544
- isAutoincrement: false;
545
- hasRuntimeDefault: false;
546
- enumValues: undefined;
547
- baseColumn: never;
548
- identity: undefined;
549
- generated: undefined;
550
- }, {}, {}>;
551
- createdAt: PgColumn< {
552
- name: "created_at";
553
- tableName: "employees";
554
- dataType: "date";
555
- columnType: "PgTimestamp";
556
- data: Date;
557
- driverParam: string;
558
- notNull: false;
559
- hasDefault: true;
560
- isPrimaryKey: false;
561
- isAutoincrement: false;
562
- hasRuntimeDefault: false;
563
- enumValues: undefined;
564
- baseColumn: never;
565
- identity: undefined;
566
- generated: undefined;
567
- }, {}, {}>;
568
- updatedAt: PgColumn< {
569
- name: "updated_at";
570
- tableName: "employees";
571
- dataType: "date";
572
- columnType: "PgTimestamp";
573
- data: Date;
574
- driverParam: string;
575
- notNull: false;
576
- hasDefault: true;
577
- isPrimaryKey: false;
578
- isAutoincrement: false;
579
- hasRuntimeDefault: false;
580
- enumValues: undefined;
581
- baseColumn: never;
582
- identity: undefined;
583
- generated: undefined;
584
- }, {}, {}>;
585
- };
586
- dialect: "pg";
587
- }>;
588
-
589
- export declare const employeesRelations: Relations<"employees", {
590
- organisation: One<"organisations", true>;
591
- department: One<"departments", false>;
592
- supplier: One<"suppliers", false>;
593
- }>;
594
-
595
- export declare type ExampleSchema = typeof exampleSchema;
596
-
597
- export declare const exampleSchema: {
598
- organisations: PgTableWithColumns< {
599
- name: "organisations";
600
- schema: undefined;
601
- columns: {
602
- id: PgColumn< {
603
- name: "id";
604
- tableName: "organisations";
605
- dataType: "number";
606
- columnType: "PgInteger";
607
- data: number;
608
- driverParam: string | number;
609
- notNull: true;
610
- hasDefault: false;
611
- isPrimaryKey: true;
612
- isAutoincrement: false;
613
- hasRuntimeDefault: false;
614
- enumValues: undefined;
615
- baseColumn: never;
616
- identity: undefined;
617
- generated: undefined;
618
- }, {}, {}>;
619
- name: PgColumn< {
620
- name: "name";
621
- tableName: "organisations";
622
- dataType: "string";
623
- columnType: "PgText";
624
- data: string;
625
- driverParam: string;
626
- notNull: true;
627
- hasDefault: false;
628
- isPrimaryKey: false;
629
- isAutoincrement: false;
630
- hasRuntimeDefault: false;
631
- enumValues: [string, ...string[]];
632
- baseColumn: never;
633
- identity: undefined;
634
- generated: undefined;
635
- }, {}, {}>;
636
- description: PgColumn< {
637
- name: "description";
638
- tableName: "organisations";
639
- dataType: "string";
640
- columnType: "PgText";
641
- data: string;
642
- driverParam: string;
643
- notNull: false;
644
- hasDefault: false;
645
- isPrimaryKey: false;
646
- isAutoincrement: false;
647
- hasRuntimeDefault: false;
648
- enumValues: [string, ...string[]];
649
- baseColumn: never;
650
- identity: undefined;
651
- generated: undefined;
652
- }, {}, {}>;
653
- createdAt: PgColumn< {
654
- name: "created_at";
655
- tableName: "organisations";
656
- dataType: "date";
657
- columnType: "PgTimestamp";
658
- data: Date;
659
- driverParam: string;
660
- notNull: false;
661
- hasDefault: true;
662
- isPrimaryKey: false;
663
- isAutoincrement: false;
664
- hasRuntimeDefault: false;
665
- enumValues: undefined;
666
- baseColumn: never;
667
- identity: undefined;
668
- generated: undefined;
669
- }, {}, {}>;
670
- updatedAt: PgColumn< {
671
- name: "updated_at";
672
- tableName: "organisations";
673
- dataType: "date";
674
- columnType: "PgTimestamp";
675
- data: Date;
676
- driverParam: string;
677
- notNull: false;
678
- hasDefault: true;
679
- isPrimaryKey: false;
680
- isAutoincrement: false;
681
- hasRuntimeDefault: false;
682
- enumValues: undefined;
683
- baseColumn: never;
684
- identity: undefined;
685
- generated: undefined;
686
- }, {}, {}>;
687
- };
688
- dialect: "pg";
689
- }>;
690
- departments: PgTableWithColumns< {
691
- name: "departments";
692
- schema: undefined;
693
- columns: {
694
- id: PgColumn< {
695
- name: "id";
696
- tableName: "departments";
697
- dataType: "number";
698
- columnType: "PgInteger";
699
- data: number;
700
- driverParam: string | number;
701
- notNull: true;
702
- hasDefault: false;
703
- isPrimaryKey: true;
704
- isAutoincrement: false;
705
- hasRuntimeDefault: false;
706
- enumValues: undefined;
707
- baseColumn: never;
708
- identity: undefined;
709
- generated: undefined;
710
- }, {}, {}>;
711
- name: PgColumn< {
712
- name: "name";
713
- tableName: "departments";
714
- dataType: "string";
715
- columnType: "PgText";
716
- data: string;
717
- driverParam: string;
718
- notNull: true;
719
- hasDefault: false;
720
- isPrimaryKey: false;
721
- isAutoincrement: false;
722
- hasRuntimeDefault: false;
723
- enumValues: [string, ...string[]];
724
- baseColumn: never;
725
- identity: undefined;
726
- generated: undefined;
727
- }, {}, {}>;
728
- description: PgColumn< {
729
- name: "description";
730
- tableName: "departments";
731
- dataType: "string";
732
- columnType: "PgText";
733
- data: string;
734
- driverParam: string;
735
- notNull: false;
736
- hasDefault: false;
737
- isPrimaryKey: false;
738
- isAutoincrement: false;
739
- hasRuntimeDefault: false;
740
- enumValues: [string, ...string[]];
741
- baseColumn: never;
742
- identity: undefined;
743
- generated: undefined;
744
- }, {}, {}>;
745
- organisation: PgColumn< {
746
- name: "organisation";
747
- tableName: "departments";
748
- dataType: "number";
749
- columnType: "PgInteger";
750
- data: number;
751
- driverParam: string | number;
752
- notNull: true;
753
- hasDefault: false;
754
- isPrimaryKey: false;
755
- isAutoincrement: false;
756
- hasRuntimeDefault: false;
757
- enumValues: undefined;
758
- baseColumn: never;
759
- identity: undefined;
760
- generated: undefined;
761
- }, {}, {}>;
762
- createdAt: PgColumn< {
763
- name: "created_at";
764
- tableName: "departments";
765
- dataType: "date";
766
- columnType: "PgTimestamp";
767
- data: Date;
768
- driverParam: string;
769
- notNull: false;
770
- hasDefault: true;
771
- isPrimaryKey: false;
772
- isAutoincrement: false;
773
- hasRuntimeDefault: false;
774
- enumValues: undefined;
775
- baseColumn: never;
776
- identity: undefined;
777
- generated: undefined;
778
- }, {}, {}>;
779
- updatedAt: PgColumn< {
780
- name: "updated_at";
781
- tableName: "departments";
782
- dataType: "date";
783
- columnType: "PgTimestamp";
784
- data: Date;
785
- driverParam: string;
786
- notNull: false;
787
- hasDefault: true;
788
- isPrimaryKey: false;
789
- isAutoincrement: false;
790
- hasRuntimeDefault: false;
791
- enumValues: undefined;
792
- baseColumn: never;
793
- identity: undefined;
794
- generated: undefined;
795
- }, {}, {}>;
796
- };
797
- dialect: "pg";
798
- }>;
799
- suppliers: PgTableWithColumns< {
800
- name: "suppliers";
801
- schema: undefined;
802
- columns: {
803
- id: PgColumn< {
804
- name: "id";
805
- tableName: "suppliers";
806
- dataType: "number";
807
- columnType: "PgInteger";
808
- data: number;
809
- driverParam: string | number;
810
- notNull: true;
811
- hasDefault: false;
812
- isPrimaryKey: true;
813
- isAutoincrement: false;
814
- hasRuntimeDefault: false;
815
- enumValues: undefined;
816
- baseColumn: never;
817
- identity: undefined;
818
- generated: undefined;
819
- }, {}, {}>;
820
- name: PgColumn< {
821
- name: "name";
822
- tableName: "suppliers";
823
- dataType: "string";
824
- columnType: "PgText";
825
- data: string;
826
- driverParam: string;
827
- notNull: true;
828
- hasDefault: false;
829
- isPrimaryKey: false;
830
- isAutoincrement: false;
831
- hasRuntimeDefault: false;
832
- enumValues: [string, ...string[]];
833
- baseColumn: never;
834
- identity: undefined;
835
- generated: undefined;
836
- }, {}, {}>;
837
- description: PgColumn< {
838
- name: "description";
839
- tableName: "suppliers";
840
- dataType: "string";
841
- columnType: "PgText";
842
- data: string;
843
- driverParam: string;
844
- notNull: false;
845
- hasDefault: false;
846
- isPrimaryKey: false;
847
- isAutoincrement: false;
848
- hasRuntimeDefault: false;
849
- enumValues: [string, ...string[]];
850
- baseColumn: never;
851
- identity: undefined;
852
- generated: undefined;
853
- }, {}, {}>;
854
- internal: PgColumn< {
855
- name: "internal";
856
- tableName: "suppliers";
857
- dataType: "boolean";
858
- columnType: "PgBoolean";
859
- data: boolean;
860
- driverParam: boolean;
861
- notNull: false;
862
- hasDefault: true;
863
- isPrimaryKey: false;
864
- isAutoincrement: false;
865
- hasRuntimeDefault: false;
866
- enumValues: undefined;
867
- baseColumn: never;
868
- identity: undefined;
869
- generated: undefined;
870
- }, {}, {}>;
871
- organisation: PgColumn< {
872
- name: "organisation";
873
- tableName: "suppliers";
874
- dataType: "number";
875
- columnType: "PgInteger";
876
- data: number;
877
- driverParam: string | number;
878
- notNull: true;
879
- hasDefault: false;
880
- isPrimaryKey: false;
881
- isAutoincrement: false;
882
- hasRuntimeDefault: false;
883
- enumValues: undefined;
884
- baseColumn: never;
885
- identity: undefined;
886
- generated: undefined;
887
- }, {}, {}>;
888
- createdAt: PgColumn< {
889
- name: "created_at";
890
- tableName: "suppliers";
891
- dataType: "date";
892
- columnType: "PgTimestamp";
893
- data: Date;
894
- driverParam: string;
895
- notNull: false;
896
- hasDefault: true;
897
- isPrimaryKey: false;
898
- isAutoincrement: false;
899
- hasRuntimeDefault: false;
900
- enumValues: undefined;
901
- baseColumn: never;
902
- identity: undefined;
903
- generated: undefined;
904
- }, {}, {}>;
905
- updatedAt: PgColumn< {
906
- name: "updated_at";
907
- tableName: "suppliers";
908
- dataType: "date";
909
- columnType: "PgTimestamp";
910
- data: Date;
911
- driverParam: string;
912
- notNull: false;
913
- hasDefault: true;
914
- isPrimaryKey: false;
915
- isAutoincrement: false;
916
- hasRuntimeDefault: false;
917
- enumValues: undefined;
918
- baseColumn: never;
919
- identity: undefined;
920
- generated: undefined;
921
- }, {}, {}>;
922
- };
923
- dialect: "pg";
924
- }>;
925
- employees: PgTableWithColumns< {
926
- name: "employees";
927
- schema: undefined;
928
- columns: {
929
- id: PgColumn< {
930
- name: "id";
931
- tableName: "employees";
932
- dataType: "number";
933
- columnType: "PgInteger";
934
- data: number;
935
- driverParam: string | number;
936
- notNull: true;
937
- hasDefault: false;
938
- isPrimaryKey: true;
939
- isAutoincrement: false;
940
- hasRuntimeDefault: false;
941
- enumValues: undefined;
942
- baseColumn: never;
943
- identity: undefined;
944
- generated: undefined;
945
- }, {}, {}>;
946
- name: PgColumn< {
947
- name: "name";
948
- tableName: "employees";
949
- dataType: "string";
950
- columnType: "PgText";
951
- data: string;
952
- driverParam: string;
953
- notNull: true;
954
- hasDefault: false;
955
- isPrimaryKey: false;
956
- isAutoincrement: false;
957
- hasRuntimeDefault: false;
958
- enumValues: [string, ...string[]];
959
- baseColumn: never;
960
- identity: undefined;
961
- generated: undefined;
962
- }, {}, {}>;
963
- email: PgColumn< {
964
- name: "email";
965
- tableName: "employees";
966
- dataType: "string";
967
- columnType: "PgText";
968
- data: string;
969
- driverParam: string;
970
- notNull: true;
971
- hasDefault: false;
972
- isPrimaryKey: false;
973
- isAutoincrement: false;
974
- hasRuntimeDefault: false;
975
- enumValues: [string, ...string[]];
976
- baseColumn: never;
977
- identity: undefined;
978
- generated: undefined;
979
- }, {}, {}>;
980
- active: PgColumn< {
981
- name: "active";
982
- tableName: "employees";
983
- dataType: "boolean";
984
- columnType: "PgBoolean";
985
- data: boolean;
986
- driverParam: boolean;
987
- notNull: false;
988
- hasDefault: true;
989
- isPrimaryKey: false;
990
- isAutoincrement: false;
991
- hasRuntimeDefault: false;
992
- enumValues: undefined;
993
- baseColumn: never;
994
- identity: undefined;
995
- generated: undefined;
996
- }, {}, {}>;
997
- fteBasis: PgColumn< {
998
- name: "fte_basis";
999
- tableName: "employees";
1000
- dataType: "string";
1001
- columnType: "PgNumeric";
1002
- data: string;
1003
- driverParam: string;
1004
- notNull: false;
1005
- hasDefault: true;
1006
- isPrimaryKey: false;
1007
- isAutoincrement: false;
1008
- hasRuntimeDefault: false;
1009
- enumValues: undefined;
1010
- baseColumn: never;
1011
- identity: undefined;
1012
- generated: undefined;
1013
- }, {}, {}>;
1014
- startDate: PgColumn< {
1015
- name: "start_date";
1016
- tableName: "employees";
1017
- dataType: "date";
1018
- columnType: "PgTimestamp";
1019
- data: Date;
1020
- driverParam: string;
1021
- notNull: false;
1022
- hasDefault: false;
1023
- isPrimaryKey: false;
1024
- isAutoincrement: false;
1025
- hasRuntimeDefault: false;
1026
- enumValues: undefined;
1027
- baseColumn: never;
1028
- identity: undefined;
1029
- generated: undefined;
1030
- }, {}, {}>;
1031
- endDate: PgColumn< {
1032
- name: "end_date";
1033
- tableName: "employees";
1034
- dataType: "date";
1035
- columnType: "PgTimestamp";
1036
- data: Date;
1037
- driverParam: string;
1038
- notNull: false;
1039
- hasDefault: false;
1040
- isPrimaryKey: false;
1041
- isAutoincrement: false;
1042
- hasRuntimeDefault: false;
1043
- enumValues: undefined;
1044
- baseColumn: never;
1045
- identity: undefined;
1046
- generated: undefined;
1047
- }, {}, {}>;
1048
- department: PgColumn< {
1049
- name: "department";
1050
- tableName: "employees";
1051
- dataType: "number";
1052
- columnType: "PgInteger";
1053
- data: number;
1054
- driverParam: string | number;
1055
- notNull: false;
1056
- hasDefault: false;
1057
- isPrimaryKey: false;
1058
- isAutoincrement: false;
1059
- hasRuntimeDefault: false;
1060
- enumValues: undefined;
1061
- baseColumn: never;
1062
- identity: undefined;
1063
- generated: undefined;
1064
- }, {}, {}>;
1065
- supplier: PgColumn< {
1066
- name: "supplier";
1067
- tableName: "employees";
1068
- dataType: "number";
1069
- columnType: "PgInteger";
1070
- data: number;
1071
- driverParam: string | number;
1072
- notNull: false;
1073
- hasDefault: false;
1074
- isPrimaryKey: false;
1075
- isAutoincrement: false;
1076
- hasRuntimeDefault: false;
1077
- enumValues: undefined;
1078
- baseColumn: never;
1079
- identity: undefined;
1080
- generated: undefined;
1081
- }, {}, {}>;
1082
- organisation: PgColumn< {
1083
- name: "organisation";
1084
- tableName: "employees";
1085
- dataType: "number";
1086
- columnType: "PgInteger";
1087
- data: number;
1088
- driverParam: string | number;
1089
- notNull: true;
1090
- hasDefault: false;
1091
- isPrimaryKey: false;
1092
- isAutoincrement: false;
1093
- hasRuntimeDefault: false;
1094
- enumValues: undefined;
1095
- baseColumn: never;
1096
- identity: undefined;
1097
- generated: undefined;
1098
- }, {}, {}>;
1099
- createdAt: PgColumn< {
1100
- name: "created_at";
1101
- tableName: "employees";
1102
- dataType: "date";
1103
- columnType: "PgTimestamp";
1104
- data: Date;
1105
- driverParam: string;
1106
- notNull: false;
1107
- hasDefault: true;
1108
- isPrimaryKey: false;
1109
- isAutoincrement: false;
1110
- hasRuntimeDefault: false;
1111
- enumValues: undefined;
1112
- baseColumn: never;
1113
- identity: undefined;
1114
- generated: undefined;
1115
- }, {}, {}>;
1116
- updatedAt: PgColumn< {
1117
- name: "updated_at";
1118
- tableName: "employees";
1119
- dataType: "date";
1120
- columnType: "PgTimestamp";
1121
- data: Date;
1122
- driverParam: string;
1123
- notNull: false;
1124
- hasDefault: true;
1125
- isPrimaryKey: false;
1126
- isAutoincrement: false;
1127
- hasRuntimeDefault: false;
1128
- enumValues: undefined;
1129
- baseColumn: never;
1130
- identity: undefined;
1131
- generated: undefined;
1132
- }, {}, {}>;
1133
- };
1134
- dialect: "pg";
1135
- }>;
1136
- organisationsRelations: Relations<"organisations", {
1137
- departments: Many<"departments">;
1138
- suppliers: Many<"suppliers">;
1139
- employees: Many<"employees">;
1140
- }>;
1141
- departmentsRelations: Relations<"departments", {
1142
- organisation: One<"organisations", true>;
1143
- employees: Many<"employees">;
1144
- }>;
1145
- suppliersRelations: Relations<"suppliers", {
1146
- organisation: One<"organisations", true>;
1147
- employees: Many<"employees">;
1148
- }>;
1149
- employeesRelations: Relations<"employees", {
1150
- organisation: One<"organisations", true>;
1151
- department: One<"departments", false>;
1152
- supplier: One<"suppliers", false>;
1153
- }>;
1154
- };
1155
-
1156
251
  /**
1157
252
  * Filter definitions with logical operators
1158
253
  */
@@ -1263,7 +358,7 @@ export declare class MultiCubeBuilder<TSchema extends Record<string, any> = Reco
1263
358
  /**
1264
359
  * Build a multi-cube query plan
1265
360
  */
1266
- buildMultiCubeQueryPlan(cubes: Map<string, CubeWithJoins<TSchema>>, query: SemanticQuery, ctx: QueryContext<TSchema>): MultiCubeQueryPlan<TSchema>;
361
+ buildMultiCubeQueryPlan(cubes: Map<string, Cube<TSchema>>, query: SemanticQuery, ctx: QueryContext<TSchema>): MultiCubeQueryPlan<TSchema>;
1267
362
  /**
1268
363
  * Choose the primary cube based on query analysis
1269
364
  */
@@ -1334,113 +429,18 @@ export declare interface MultiCubeQueryPlan<TSchema extends Record<string, any>
1334
429
  * Works with mysql2 driver
1335
430
  */
1336
431
  export declare class MySQLExecutor<TSchema extends Record<string, any> = Record<string, any>> extends BaseDatabaseExecutor<TSchema> {
1337
- execute<T = any[]>(query: SQL | any): Promise<T>;
432
+ execute<T = any[]>(query: SQL | any, measureFields?: string[]): Promise<T>;
433
+ /**
434
+ * Convert numeric string fields to numbers (only for measure fields)
435
+ */
436
+ private convertNumericFields;
437
+ /**
438
+ * Coerce a value to a number if it represents a numeric type
439
+ */
440
+ private coerceToNumber;
1338
441
  getEngineType(): 'mysql';
1339
442
  }
1340
443
 
1341
- /**
1342
- * Example schema for demonstrating Drizzle cube definitions
1343
- * This shows how to define cubes using actual Drizzle schema
1344
- */
1345
- export declare const organisations: PgTableWithColumns< {
1346
- name: "organisations";
1347
- schema: undefined;
1348
- columns: {
1349
- id: PgColumn< {
1350
- name: "id";
1351
- tableName: "organisations";
1352
- dataType: "number";
1353
- columnType: "PgInteger";
1354
- data: number;
1355
- driverParam: string | number;
1356
- notNull: true;
1357
- hasDefault: false;
1358
- isPrimaryKey: true;
1359
- isAutoincrement: false;
1360
- hasRuntimeDefault: false;
1361
- enumValues: undefined;
1362
- baseColumn: never;
1363
- identity: undefined;
1364
- generated: undefined;
1365
- }, {}, {}>;
1366
- name: PgColumn< {
1367
- name: "name";
1368
- tableName: "organisations";
1369
- dataType: "string";
1370
- columnType: "PgText";
1371
- data: string;
1372
- driverParam: string;
1373
- notNull: true;
1374
- hasDefault: false;
1375
- isPrimaryKey: false;
1376
- isAutoincrement: false;
1377
- hasRuntimeDefault: false;
1378
- enumValues: [string, ...string[]];
1379
- baseColumn: never;
1380
- identity: undefined;
1381
- generated: undefined;
1382
- }, {}, {}>;
1383
- description: PgColumn< {
1384
- name: "description";
1385
- tableName: "organisations";
1386
- dataType: "string";
1387
- columnType: "PgText";
1388
- data: string;
1389
- driverParam: string;
1390
- notNull: false;
1391
- hasDefault: false;
1392
- isPrimaryKey: false;
1393
- isAutoincrement: false;
1394
- hasRuntimeDefault: false;
1395
- enumValues: [string, ...string[]];
1396
- baseColumn: never;
1397
- identity: undefined;
1398
- generated: undefined;
1399
- }, {}, {}>;
1400
- createdAt: PgColumn< {
1401
- name: "created_at";
1402
- tableName: "organisations";
1403
- dataType: "date";
1404
- columnType: "PgTimestamp";
1405
- data: Date;
1406
- driverParam: string;
1407
- notNull: false;
1408
- hasDefault: true;
1409
- isPrimaryKey: false;
1410
- isAutoincrement: false;
1411
- hasRuntimeDefault: false;
1412
- enumValues: undefined;
1413
- baseColumn: never;
1414
- identity: undefined;
1415
- generated: undefined;
1416
- }, {}, {}>;
1417
- updatedAt: PgColumn< {
1418
- name: "updated_at";
1419
- tableName: "organisations";
1420
- dataType: "date";
1421
- columnType: "PgTimestamp";
1422
- data: Date;
1423
- driverParam: string;
1424
- notNull: false;
1425
- hasDefault: true;
1426
- isPrimaryKey: false;
1427
- isAutoincrement: false;
1428
- hasRuntimeDefault: false;
1429
- enumValues: undefined;
1430
- baseColumn: never;
1431
- identity: undefined;
1432
- generated: undefined;
1433
- }, {}, {}>;
1434
- };
1435
- dialect: "pg";
1436
- }>;
1437
-
1438
- export declare const organisationsRelations: Relations<"organisations", {
1439
- departments: Many<"departments">;
1440
- suppliers: Many<"suppliers">;
1441
- employees: Many<"employees">;
1442
- }>;
1443
-
1444
444
  /**
1445
445
  * Parse YAML content and return validation result with converted cubes
1446
446
  */
@@ -1451,11 +451,15 @@ export declare function parseYamlCubes(yamlContent: string): YamlValidationResul
1451
451
  * Works with postgres.js and Neon drivers
1452
452
  */
1453
453
  export declare class PostgresExecutor<TSchema extends Record<string, any> = Record<string, any>> extends BaseDatabaseExecutor<TSchema> {
1454
- execute<T = any[]>(query: SQL | any): Promise<T>;
454
+ execute<T = any[]>(query: SQL | any, measureFields?: string[]): Promise<T>;
1455
455
  /**
1456
- * Convert numeric string fields to numbers
456
+ * Convert numeric string fields to numbers (only for measure fields)
1457
457
  */
1458
458
  private convertNumericFields;
459
+ /**
460
+ * Coerce a value to a number if it represents a numeric type
461
+ */
462
+ private coerceToNumber;
1459
463
  getEngineType(): 'postgres';
1460
464
  }
1461
465
 
@@ -1478,7 +482,7 @@ export declare class QueryExecutor<TSchema extends Record<string, any> = Record<
1478
482
  /**
1479
483
  * Unified query execution method that handles both single and multi-cube queries
1480
484
  */
1481
- execute(cubes: Map<string, CubeWithJoins<TSchema>>, query: SemanticQuery, securityContext: SecurityContext): Promise<QueryResult>;
485
+ execute(cubes: Map<string, Cube<TSchema>>, query: SemanticQuery, securityContext: SecurityContext): Promise<QueryResult>;
1482
486
  /**
1483
487
  * Legacy interface for single cube queries
1484
488
  */
@@ -1502,6 +506,17 @@ export declare class QueryExecutor<TSchema extends Record<string, any> = Record<
1502
506
  sql: string;
1503
507
  params?: any[];
1504
508
  }>;
509
+ /**
510
+ * Generate raw SQL for multi-cube queries without execution
511
+ */
512
+ generateMultiCubeSQL(cubes: Map<string, Cube<TSchema>>, query: SemanticQuery, securityContext: SecurityContext): Promise<{
513
+ sql: string;
514
+ params?: any[];
515
+ }>;
516
+ /**
517
+ * Build multi-cube query (extracted from executeMultiCube for reuse)
518
+ */
519
+ private buildMultiCubeQuery;
1505
520
  /**
1506
521
  * Generate SQL for Cube
1507
522
  */
@@ -1530,12 +545,25 @@ export declare class QueryExecutor<TSchema extends Record<string, any> = Record<
1530
545
  * Build filter condition using Drizzle operators
1531
546
  */
1532
547
  private buildFilterCondition;
548
+ /**
549
+ * Build date range condition for time dimensions
550
+ */
551
+ private buildDateRangeCondition;
552
+ /**
553
+ * Parse relative date range expressions like "last 7 days", "this month"
554
+ */
555
+ private parseRelativeDateRange;
556
+ /**
557
+ * Normalize date values to handle both string and Date objects
558
+ * For PostgreSQL timestamp fields, Drizzle expects Date objects
559
+ */
560
+ private normalizeDate;
1533
561
  /**
1534
562
  * Build GROUP BY fields from dimensions and time dimensions (Cube)
1535
563
  */
1536
564
  private buildGroupByFields;
1537
565
  /**
1538
- * Build ORDER BY clause
566
+ * Build ORDER BY clause with automatic time dimension sorting
1539
567
  */
1540
568
  private buildOrderBy;
1541
569
  /**
@@ -1648,6 +676,9 @@ export declare const semanticLayer: SemanticLayerCompiler<Record<string, any>>;
1648
676
  export declare class SemanticLayerCompiler<TSchema extends Record<string, any> = Record<string, any>> {
1649
677
  private cubes;
1650
678
  private dbExecutor?;
679
+ private metadataCache?;
680
+ private metadataCacheTimestamp?;
681
+ private readonly METADATA_CACHE_TTL;
1651
682
  constructor(options?: {
1652
683
  drizzle?: DatabaseExecutor<TSchema>['db'];
1653
684
  schema?: TSchema;
@@ -1669,19 +700,19 @@ export declare class SemanticLayerCompiler<TSchema extends Record<string, any> =
1669
700
  /**
1670
701
  * Register a simplified cube with dynamic query building
1671
702
  */
1672
- registerCube(cube: CubeWithJoins<TSchema>): void;
703
+ registerCube(cube: Cube<TSchema>): void;
1673
704
  /**
1674
705
  * Get a cube by name
1675
706
  */
1676
- getCube(name: string): CubeWithJoins<TSchema> | undefined;
707
+ getCube(name: string): Cube<TSchema> | undefined;
1677
708
  /**
1678
709
  * Get all registered cubes
1679
710
  */
1680
- getAllCubes(): CubeWithJoins<TSchema>[];
711
+ getAllCubes(): Cube<TSchema>[];
1681
712
  /**
1682
713
  * Get all cubes as a Map for multi-cube queries
1683
714
  */
1684
- getAllCubesMap(): Map<string, CubeWithJoins<TSchema>>;
715
+ getAllCubesMap(): Map<string, Cube<TSchema>>;
1685
716
  /**
1686
717
  * Unified query execution method that handles both single and multi-cube queries
1687
718
  */
@@ -1696,10 +727,12 @@ export declare class SemanticLayerCompiler<TSchema extends Record<string, any> =
1696
727
  executeQuery(cubeName: string, query: SemanticQuery, securityContext: SecurityContext): Promise<QueryResult>;
1697
728
  /**
1698
729
  * Get metadata for all cubes (for API responses)
730
+ * Uses caching to improve performance for repeated requests
1699
731
  */
1700
732
  getMetadata(): CubeMetadata[];
1701
733
  /**
1702
734
  * Generate cube metadata for API responses from cubes
735
+ * Optimized version that minimizes object iterations
1703
736
  */
1704
737
  private generateCubeMetadata;
1705
738
  /**
@@ -1709,6 +742,13 @@ export declare class SemanticLayerCompiler<TSchema extends Record<string, any> =
1709
742
  sql: string;
1710
743
  params?: any[];
1711
744
  }>;
745
+ /**
746
+ * Get SQL for a multi-cube query without executing it (debugging)
747
+ */
748
+ generateMultiCubeSQL(query: SemanticQuery, securityContext: SecurityContext): Promise<{
749
+ sql: string;
750
+ params?: any[];
751
+ }>;
1712
752
  /**
1713
753
  * Check if a cube exists
1714
754
  */
@@ -1721,10 +761,23 @@ export declare class SemanticLayerCompiler<TSchema extends Record<string, any> =
1721
761
  * Clear all cubes
1722
762
  */
1723
763
  clearCubes(): void;
764
+ /**
765
+ * Invalidate the metadata cache
766
+ * Called whenever cubes are modified
767
+ */
768
+ private invalidateMetadataCache;
1724
769
  /**
1725
770
  * Get cube names
1726
771
  */
1727
772
  getCubeNames(): string[];
773
+ /**
774
+ * Validate a query against registered cubes
775
+ * Ensures all referenced cubes and fields exist
776
+ */
777
+ validateQuery(query: SemanticQuery): {
778
+ isValid: boolean;
779
+ errors: string[];
780
+ };
1728
781
  }
1729
782
 
1730
783
  /**
@@ -2061,7 +1114,15 @@ export { SQL }
2061
1114
  * Works with better-sqlite3 driver
2062
1115
  */
2063
1116
  export declare class SQLiteExecutor<TSchema extends Record<string, any> = Record<string, any>> extends BaseDatabaseExecutor<TSchema> {
2064
- execute<T = any[]>(query: SQL | any): Promise<T>;
1117
+ execute<T = any[]>(query: SQL | any, measureFields?: string[]): Promise<T>;
1118
+ /**
1119
+ * Convert numeric string fields to numbers (only for measure fields)
1120
+ */
1121
+ private convertNumericFields;
1122
+ /**
1123
+ * Coerce a value to a number if it represents a numeric type
1124
+ */
1125
+ private coerceToNumber;
2065
1126
  getEngineType(): 'sqlite';
2066
1127
  }
2067
1128
 
@@ -2073,138 +1134,6 @@ export declare interface SqlResult {
2073
1134
  params?: any[];
2074
1135
  }
2075
1136
 
2076
- export declare const suppliers: PgTableWithColumns< {
2077
- name: "suppliers";
2078
- schema: undefined;
2079
- columns: {
2080
- id: PgColumn< {
2081
- name: "id";
2082
- tableName: "suppliers";
2083
- dataType: "number";
2084
- columnType: "PgInteger";
2085
- data: number;
2086
- driverParam: string | number;
2087
- notNull: true;
2088
- hasDefault: false;
2089
- isPrimaryKey: true;
2090
- isAutoincrement: false;
2091
- hasRuntimeDefault: false;
2092
- enumValues: undefined;
2093
- baseColumn: never;
2094
- identity: undefined;
2095
- generated: undefined;
2096
- }, {}, {}>;
2097
- name: PgColumn< {
2098
- name: "name";
2099
- tableName: "suppliers";
2100
- dataType: "string";
2101
- columnType: "PgText";
2102
- data: string;
2103
- driverParam: string;
2104
- notNull: true;
2105
- hasDefault: false;
2106
- isPrimaryKey: false;
2107
- isAutoincrement: false;
2108
- hasRuntimeDefault: false;
2109
- enumValues: [string, ...string[]];
2110
- baseColumn: never;
2111
- identity: undefined;
2112
- generated: undefined;
2113
- }, {}, {}>;
2114
- description: PgColumn< {
2115
- name: "description";
2116
- tableName: "suppliers";
2117
- dataType: "string";
2118
- columnType: "PgText";
2119
- data: string;
2120
- driverParam: string;
2121
- notNull: false;
2122
- hasDefault: false;
2123
- isPrimaryKey: false;
2124
- isAutoincrement: false;
2125
- hasRuntimeDefault: false;
2126
- enumValues: [string, ...string[]];
2127
- baseColumn: never;
2128
- identity: undefined;
2129
- generated: undefined;
2130
- }, {}, {}>;
2131
- internal: PgColumn< {
2132
- name: "internal";
2133
- tableName: "suppliers";
2134
- dataType: "boolean";
2135
- columnType: "PgBoolean";
2136
- data: boolean;
2137
- driverParam: boolean;
2138
- notNull: false;
2139
- hasDefault: true;
2140
- isPrimaryKey: false;
2141
- isAutoincrement: false;
2142
- hasRuntimeDefault: false;
2143
- enumValues: undefined;
2144
- baseColumn: never;
2145
- identity: undefined;
2146
- generated: undefined;
2147
- }, {}, {}>;
2148
- organisation: PgColumn< {
2149
- name: "organisation";
2150
- tableName: "suppliers";
2151
- dataType: "number";
2152
- columnType: "PgInteger";
2153
- data: number;
2154
- driverParam: string | number;
2155
- notNull: true;
2156
- hasDefault: false;
2157
- isPrimaryKey: false;
2158
- isAutoincrement: false;
2159
- hasRuntimeDefault: false;
2160
- enumValues: undefined;
2161
- baseColumn: never;
2162
- identity: undefined;
2163
- generated: undefined;
2164
- }, {}, {}>;
2165
- createdAt: PgColumn< {
2166
- name: "created_at";
2167
- tableName: "suppliers";
2168
- dataType: "date";
2169
- columnType: "PgTimestamp";
2170
- data: Date;
2171
- driverParam: string;
2172
- notNull: false;
2173
- hasDefault: true;
2174
- isPrimaryKey: false;
2175
- isAutoincrement: false;
2176
- hasRuntimeDefault: false;
2177
- enumValues: undefined;
2178
- baseColumn: never;
2179
- identity: undefined;
2180
- generated: undefined;
2181
- }, {}, {}>;
2182
- updatedAt: PgColumn< {
2183
- name: "updated_at";
2184
- tableName: "suppliers";
2185
- dataType: "date";
2186
- columnType: "PgTimestamp";
2187
- data: Date;
2188
- driverParam: string;
2189
- notNull: false;
2190
- hasDefault: true;
2191
- isPrimaryKey: false;
2192
- isAutoincrement: false;
2193
- hasRuntimeDefault: false;
2194
- enumValues: undefined;
2195
- baseColumn: never;
2196
- identity: undefined;
2197
- generated: undefined;
2198
- }, {}, {}>;
2199
- };
2200
- dialect: "pg";
2201
- }>;
2202
-
2203
- export declare const suppliersRelations: Relations<"suppliers", {
2204
- organisation: One<"organisations", true>;
2205
- employees: Many<"employees">;
2206
- }>;
2207
-
2208
1137
  /**
2209
1138
  * Time dimension with granularity
2210
1139
  */