duron 0.3.0-beta.8 → 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/action-job.d.ts +33 -2
- package/dist/action-job.d.ts.map +1 -1
- package/dist/action-job.js +93 -26
- package/dist/action-manager.d.ts +44 -2
- package/dist/action-manager.d.ts.map +1 -1
- package/dist/action-manager.js +64 -3
- package/dist/action.d.ts +388 -7
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +44 -23
- package/dist/adapters/adapter.d.ts +365 -8
- package/dist/adapters/adapter.d.ts.map +1 -1
- package/dist/adapters/adapter.js +221 -15
- package/dist/adapters/postgres/base.d.ts +184 -6
- package/dist/adapters/postgres/base.d.ts.map +1 -1
- package/dist/adapters/postgres/base.js +436 -75
- package/dist/adapters/postgres/pglite.d.ts +37 -0
- package/dist/adapters/postgres/pglite.d.ts.map +1 -1
- package/dist/adapters/postgres/pglite.js +38 -0
- package/dist/adapters/postgres/postgres.d.ts +35 -0
- package/dist/adapters/postgres/postgres.d.ts.map +1 -1
- package/dist/adapters/postgres/postgres.js +42 -0
- package/dist/adapters/postgres/schema.d.ts +150 -37
- package/dist/adapters/postgres/schema.d.ts.map +1 -1
- package/dist/adapters/postgres/schema.default.d.ts +151 -38
- package/dist/adapters/postgres/schema.default.d.ts.map +1 -1
- package/dist/adapters/postgres/schema.default.js +2 -2
- package/dist/adapters/postgres/schema.js +60 -23
- package/dist/adapters/schemas.d.ts +124 -80
- package/dist/adapters/schemas.d.ts.map +1 -1
- package/dist/adapters/schemas.js +139 -26
- package/dist/client.d.ts +426 -22
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +370 -20
- package/dist/constants.js +6 -0
- package/dist/errors.d.ts +166 -9
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +189 -19
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/server.d.ts +99 -37
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +84 -25
- package/dist/step-manager.d.ts +111 -4
- package/dist/step-manager.d.ts.map +1 -1
- package/dist/step-manager.js +411 -75
- package/dist/telemetry/index.d.ts +1 -4
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +2 -4
- package/dist/telemetry/local-span-exporter.d.ts +56 -0
- package/dist/telemetry/local-span-exporter.d.ts.map +1 -0
- package/dist/telemetry/local-span-exporter.js +118 -0
- package/dist/utils/p-retry.d.ts +5 -0
- package/dist/utils/p-retry.d.ts.map +1 -1
- package/dist/utils/p-retry.js +8 -0
- package/dist/utils/wait-for-abort.d.ts +1 -0
- package/dist/utils/wait-for-abort.d.ts.map +1 -1
- package/dist/utils/wait-for-abort.js +1 -0
- package/migrations/postgres/{20260119153838_flimsy_thor_girl → 20260121160012_normal_bloodstrike}/migration.sql +32 -20
- package/migrations/postgres/{20260119153838_flimsy_thor_girl → 20260121160012_normal_bloodstrike}/snapshot.json +241 -66
- package/package.json +42 -26
- package/src/action-job.ts +43 -32
- package/src/action-manager.ts +5 -5
- package/src/action.ts +317 -149
- package/src/adapters/adapter.ts +54 -54
- package/src/adapters/postgres/base.ts +266 -86
- package/src/adapters/postgres/schema.default.ts +2 -2
- package/src/adapters/postgres/schema.ts +52 -24
- package/src/adapters/schemas.ts +91 -36
- package/src/client.ts +322 -68
- package/src/errors.ts +141 -30
- package/src/index.ts +2 -0
- package/src/server.ts +39 -37
- package/src/step-manager.ts +254 -91
- package/src/telemetry/index.ts +2 -20
- package/src/telemetry/local-span-exporter.ts +148 -0
- package/dist/telemetry/adapter.d.ts +0 -107
- package/dist/telemetry/adapter.d.ts.map +0 -1
- package/dist/telemetry/adapter.js +0 -134
- package/dist/telemetry/local.d.ts +0 -22
- package/dist/telemetry/local.d.ts.map +0 -1
- package/dist/telemetry/local.js +0 -243
- package/dist/telemetry/noop.d.ts +0 -17
- package/dist/telemetry/noop.d.ts.map +0 -1
- package/dist/telemetry/noop.js +0 -66
- package/dist/telemetry/opentelemetry.d.ts +0 -25
- package/dist/telemetry/opentelemetry.d.ts.map +0 -1
- package/dist/telemetry/opentelemetry.js +0 -312
- package/src/telemetry/adapter.ts +0 -642
- package/src/telemetry/local.ts +0 -429
- package/src/telemetry/noop.ts +0 -141
- package/src/telemetry/opentelemetry.ts +0 -453
|
@@ -47,6 +47,21 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
47
47
|
identity: undefined;
|
|
48
48
|
generated: undefined;
|
|
49
49
|
}>;
|
|
50
|
+
description: import("drizzle-orm/pg-core").PgBuildColumn<"jobs", import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>, {
|
|
51
|
+
name: string;
|
|
52
|
+
tableName: "jobs";
|
|
53
|
+
dataType: "string";
|
|
54
|
+
data: string;
|
|
55
|
+
driverParam: string;
|
|
56
|
+
notNull: false;
|
|
57
|
+
hasDefault: false;
|
|
58
|
+
isPrimaryKey: false;
|
|
59
|
+
isAutoincrement: false;
|
|
60
|
+
hasRuntimeDefault: false;
|
|
61
|
+
enumValues: undefined;
|
|
62
|
+
identity: undefined;
|
|
63
|
+
generated: undefined;
|
|
64
|
+
}>;
|
|
50
65
|
status: import("drizzle-orm/pg-core").PgBuildColumn<"jobs", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").Set$Type<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>, "created" | "active" | "completed" | "failed" | "cancelled">>>, {
|
|
51
66
|
name: string;
|
|
52
67
|
tableName: "jobs";
|
|
@@ -197,14 +212,29 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
197
212
|
identity: undefined;
|
|
198
213
|
generated: undefined;
|
|
199
214
|
}>;
|
|
200
|
-
concurrency_limit: import("drizzle-orm/pg-core").PgBuildColumn<"jobs", import("drizzle-orm/pg-core").
|
|
215
|
+
concurrency_limit: import("drizzle-orm/pg-core").PgBuildColumn<"jobs", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>, {
|
|
201
216
|
name: string;
|
|
202
217
|
tableName: "jobs";
|
|
203
218
|
dataType: "number int32";
|
|
204
219
|
data: number;
|
|
205
220
|
driverParam: string | number;
|
|
206
221
|
notNull: true;
|
|
207
|
-
hasDefault:
|
|
222
|
+
hasDefault: false;
|
|
223
|
+
isPrimaryKey: false;
|
|
224
|
+
isAutoincrement: false;
|
|
225
|
+
hasRuntimeDefault: false;
|
|
226
|
+
enumValues: undefined;
|
|
227
|
+
identity: undefined;
|
|
228
|
+
generated: undefined;
|
|
229
|
+
}>;
|
|
230
|
+
concurrency_step_limit: import("drizzle-orm/pg-core").PgBuildColumn<"jobs", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>, {
|
|
231
|
+
name: string;
|
|
232
|
+
tableName: "jobs";
|
|
233
|
+
dataType: "number int32";
|
|
234
|
+
data: number;
|
|
235
|
+
driverParam: string | number;
|
|
236
|
+
notNull: true;
|
|
237
|
+
hasDefault: false;
|
|
208
238
|
isPrimaryKey: false;
|
|
209
239
|
isAutoincrement: false;
|
|
210
240
|
hasRuntimeDefault: false;
|
|
@@ -528,18 +558,33 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
528
558
|
}>;
|
|
529
559
|
};
|
|
530
560
|
dialect: "pg";
|
|
531
|
-
}>,
|
|
532
|
-
name: "
|
|
561
|
+
}>, spansTable: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
562
|
+
name: "spans";
|
|
533
563
|
schema: string;
|
|
534
564
|
columns: {
|
|
535
|
-
id: import("drizzle-orm/pg-core").PgBuildColumn<"
|
|
565
|
+
id: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").SetIsPrimaryKey<import("drizzle-orm/pg-core").PgBigSerial53Builder>, {
|
|
536
566
|
name: string;
|
|
537
|
-
tableName: "
|
|
538
|
-
dataType: "
|
|
567
|
+
tableName: "spans";
|
|
568
|
+
dataType: "number int53";
|
|
569
|
+
data: number;
|
|
570
|
+
driverParam: number;
|
|
571
|
+
notNull: true;
|
|
572
|
+
hasDefault: true;
|
|
573
|
+
isPrimaryKey: false;
|
|
574
|
+
isAutoincrement: false;
|
|
575
|
+
hasRuntimeDefault: false;
|
|
576
|
+
enumValues: undefined;
|
|
577
|
+
identity: undefined;
|
|
578
|
+
generated: undefined;
|
|
579
|
+
}>;
|
|
580
|
+
trace_id: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>, {
|
|
581
|
+
name: string;
|
|
582
|
+
tableName: "spans";
|
|
583
|
+
dataType: "string";
|
|
539
584
|
data: string;
|
|
540
585
|
driverParam: string;
|
|
541
586
|
notNull: true;
|
|
542
|
-
hasDefault:
|
|
587
|
+
hasDefault: false;
|
|
543
588
|
isPrimaryKey: false;
|
|
544
589
|
isAutoincrement: false;
|
|
545
590
|
hasRuntimeDefault: false;
|
|
@@ -547,10 +592,10 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
547
592
|
identity: undefined;
|
|
548
593
|
generated: undefined;
|
|
549
594
|
}>;
|
|
550
|
-
|
|
595
|
+
span_id: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>, {
|
|
551
596
|
name: string;
|
|
552
|
-
tableName: "
|
|
553
|
-
dataType: "string
|
|
597
|
+
tableName: "spans";
|
|
598
|
+
dataType: "string";
|
|
554
599
|
data: string;
|
|
555
600
|
driverParam: string;
|
|
556
601
|
notNull: true;
|
|
@@ -562,9 +607,24 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
562
607
|
identity: undefined;
|
|
563
608
|
generated: undefined;
|
|
564
609
|
}>;
|
|
565
|
-
|
|
610
|
+
parent_span_id: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>, {
|
|
566
611
|
name: string;
|
|
567
|
-
tableName: "
|
|
612
|
+
tableName: "spans";
|
|
613
|
+
dataType: "string";
|
|
614
|
+
data: string;
|
|
615
|
+
driverParam: string;
|
|
616
|
+
notNull: false;
|
|
617
|
+
hasDefault: false;
|
|
618
|
+
isPrimaryKey: false;
|
|
619
|
+
isAutoincrement: false;
|
|
620
|
+
hasRuntimeDefault: false;
|
|
621
|
+
enumValues: undefined;
|
|
622
|
+
identity: undefined;
|
|
623
|
+
generated: undefined;
|
|
624
|
+
}>;
|
|
625
|
+
job_id: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").PgUUIDBuilder, {
|
|
626
|
+
name: string;
|
|
627
|
+
tableName: "spans";
|
|
568
628
|
dataType: "string uuid";
|
|
569
629
|
data: string;
|
|
570
630
|
driverParam: string;
|
|
@@ -577,9 +637,24 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
577
637
|
identity: undefined;
|
|
578
638
|
generated: undefined;
|
|
579
639
|
}>;
|
|
580
|
-
|
|
640
|
+
step_id: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").PgUUIDBuilder, {
|
|
581
641
|
name: string;
|
|
582
|
-
tableName: "
|
|
642
|
+
tableName: "spans";
|
|
643
|
+
dataType: "string uuid";
|
|
644
|
+
data: string;
|
|
645
|
+
driverParam: string;
|
|
646
|
+
notNull: false;
|
|
647
|
+
hasDefault: false;
|
|
648
|
+
isPrimaryKey: false;
|
|
649
|
+
isAutoincrement: false;
|
|
650
|
+
hasRuntimeDefault: false;
|
|
651
|
+
enumValues: undefined;
|
|
652
|
+
identity: undefined;
|
|
653
|
+
generated: undefined;
|
|
654
|
+
}>;
|
|
655
|
+
name: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>, {
|
|
656
|
+
name: string;
|
|
657
|
+
tableName: "spans";
|
|
583
658
|
dataType: "string";
|
|
584
659
|
data: string;
|
|
585
660
|
driverParam: string;
|
|
@@ -592,13 +667,28 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
592
667
|
identity: undefined;
|
|
593
668
|
generated: undefined;
|
|
594
669
|
}>;
|
|
595
|
-
|
|
670
|
+
kind: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>>, {
|
|
596
671
|
name: string;
|
|
597
|
-
tableName: "
|
|
598
|
-
dataType: "number
|
|
672
|
+
tableName: "spans";
|
|
673
|
+
dataType: "number int32";
|
|
599
674
|
data: number;
|
|
600
675
|
driverParam: string | number;
|
|
601
676
|
notNull: true;
|
|
677
|
+
hasDefault: true;
|
|
678
|
+
isPrimaryKey: false;
|
|
679
|
+
isAutoincrement: false;
|
|
680
|
+
hasRuntimeDefault: false;
|
|
681
|
+
enumValues: undefined;
|
|
682
|
+
identity: undefined;
|
|
683
|
+
generated: undefined;
|
|
684
|
+
}>;
|
|
685
|
+
start_time_unix_nano: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgBigInt64Builder>, {
|
|
686
|
+
name: string;
|
|
687
|
+
tableName: "spans";
|
|
688
|
+
dataType: "bigint int64";
|
|
689
|
+
data: bigint;
|
|
690
|
+
driverParam: string;
|
|
691
|
+
notNull: true;
|
|
602
692
|
hasDefault: false;
|
|
603
693
|
isPrimaryKey: false;
|
|
604
694
|
isAutoincrement: false;
|
|
@@ -607,12 +697,27 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
607
697
|
identity: undefined;
|
|
608
698
|
generated: undefined;
|
|
609
699
|
}>;
|
|
610
|
-
|
|
700
|
+
end_time_unix_nano: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").PgBigInt64Builder, {
|
|
611
701
|
name: string;
|
|
612
|
-
tableName: "
|
|
613
|
-
dataType: "
|
|
614
|
-
data:
|
|
615
|
-
driverParam:
|
|
702
|
+
tableName: "spans";
|
|
703
|
+
dataType: "bigint int64";
|
|
704
|
+
data: bigint;
|
|
705
|
+
driverParam: string;
|
|
706
|
+
notNull: false;
|
|
707
|
+
hasDefault: false;
|
|
708
|
+
isPrimaryKey: false;
|
|
709
|
+
isAutoincrement: false;
|
|
710
|
+
hasRuntimeDefault: false;
|
|
711
|
+
enumValues: undefined;
|
|
712
|
+
identity: undefined;
|
|
713
|
+
generated: undefined;
|
|
714
|
+
}>;
|
|
715
|
+
status_code: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>>, {
|
|
716
|
+
name: string;
|
|
717
|
+
tableName: "spans";
|
|
718
|
+
dataType: "number int32";
|
|
719
|
+
data: number;
|
|
720
|
+
driverParam: string | number;
|
|
616
721
|
notNull: true;
|
|
617
722
|
hasDefault: true;
|
|
618
723
|
isPrimaryKey: false;
|
|
@@ -622,13 +727,13 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
622
727
|
identity: undefined;
|
|
623
728
|
generated: undefined;
|
|
624
729
|
}>;
|
|
625
|
-
|
|
730
|
+
status_message: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>, {
|
|
626
731
|
name: string;
|
|
627
|
-
tableName: "
|
|
732
|
+
tableName: "spans";
|
|
628
733
|
dataType: "string";
|
|
629
|
-
data:
|
|
734
|
+
data: string;
|
|
630
735
|
driverParam: string;
|
|
631
|
-
notNull:
|
|
736
|
+
notNull: false;
|
|
632
737
|
hasDefault: false;
|
|
633
738
|
isPrimaryKey: false;
|
|
634
739
|
isAutoincrement: false;
|
|
@@ -637,12 +742,12 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
637
742
|
identity: undefined;
|
|
638
743
|
generated: undefined;
|
|
639
744
|
}>;
|
|
640
|
-
|
|
745
|
+
attributes: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").Set$Type<import("drizzle-orm/pg-core").PgJsonbBuilder, Record<string, any>>>>, {
|
|
641
746
|
name: string;
|
|
642
|
-
tableName: "
|
|
643
|
-
dataType: "object
|
|
644
|
-
data:
|
|
645
|
-
driverParam:
|
|
747
|
+
tableName: "spans";
|
|
748
|
+
dataType: "object json";
|
|
749
|
+
data: Record<string, any>;
|
|
750
|
+
driverParam: unknown;
|
|
646
751
|
notNull: true;
|
|
647
752
|
hasDefault: true;
|
|
648
753
|
isPrimaryKey: false;
|
|
@@ -652,12 +757,20 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
652
757
|
identity: undefined;
|
|
653
758
|
generated: undefined;
|
|
654
759
|
}>;
|
|
655
|
-
|
|
760
|
+
events: import("drizzle-orm/pg-core").PgBuildColumn<"spans", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").Set$Type<import("drizzle-orm/pg-core").PgJsonbBuilder, {
|
|
656
761
|
name: string;
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
762
|
+
timeUnixNano: string;
|
|
763
|
+
attributes?: Record<string, any>;
|
|
764
|
+
}[]>>>, {
|
|
765
|
+
name: string;
|
|
766
|
+
tableName: "spans";
|
|
767
|
+
dataType: "object json";
|
|
768
|
+
data: {
|
|
769
|
+
name: string;
|
|
770
|
+
timeUnixNano: string;
|
|
771
|
+
attributes?: Record<string, any>;
|
|
772
|
+
}[];
|
|
773
|
+
driverParam: unknown;
|
|
661
774
|
notNull: true;
|
|
662
775
|
hasDefault: true;
|
|
663
776
|
isPrimaryKey: false;
|
|
@@ -670,5 +783,5 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
670
783
|
};
|
|
671
784
|
dialect: "pg";
|
|
672
785
|
}>;
|
|
673
|
-
export { schema, jobsTable, jobStepsTable,
|
|
786
|
+
export { schema, jobsTable, jobStepsTable, spansTable };
|
|
674
787
|
//# sourceMappingURL=schema.default.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.default.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgres/schema.default.ts"],"names":[],"mappings":"AAEA,QAAA,MAAQ,MAAM,kDAAE,SAAS
|
|
1
|
+
{"version":3,"file":"schema.default.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgres/schema.default.ts"],"names":[],"mappings":"AAEA,QAAA,MAAQ,MAAM,kDAAE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA0B,CAAA;AAE9E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import createSchema from './schema.js';
|
|
2
|
-
const { schema, jobsTable, jobStepsTable,
|
|
3
|
-
export { schema, jobsTable, jobStepsTable,
|
|
2
|
+
const { schema, jobsTable, jobStepsTable, spansTable } = createSchema('duron');
|
|
3
|
+
export { schema, jobsTable, jobStepsTable, spansTable };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sql } from 'drizzle-orm';
|
|
2
|
-
import { boolean, check,
|
|
2
|
+
import { bigint, bigserial, boolean, check, index, integer, jsonb, pgSchema, text, timestamp, unique, uuid, } from 'drizzle-orm/pg-core';
|
|
3
3
|
import { JOB_STATUSES, STEP_STATUS_ACTIVE, STEP_STATUSES } from '../../constants.js';
|
|
4
4
|
export default function createSchema(schemaName) {
|
|
5
5
|
const schema = pgSchema(schemaName);
|
|
@@ -7,6 +7,7 @@ export default function createSchema(schemaName) {
|
|
|
7
7
|
id: uuid('id').primaryKey().defaultRandom(),
|
|
8
8
|
action_name: text('action_name').notNull(),
|
|
9
9
|
group_key: text('group_key').notNull(),
|
|
10
|
+
description: text('description'),
|
|
10
11
|
status: text('status').$type().notNull().default('created'),
|
|
11
12
|
checksum: text('checksum').notNull(),
|
|
12
13
|
input: jsonb('input').notNull().default({}),
|
|
@@ -17,7 +18,8 @@ export default function createSchema(schemaName) {
|
|
|
17
18
|
started_at: timestamp('started_at', { withTimezone: true }),
|
|
18
19
|
finished_at: timestamp('finished_at', { withTimezone: true }),
|
|
19
20
|
client_id: text('client_id'),
|
|
20
|
-
concurrency_limit: integer('concurrency_limit').notNull()
|
|
21
|
+
concurrency_limit: integer('concurrency_limit').notNull(),
|
|
22
|
+
concurrency_step_limit: integer('concurrency_step_limit').notNull(),
|
|
21
23
|
created_at: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
|
|
22
24
|
updated_at: timestamp('updated_at', { withTimezone: true })
|
|
23
25
|
.notNull()
|
|
@@ -26,17 +28,22 @@ export default function createSchema(schemaName) {
|
|
|
26
28
|
toISOString: () => sql `now()`,
|
|
27
29
|
})),
|
|
28
30
|
}, (table) => [
|
|
31
|
+
// Single column indexes
|
|
29
32
|
index('idx_jobs_action_name').on(table.action_name),
|
|
30
33
|
index('idx_jobs_status').on(table.status),
|
|
31
34
|
index('idx_jobs_group_key').on(table.group_key),
|
|
35
|
+
index('idx_jobs_description').on(table.description),
|
|
32
36
|
index('idx_jobs_started_at').on(table.started_at),
|
|
33
37
|
index('idx_jobs_finished_at').on(table.finished_at),
|
|
34
38
|
index('idx_jobs_expires_at').on(table.expires_at),
|
|
35
39
|
index('idx_jobs_client_id').on(table.client_id),
|
|
36
40
|
index('idx_jobs_checksum').on(table.checksum),
|
|
37
41
|
index('idx_jobs_concurrency_limit').on(table.concurrency_limit),
|
|
42
|
+
index('idx_jobs_concurrency_step_limit').on(table.concurrency_step_limit),
|
|
43
|
+
// Composite indexes
|
|
38
44
|
index('idx_jobs_action_status').on(table.action_name, table.status),
|
|
39
45
|
index('idx_jobs_action_group').on(table.action_name, table.group_key),
|
|
46
|
+
// GIN indexes for full-text search
|
|
40
47
|
index('idx_jobs_input_fts').using('gin', sql `to_tsvector('english', ${table.input}::text)`),
|
|
41
48
|
index('idx_jobs_output_fts').using('gin', sql `to_tsvector('english', ${table.output}::text)`),
|
|
42
49
|
check('jobs_status_check', sql `${table.status} IN ${sql.raw(`(${JOB_STATUSES.map((s) => `'${s}'`).join(',')})`)}`),
|
|
@@ -47,7 +54,7 @@ export default function createSchema(schemaName) {
|
|
|
47
54
|
.notNull()
|
|
48
55
|
.references(() => jobsTable.id, { onDelete: 'cascade' }),
|
|
49
56
|
parent_step_id: uuid('parent_step_id'),
|
|
50
|
-
parallel: boolean('branch').notNull().default(false),
|
|
57
|
+
parallel: boolean('branch').notNull().default(false), // DB column is 'branch', TypeScript uses 'parallel'
|
|
51
58
|
name: text('name').notNull(),
|
|
52
59
|
status: text('status').$type().notNull().default(STEP_STATUS_ACTIVE),
|
|
53
60
|
output: jsonb('output'),
|
|
@@ -71,47 +78,77 @@ export default function createSchema(schemaName) {
|
|
|
71
78
|
toISOString: () => sql `now()`,
|
|
72
79
|
})),
|
|
73
80
|
}, (table) => [
|
|
81
|
+
// Single column indexes
|
|
74
82
|
index('idx_job_steps_job_id').on(table.job_id),
|
|
75
83
|
index('idx_job_steps_status').on(table.status),
|
|
76
84
|
index('idx_job_steps_name').on(table.name),
|
|
77
85
|
index('idx_job_steps_expires_at').on(table.expires_at),
|
|
78
86
|
index('idx_job_steps_parent_step_id').on(table.parent_step_id),
|
|
87
|
+
// Composite indexes
|
|
79
88
|
index('idx_job_steps_job_status').on(table.job_id, table.status),
|
|
80
89
|
index('idx_job_steps_job_name').on(table.job_id, table.name),
|
|
81
90
|
index('idx_job_steps_output_fts').using('gin', sql `to_tsvector('english', ${table.output}::text)`),
|
|
91
|
+
// Unique constraint - step name is unique within a parent (name + parentStepId)
|
|
92
|
+
// nullsNotDistinct ensures NULL parent_step_id values are treated as equal for uniqueness
|
|
82
93
|
unique('unique_job_step_name_parent')
|
|
83
94
|
.on(table.job_id, table.name, table.parent_step_id)
|
|
84
95
|
.nullsNotDistinct(),
|
|
85
96
|
check('job_steps_status_check', sql `${table.status} IN ${sql.raw(`(${STEP_STATUSES.map((s) => `'${s}'`).join(',')})`)}`),
|
|
86
97
|
]);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
98
|
+
/**
|
|
99
|
+
* OpenTelemetry spans table.
|
|
100
|
+
* Stores span data exported by PostgresSpanExporter.
|
|
101
|
+
*
|
|
102
|
+
* SpanKind values: 0=INTERNAL, 1=SERVER, 2=CLIENT, 3=PRODUCER, 4=CONSUMER
|
|
103
|
+
* StatusCode values: 0=UNSET, 1=OK, 2=ERROR
|
|
104
|
+
*/
|
|
105
|
+
const spansTable = schema.table('spans', {
|
|
106
|
+
id: bigserial('id', { mode: 'number' }).primaryKey(),
|
|
107
|
+
// OpenTelemetry span identifiers
|
|
108
|
+
trace_id: text('trace_id').notNull(), // 32-char hex
|
|
109
|
+
span_id: text('span_id').notNull(), // 16-char hex
|
|
110
|
+
parent_span_id: text('parent_span_id'), // 16-char hex, null for root spans
|
|
111
|
+
// Duron-specific references (extracted from span attributes)
|
|
112
|
+
job_id: uuid('job_id').references(() => jobsTable.id, { onDelete: 'cascade' }),
|
|
92
113
|
step_id: uuid('step_id').references(() => jobStepsTable.id, { onDelete: 'cascade' }),
|
|
114
|
+
// Span metadata
|
|
93
115
|
name: text('name').notNull(),
|
|
94
|
-
|
|
116
|
+
kind: integer('kind').notNull().default(0), // SpanKind enum
|
|
117
|
+
// Timing (stored as nanoseconds since epoch for precision)
|
|
118
|
+
start_time_unix_nano: bigint('start_time_unix_nano', { mode: 'bigint' }).notNull(),
|
|
119
|
+
end_time_unix_nano: bigint('end_time_unix_nano', { mode: 'bigint' }),
|
|
120
|
+
// Status
|
|
121
|
+
status_code: integer('status_code').notNull().default(0), // SpanStatusCode enum
|
|
122
|
+
status_message: text('status_message'),
|
|
123
|
+
// Span data
|
|
95
124
|
attributes: jsonb('attributes').$type().notNull().default({}),
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
125
|
+
events: jsonb('events')
|
|
126
|
+
.$type()
|
|
127
|
+
.notNull()
|
|
128
|
+
.default([]),
|
|
99
129
|
}, (table) => [
|
|
100
|
-
|
|
101
|
-
index('
|
|
102
|
-
index('
|
|
103
|
-
index('
|
|
104
|
-
index('
|
|
105
|
-
index('
|
|
106
|
-
index('
|
|
107
|
-
index('
|
|
108
|
-
|
|
109
|
-
|
|
130
|
+
// Single column indexes
|
|
131
|
+
index('idx_spans_trace_id').on(table.trace_id),
|
|
132
|
+
index('idx_spans_span_id').on(table.span_id),
|
|
133
|
+
index('idx_spans_job_id').on(table.job_id),
|
|
134
|
+
index('idx_spans_step_id').on(table.step_id),
|
|
135
|
+
index('idx_spans_name').on(table.name),
|
|
136
|
+
index('idx_spans_kind').on(table.kind),
|
|
137
|
+
index('idx_spans_status_code').on(table.status_code),
|
|
138
|
+
// Composite indexes
|
|
139
|
+
index('idx_spans_job_step').on(table.job_id, table.step_id),
|
|
140
|
+
index('idx_spans_trace_parent').on(table.trace_id, table.parent_span_id),
|
|
141
|
+
// GIN indexes for JSONB querying
|
|
142
|
+
index('idx_spans_attributes').using('gin', table.attributes),
|
|
143
|
+
index('idx_spans_events').using('gin', table.events),
|
|
144
|
+
// Constraints
|
|
145
|
+
check('spans_kind_check', sql `${table.kind} IN (0, 1, 2, 3, 4)`),
|
|
146
|
+
check('spans_status_code_check', sql `${table.status_code} IN (0, 1, 2)`),
|
|
110
147
|
]);
|
|
111
148
|
return {
|
|
112
149
|
schema,
|
|
113
150
|
jobsTable,
|
|
114
151
|
jobStepsTable,
|
|
115
|
-
|
|
152
|
+
spansTable,
|
|
116
153
|
};
|
|
117
154
|
}
|