@voyant-travel/reporting 0.2.2 → 0.3.0

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.
package/dist/schema.d.ts CHANGED
@@ -1,17 +1,3 @@
1
- import type { ReportResult } from "@voyant-travel/reporting-contracts";
2
- export interface ReportRunWidgetOutput {
3
- widgetInstanceId: string;
4
- datasetId?: string;
5
- datasetVersion?: number;
6
- requiredScopes?: readonly string[];
7
- status: "succeeded" | "missing" | "failed";
8
- result?: ReportResult;
9
- reason?: string;
10
- }
11
- export interface ReportRunOutput {
12
- widgets: ReportRunWidgetOutput[];
13
- }
14
- export declare const reportRunStatusEnum: import("drizzle-orm/pg-core").PgEnum<["running", "succeeded", "failed"]>;
15
1
  export declare const reportDefinitions: import("drizzle-orm/pg-core").PgTableWithColumns<{
16
2
  name: "report_definitions";
17
3
  schema: undefined;
@@ -362,503 +348,4 @@ export declare const reportDefinitions: import("drizzle-orm/pg-core").PgTableWit
362
348
  };
363
349
  dialect: "pg";
364
350
  }>;
365
- export declare const reportVersions: import("drizzle-orm/pg-core").PgTableWithColumns<{
366
- name: "report_versions";
367
- schema: undefined;
368
- columns: {
369
- id: import("drizzle-orm/pg-core").PgColumn<{
370
- name: string;
371
- tableName: "report_versions";
372
- dataType: "string";
373
- columnType: "PgText";
374
- data: string;
375
- driverParam: string;
376
- notNull: true;
377
- hasDefault: true;
378
- isPrimaryKey: true;
379
- isAutoincrement: false;
380
- hasRuntimeDefault: true;
381
- enumValues: [string, ...string[]];
382
- baseColumn: never;
383
- identity: undefined;
384
- generated: undefined;
385
- }, {}, {}>;
386
- reportDefinitionId: import("drizzle-orm/pg-core").PgColumn<{
387
- name: string;
388
- tableName: "report_versions";
389
- dataType: "string";
390
- columnType: "PgText";
391
- data: string;
392
- driverParam: string;
393
- notNull: true;
394
- hasDefault: false;
395
- isPrimaryKey: false;
396
- isAutoincrement: false;
397
- hasRuntimeDefault: false;
398
- enumValues: [string, ...string[]];
399
- baseColumn: never;
400
- identity: undefined;
401
- generated: undefined;
402
- }, {}, {}>;
403
- version: import("drizzle-orm/pg-core").PgColumn<{
404
- name: "version";
405
- tableName: "report_versions";
406
- dataType: "number";
407
- columnType: "PgInteger";
408
- data: number;
409
- driverParam: string | number;
410
- notNull: true;
411
- hasDefault: false;
412
- isPrimaryKey: false;
413
- isAutoincrement: false;
414
- hasRuntimeDefault: false;
415
- enumValues: undefined;
416
- baseColumn: never;
417
- identity: undefined;
418
- generated: undefined;
419
- }, {}, {}>;
420
- name: import("drizzle-orm/pg-core").PgColumn<{
421
- name: "name";
422
- tableName: "report_versions";
423
- dataType: "string";
424
- columnType: "PgText";
425
- data: string;
426
- driverParam: string;
427
- notNull: true;
428
- hasDefault: false;
429
- isPrimaryKey: false;
430
- isAutoincrement: false;
431
- hasRuntimeDefault: false;
432
- enumValues: [string, ...string[]];
433
- baseColumn: never;
434
- identity: undefined;
435
- generated: undefined;
436
- }, {}, {}>;
437
- description: import("drizzle-orm/pg-core").PgColumn<{
438
- name: "description";
439
- tableName: "report_versions";
440
- dataType: "string";
441
- columnType: "PgText";
442
- data: string;
443
- driverParam: string;
444
- notNull: false;
445
- hasDefault: false;
446
- isPrimaryKey: false;
447
- isAutoincrement: false;
448
- hasRuntimeDefault: false;
449
- enumValues: [string, ...string[]];
450
- baseColumn: never;
451
- identity: undefined;
452
- generated: undefined;
453
- }, {}, {}>;
454
- definitionRevision: import("drizzle-orm/pg-core").PgColumn<{
455
- name: "definition_revision";
456
- tableName: "report_versions";
457
- dataType: "number";
458
- columnType: "PgInteger";
459
- data: number;
460
- driverParam: string | number;
461
- notNull: true;
462
- hasDefault: false;
463
- isPrimaryKey: false;
464
- isAutoincrement: false;
465
- hasRuntimeDefault: false;
466
- enumValues: undefined;
467
- baseColumn: never;
468
- identity: undefined;
469
- generated: undefined;
470
- }, {}, {}>;
471
- snapshot: import("drizzle-orm/pg-core").PgColumn<{
472
- name: "snapshot";
473
- tableName: "report_versions";
474
- dataType: "json";
475
- columnType: "PgJsonb";
476
- data: {
477
- parameters: Record<string, string | number | boolean | (string | number | boolean | null)[] | null>;
478
- widgets: {
479
- id: string;
480
- source: {
481
- kind: "preset";
482
- widgetId: string;
483
- version?: number | undefined;
484
- } | {
485
- kind: "custom";
486
- definition: {
487
- id: string;
488
- version: number;
489
- label: string;
490
- query: {
491
- dataset: {
492
- id: string;
493
- version?: number | undefined;
494
- };
495
- select: ({
496
- kind: "field";
497
- field: string;
498
- as?: string | undefined;
499
- } | {
500
- kind: "aggregate";
501
- operation: "minimum" | "maximum" | "count" | "countDistinct" | "sum" | "average";
502
- as: string;
503
- field?: string | undefined;
504
- })[];
505
- filters: {
506
- field: string;
507
- operator: "in" | "equal" | "notEqual" | "notIn" | "greaterThan" | "greaterThanOrEqual" | "lessThan" | "lessThanOrEqual" | "between" | "contains" | "isNull" | "isNotNull";
508
- value?: {
509
- kind: "literal";
510
- value: string | number | boolean | (string | number | boolean | null)[] | null;
511
- } | {
512
- kind: "parameter";
513
- name: string;
514
- } | undefined;
515
- }[];
516
- groupBy: {
517
- field: string;
518
- timeGrain?: "day" | "week" | "month" | "quarter" | "year" | undefined;
519
- }[];
520
- orderBy: {
521
- by: string;
522
- direction: "ascending" | "descending";
523
- }[];
524
- limit?: number | undefined;
525
- };
526
- visualization: {
527
- type: "kpi" | "table" | "line" | "bar" | "pie";
528
- options: Record<string, unknown>;
529
- };
530
- defaultSize: {
531
- width: number;
532
- height: number;
533
- };
534
- description?: string | undefined;
535
- minimumSize?: {
536
- width: number;
537
- height: number;
538
- } | undefined;
539
- maximumSize?: {
540
- width: number;
541
- height: number;
542
- } | undefined;
543
- };
544
- };
545
- layout: {
546
- width: number;
547
- height: number;
548
- x: number;
549
- y: number;
550
- };
551
- title?: string | undefined;
552
- }[];
553
- };
554
- driverParam: unknown;
555
- notNull: true;
556
- hasDefault: false;
557
- isPrimaryKey: false;
558
- isAutoincrement: false;
559
- hasRuntimeDefault: false;
560
- enumValues: undefined;
561
- baseColumn: never;
562
- identity: undefined;
563
- generated: undefined;
564
- }, {}, {
565
- $type: {
566
- parameters: Record<string, string | number | boolean | (string | number | boolean | null)[] | null>;
567
- widgets: {
568
- id: string;
569
- source: {
570
- kind: "preset";
571
- widgetId: string;
572
- version?: number | undefined;
573
- } | {
574
- kind: "custom";
575
- definition: {
576
- id: string;
577
- version: number;
578
- label: string;
579
- query: {
580
- dataset: {
581
- id: string;
582
- version?: number | undefined;
583
- };
584
- select: ({
585
- kind: "field";
586
- field: string;
587
- as?: string | undefined;
588
- } | {
589
- kind: "aggregate";
590
- operation: "minimum" | "maximum" | "count" | "countDistinct" | "sum" | "average";
591
- as: string;
592
- field?: string | undefined;
593
- })[];
594
- filters: {
595
- field: string;
596
- operator: "in" | "equal" | "notEqual" | "notIn" | "greaterThan" | "greaterThanOrEqual" | "lessThan" | "lessThanOrEqual" | "between" | "contains" | "isNull" | "isNotNull";
597
- value?: {
598
- kind: "literal";
599
- value: string | number | boolean | (string | number | boolean | null)[] | null;
600
- } | {
601
- kind: "parameter";
602
- name: string;
603
- } | undefined;
604
- }[];
605
- groupBy: {
606
- field: string;
607
- timeGrain?: "day" | "week" | "month" | "quarter" | "year" | undefined;
608
- }[];
609
- orderBy: {
610
- by: string;
611
- direction: "ascending" | "descending";
612
- }[];
613
- limit?: number | undefined;
614
- };
615
- visualization: {
616
- type: "kpi" | "table" | "line" | "bar" | "pie";
617
- options: Record<string, unknown>;
618
- };
619
- defaultSize: {
620
- width: number;
621
- height: number;
622
- };
623
- description?: string | undefined;
624
- minimumSize?: {
625
- width: number;
626
- height: number;
627
- } | undefined;
628
- maximumSize?: {
629
- width: number;
630
- height: number;
631
- } | undefined;
632
- };
633
- };
634
- layout: {
635
- width: number;
636
- height: number;
637
- x: number;
638
- y: number;
639
- };
640
- title?: string | undefined;
641
- }[];
642
- };
643
- }>;
644
- createdByUserId: import("drizzle-orm/pg-core").PgColumn<{
645
- name: "created_by_user_id";
646
- tableName: "report_versions";
647
- dataType: "string";
648
- columnType: "PgText";
649
- data: string;
650
- driverParam: string;
651
- notNull: false;
652
- hasDefault: false;
653
- isPrimaryKey: false;
654
- isAutoincrement: false;
655
- hasRuntimeDefault: false;
656
- enumValues: [string, ...string[]];
657
- baseColumn: never;
658
- identity: undefined;
659
- generated: undefined;
660
- }, {}, {}>;
661
- createdAt: import("drizzle-orm/pg-core").PgColumn<{
662
- name: "created_at";
663
- tableName: "report_versions";
664
- dataType: "date";
665
- columnType: "PgTimestamp";
666
- data: Date;
667
- driverParam: string;
668
- notNull: true;
669
- hasDefault: true;
670
- isPrimaryKey: false;
671
- isAutoincrement: false;
672
- hasRuntimeDefault: false;
673
- enumValues: undefined;
674
- baseColumn: never;
675
- identity: undefined;
676
- generated: undefined;
677
- }, {}, {}>;
678
- };
679
- dialect: "pg";
680
- }>;
681
- export declare const reportRuns: import("drizzle-orm/pg-core").PgTableWithColumns<{
682
- name: "report_runs";
683
- schema: undefined;
684
- columns: {
685
- id: import("drizzle-orm/pg-core").PgColumn<{
686
- name: string;
687
- tableName: "report_runs";
688
- dataType: "string";
689
- columnType: "PgText";
690
- data: string;
691
- driverParam: string;
692
- notNull: true;
693
- hasDefault: true;
694
- isPrimaryKey: true;
695
- isAutoincrement: false;
696
- hasRuntimeDefault: true;
697
- enumValues: [string, ...string[]];
698
- baseColumn: never;
699
- identity: undefined;
700
- generated: undefined;
701
- }, {}, {}>;
702
- reportVersionId: import("drizzle-orm/pg-core").PgColumn<{
703
- name: string;
704
- tableName: "report_runs";
705
- dataType: "string";
706
- columnType: "PgText";
707
- data: string;
708
- driverParam: string;
709
- notNull: true;
710
- hasDefault: false;
711
- isPrimaryKey: false;
712
- isAutoincrement: false;
713
- hasRuntimeDefault: false;
714
- enumValues: [string, ...string[]];
715
- baseColumn: never;
716
- identity: undefined;
717
- generated: undefined;
718
- }, {}, {}>;
719
- status: import("drizzle-orm/pg-core").PgColumn<{
720
- name: "status";
721
- tableName: "report_runs";
722
- dataType: "string";
723
- columnType: "PgEnumColumn";
724
- data: "succeeded" | "failed" | "running";
725
- driverParam: string;
726
- notNull: true;
727
- hasDefault: true;
728
- isPrimaryKey: false;
729
- isAutoincrement: false;
730
- hasRuntimeDefault: false;
731
- enumValues: ["running", "succeeded", "failed"];
732
- baseColumn: never;
733
- identity: undefined;
734
- generated: undefined;
735
- }, {}, {}>;
736
- parameters: import("drizzle-orm/pg-core").PgColumn<{
737
- name: "parameters";
738
- tableName: "report_runs";
739
- dataType: "json";
740
- columnType: "PgJsonb";
741
- data: Record<string, string | number | boolean | (string | number | boolean | null)[] | null>;
742
- driverParam: unknown;
743
- notNull: true;
744
- hasDefault: false;
745
- isPrimaryKey: false;
746
- isAutoincrement: false;
747
- hasRuntimeDefault: false;
748
- enumValues: undefined;
749
- baseColumn: never;
750
- identity: undefined;
751
- generated: undefined;
752
- }, {}, {
753
- $type: Record<string, string | number | boolean | (string | number | boolean | null)[] | null>;
754
- }>;
755
- output: import("drizzle-orm/pg-core").PgColumn<{
756
- name: "output";
757
- tableName: "report_runs";
758
- dataType: "json";
759
- columnType: "PgJsonb";
760
- data: ReportRunOutput | null;
761
- driverParam: unknown;
762
- notNull: false;
763
- hasDefault: false;
764
- isPrimaryKey: false;
765
- isAutoincrement: false;
766
- hasRuntimeDefault: false;
767
- enumValues: undefined;
768
- baseColumn: never;
769
- identity: undefined;
770
- generated: undefined;
771
- }, {}, {
772
- $type: ReportRunOutput | null;
773
- }>;
774
- error: import("drizzle-orm/pg-core").PgColumn<{
775
- name: "error";
776
- tableName: "report_runs";
777
- dataType: "string";
778
- columnType: "PgText";
779
- data: string;
780
- driverParam: string;
781
- notNull: false;
782
- hasDefault: false;
783
- isPrimaryKey: false;
784
- isAutoincrement: false;
785
- hasRuntimeDefault: false;
786
- enumValues: [string, ...string[]];
787
- baseColumn: never;
788
- identity: undefined;
789
- generated: undefined;
790
- }, {}, {}>;
791
- triggeredByUserId: import("drizzle-orm/pg-core").PgColumn<{
792
- name: "triggered_by_user_id";
793
- tableName: "report_runs";
794
- dataType: "string";
795
- columnType: "PgText";
796
- data: string;
797
- driverParam: string;
798
- notNull: false;
799
- hasDefault: false;
800
- isPrimaryKey: false;
801
- isAutoincrement: false;
802
- hasRuntimeDefault: false;
803
- enumValues: [string, ...string[]];
804
- baseColumn: never;
805
- identity: undefined;
806
- generated: undefined;
807
- }, {}, {}>;
808
- startedAt: import("drizzle-orm/pg-core").PgColumn<{
809
- name: "started_at";
810
- tableName: "report_runs";
811
- dataType: "date";
812
- columnType: "PgTimestamp";
813
- data: Date;
814
- driverParam: string;
815
- notNull: true;
816
- hasDefault: true;
817
- isPrimaryKey: false;
818
- isAutoincrement: false;
819
- hasRuntimeDefault: false;
820
- enumValues: undefined;
821
- baseColumn: never;
822
- identity: undefined;
823
- generated: undefined;
824
- }, {}, {}>;
825
- completedAt: import("drizzle-orm/pg-core").PgColumn<{
826
- name: "completed_at";
827
- tableName: "report_runs";
828
- dataType: "date";
829
- columnType: "PgTimestamp";
830
- data: Date;
831
- driverParam: string;
832
- notNull: false;
833
- hasDefault: false;
834
- isPrimaryKey: false;
835
- isAutoincrement: false;
836
- hasRuntimeDefault: false;
837
- enumValues: undefined;
838
- baseColumn: never;
839
- identity: undefined;
840
- generated: undefined;
841
- }, {}, {}>;
842
- createdAt: import("drizzle-orm/pg-core").PgColumn<{
843
- name: "created_at";
844
- tableName: "report_runs";
845
- dataType: "date";
846
- columnType: "PgTimestamp";
847
- data: Date;
848
- driverParam: string;
849
- notNull: true;
850
- hasDefault: true;
851
- isPrimaryKey: false;
852
- isAutoincrement: false;
853
- hasRuntimeDefault: false;
854
- enumValues: undefined;
855
- baseColumn: never;
856
- identity: undefined;
857
- generated: undefined;
858
- }, {}, {}>;
859
- };
860
- dialect: "pg";
861
- }>;
862
351
  export type ReportDefinitionRow = typeof reportDefinitions.$inferSelect;
863
- export type ReportVersionRow = typeof reportVersions.$inferSelect;
864
- export type ReportRunRow = typeof reportRuns.$inferSelect;
package/dist/schema.js CHANGED
@@ -1,6 +1,5 @@
1
- import { typeId, typeIdRef } from "@voyant-travel/db/lib/typeid-column";
2
- import { index, integer, jsonb, pgEnum, pgTable, text, timestamp, uniqueIndex, } from "drizzle-orm/pg-core";
3
- export const reportRunStatusEnum = pgEnum("report_run_status", ["running", "succeeded", "failed"]);
1
+ import { typeId } from "@voyant-travel/db/lib/typeid-column";
2
+ import { index, integer, jsonb, pgTable, text, timestamp } from "drizzle-orm/pg-core";
4
3
  export const reportDefinitions = pgTable("report_definitions", {
5
4
  id: typeId("report_definitions"),
6
5
  name: text("name").notNull(),
@@ -14,36 +13,3 @@ export const reportDefinitions = pgTable("report_definitions", {
14
13
  createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
15
14
  updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
16
15
  }, (table) => [index("idx_report_definitions_updated").on(table.updatedAt)]);
17
- export const reportVersions = pgTable("report_versions", {
18
- id: typeId("report_versions"),
19
- reportDefinitionId: typeIdRef("report_definition_id")
20
- .notNull()
21
- .references(() => reportDefinitions.id, { onDelete: "cascade" }),
22
- version: integer("version").notNull(),
23
- name: text("name").notNull(),
24
- description: text("description"),
25
- definitionRevision: integer("definition_revision").notNull(),
26
- snapshot: jsonb("snapshot").$type().notNull(),
27
- createdByUserId: text("created_by_user_id"),
28
- createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
29
- }, (table) => [
30
- uniqueIndex("uidx_report_versions_definition_version").on(table.reportDefinitionId, table.version),
31
- index("idx_report_versions_definition_created").on(table.reportDefinitionId, table.createdAt),
32
- ]);
33
- export const reportRuns = pgTable("report_runs", {
34
- id: typeId("report_runs"),
35
- reportVersionId: typeIdRef("report_version_id")
36
- .notNull()
37
- .references(() => reportVersions.id, { onDelete: "restrict" }),
38
- status: reportRunStatusEnum("status").notNull().default("running"),
39
- parameters: jsonb("parameters").$type().notNull(),
40
- output: jsonb("output").$type(),
41
- error: text("error"),
42
- triggeredByUserId: text("triggered_by_user_id"),
43
- startedAt: timestamp("started_at", { withTimezone: true }).notNull().defaultNow(),
44
- completedAt: timestamp("completed_at", { withTimezone: true }),
45
- createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
46
- }, (table) => [
47
- index("idx_report_runs_version_created").on(table.reportVersionId, table.createdAt),
48
- index("idx_report_runs_status_started").on(table.status, table.startedAt),
49
- ]);