duron 0.1.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.
Files changed (82) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +140 -0
  3. package/dist/action-job.d.ts +24 -0
  4. package/dist/action-job.d.ts.map +1 -0
  5. package/dist/action-job.js +108 -0
  6. package/dist/action-manager.d.ts +21 -0
  7. package/dist/action-manager.d.ts.map +1 -0
  8. package/dist/action-manager.js +78 -0
  9. package/dist/action.d.ts +129 -0
  10. package/dist/action.d.ts.map +1 -0
  11. package/dist/action.js +87 -0
  12. package/dist/adapters/adapter.d.ts +92 -0
  13. package/dist/adapters/adapter.d.ts.map +1 -0
  14. package/dist/adapters/adapter.js +424 -0
  15. package/dist/adapters/postgres/drizzle.config.d.ts +3 -0
  16. package/dist/adapters/postgres/drizzle.config.d.ts.map +1 -0
  17. package/dist/adapters/postgres/drizzle.config.js +10 -0
  18. package/dist/adapters/postgres/pglite.d.ts +13 -0
  19. package/dist/adapters/postgres/pglite.d.ts.map +1 -0
  20. package/dist/adapters/postgres/pglite.js +36 -0
  21. package/dist/adapters/postgres/postgres.d.ts +51 -0
  22. package/dist/adapters/postgres/postgres.d.ts.map +1 -0
  23. package/dist/adapters/postgres/postgres.js +867 -0
  24. package/dist/adapters/postgres/schema.d.ts +581 -0
  25. package/dist/adapters/postgres/schema.d.ts.map +1 -0
  26. package/dist/adapters/postgres/schema.default.d.ts +577 -0
  27. package/dist/adapters/postgres/schema.default.d.ts.map +1 -0
  28. package/dist/adapters/postgres/schema.default.js +3 -0
  29. package/dist/adapters/postgres/schema.js +87 -0
  30. package/dist/adapters/schemas.d.ts +516 -0
  31. package/dist/adapters/schemas.d.ts.map +1 -0
  32. package/dist/adapters/schemas.js +184 -0
  33. package/dist/client.d.ts +85 -0
  34. package/dist/client.d.ts.map +1 -0
  35. package/dist/client.js +416 -0
  36. package/dist/constants.d.ts +14 -0
  37. package/dist/constants.d.ts.map +1 -0
  38. package/dist/constants.js +22 -0
  39. package/dist/errors.d.ts +43 -0
  40. package/dist/errors.d.ts.map +1 -0
  41. package/dist/errors.js +75 -0
  42. package/dist/index.d.ts +8 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +6 -0
  45. package/dist/server.d.ts +1193 -0
  46. package/dist/server.d.ts.map +1 -0
  47. package/dist/server.js +516 -0
  48. package/dist/step-manager.d.ts +46 -0
  49. package/dist/step-manager.d.ts.map +1 -0
  50. package/dist/step-manager.js +216 -0
  51. package/dist/utils/checksum.d.ts +2 -0
  52. package/dist/utils/checksum.d.ts.map +1 -0
  53. package/dist/utils/checksum.js +6 -0
  54. package/dist/utils/p-retry.d.ts +19 -0
  55. package/dist/utils/p-retry.d.ts.map +1 -0
  56. package/dist/utils/p-retry.js +130 -0
  57. package/dist/utils/wait-for-abort.d.ts +5 -0
  58. package/dist/utils/wait-for-abort.d.ts.map +1 -0
  59. package/dist/utils/wait-for-abort.js +32 -0
  60. package/migrations/postgres/0000_lethal_speed_demon.sql +64 -0
  61. package/migrations/postgres/meta/0000_snapshot.json +606 -0
  62. package/migrations/postgres/meta/_journal.json +13 -0
  63. package/package.json +88 -0
  64. package/src/action-job.ts +201 -0
  65. package/src/action-manager.ts +166 -0
  66. package/src/action.ts +247 -0
  67. package/src/adapters/adapter.ts +969 -0
  68. package/src/adapters/postgres/drizzle.config.ts +11 -0
  69. package/src/adapters/postgres/pglite.ts +86 -0
  70. package/src/adapters/postgres/postgres.ts +1346 -0
  71. package/src/adapters/postgres/schema.default.ts +5 -0
  72. package/src/adapters/postgres/schema.ts +119 -0
  73. package/src/adapters/schemas.ts +320 -0
  74. package/src/client.ts +859 -0
  75. package/src/constants.ts +37 -0
  76. package/src/errors.ts +205 -0
  77. package/src/index.ts +14 -0
  78. package/src/server.ts +718 -0
  79. package/src/step-manager.ts +471 -0
  80. package/src/utils/checksum.ts +7 -0
  81. package/src/utils/p-retry.ts +213 -0
  82. package/src/utils/wait-for-abort.ts +40 -0
@@ -0,0 +1,577 @@
1
+ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "jobs";
3
+ schema: string;
4
+ columns: {
5
+ id: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "id";
7
+ tableName: "jobs";
8
+ dataType: "string";
9
+ columnType: "PgUUID";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: true;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: undefined;
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ action_name: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "action_name";
24
+ tableName: "jobs";
25
+ dataType: "string";
26
+ columnType: "PgText";
27
+ data: string;
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: false;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: [string, ...string[]];
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ group_key: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "group_key";
41
+ tableName: "jobs";
42
+ dataType: "string";
43
+ columnType: "PgText";
44
+ data: string;
45
+ driverParam: string;
46
+ notNull: true;
47
+ hasDefault: false;
48
+ isPrimaryKey: false;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: [string, ...string[]];
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ status: import("drizzle-orm/pg-core").PgColumn<{
57
+ name: "status";
58
+ tableName: "jobs";
59
+ dataType: "string";
60
+ columnType: "PgText";
61
+ data: "created" | "active" | "completed" | "failed" | "cancelled";
62
+ driverParam: string;
63
+ notNull: true;
64
+ hasDefault: true;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: [string, ...string[]];
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {
73
+ $type: "created" | "active" | "completed" | "failed" | "cancelled";
74
+ }>;
75
+ checksum: import("drizzle-orm/pg-core").PgColumn<{
76
+ name: "checksum";
77
+ tableName: "jobs";
78
+ dataType: "string";
79
+ columnType: "PgText";
80
+ data: string;
81
+ driverParam: string;
82
+ notNull: true;
83
+ hasDefault: false;
84
+ isPrimaryKey: false;
85
+ isAutoincrement: false;
86
+ hasRuntimeDefault: false;
87
+ enumValues: [string, ...string[]];
88
+ baseColumn: never;
89
+ identity: undefined;
90
+ generated: undefined;
91
+ }, {}, {}>;
92
+ input: import("drizzle-orm/pg-core").PgColumn<{
93
+ name: "input";
94
+ tableName: "jobs";
95
+ dataType: "json";
96
+ columnType: "PgJsonb";
97
+ data: unknown;
98
+ driverParam: unknown;
99
+ notNull: true;
100
+ hasDefault: true;
101
+ isPrimaryKey: false;
102
+ isAutoincrement: false;
103
+ hasRuntimeDefault: false;
104
+ enumValues: undefined;
105
+ baseColumn: never;
106
+ identity: undefined;
107
+ generated: undefined;
108
+ }, {}, {}>;
109
+ output: import("drizzle-orm/pg-core").PgColumn<{
110
+ name: "output";
111
+ tableName: "jobs";
112
+ dataType: "json";
113
+ columnType: "PgJsonb";
114
+ data: unknown;
115
+ driverParam: unknown;
116
+ notNull: false;
117
+ hasDefault: false;
118
+ isPrimaryKey: false;
119
+ isAutoincrement: false;
120
+ hasRuntimeDefault: false;
121
+ enumValues: undefined;
122
+ baseColumn: never;
123
+ identity: undefined;
124
+ generated: undefined;
125
+ }, {}, {}>;
126
+ error: import("drizzle-orm/pg-core").PgColumn<{
127
+ name: "error";
128
+ tableName: "jobs";
129
+ dataType: "json";
130
+ columnType: "PgJsonb";
131
+ data: import("../../errors.js").SerializableError;
132
+ driverParam: unknown;
133
+ notNull: false;
134
+ hasDefault: false;
135
+ isPrimaryKey: false;
136
+ isAutoincrement: false;
137
+ hasRuntimeDefault: false;
138
+ enumValues: undefined;
139
+ baseColumn: never;
140
+ identity: undefined;
141
+ generated: undefined;
142
+ }, {}, {
143
+ $type: import("../../errors.js").SerializableError;
144
+ }>;
145
+ timeout_ms: import("drizzle-orm/pg-core").PgColumn<{
146
+ name: "timeout_ms";
147
+ tableName: "jobs";
148
+ dataType: "number";
149
+ columnType: "PgInteger";
150
+ data: number;
151
+ driverParam: string | number;
152
+ notNull: true;
153
+ hasDefault: false;
154
+ isPrimaryKey: false;
155
+ isAutoincrement: false;
156
+ hasRuntimeDefault: false;
157
+ enumValues: undefined;
158
+ baseColumn: never;
159
+ identity: undefined;
160
+ generated: undefined;
161
+ }, {}, {}>;
162
+ expires_at: import("drizzle-orm/pg-core").PgColumn<{
163
+ name: "expires_at";
164
+ tableName: "jobs";
165
+ dataType: "date";
166
+ columnType: "PgTimestamp";
167
+ data: Date;
168
+ driverParam: string;
169
+ notNull: false;
170
+ hasDefault: false;
171
+ isPrimaryKey: false;
172
+ isAutoincrement: false;
173
+ hasRuntimeDefault: false;
174
+ enumValues: undefined;
175
+ baseColumn: never;
176
+ identity: undefined;
177
+ generated: undefined;
178
+ }, {}, {}>;
179
+ started_at: import("drizzle-orm/pg-core").PgColumn<{
180
+ name: "started_at";
181
+ tableName: "jobs";
182
+ dataType: "date";
183
+ columnType: "PgTimestamp";
184
+ data: Date;
185
+ driverParam: string;
186
+ notNull: false;
187
+ hasDefault: false;
188
+ isPrimaryKey: false;
189
+ isAutoincrement: false;
190
+ hasRuntimeDefault: false;
191
+ enumValues: undefined;
192
+ baseColumn: never;
193
+ identity: undefined;
194
+ generated: undefined;
195
+ }, {}, {}>;
196
+ finished_at: import("drizzle-orm/pg-core").PgColumn<{
197
+ name: "finished_at";
198
+ tableName: "jobs";
199
+ dataType: "date";
200
+ columnType: "PgTimestamp";
201
+ data: Date;
202
+ driverParam: string;
203
+ notNull: false;
204
+ hasDefault: false;
205
+ isPrimaryKey: false;
206
+ isAutoincrement: false;
207
+ hasRuntimeDefault: false;
208
+ enumValues: undefined;
209
+ baseColumn: never;
210
+ identity: undefined;
211
+ generated: undefined;
212
+ }, {}, {}>;
213
+ owner_id: import("drizzle-orm/pg-core").PgColumn<{
214
+ name: "owner_id";
215
+ tableName: "jobs";
216
+ dataType: "string";
217
+ columnType: "PgText";
218
+ data: string;
219
+ driverParam: string;
220
+ notNull: false;
221
+ hasDefault: false;
222
+ isPrimaryKey: false;
223
+ isAutoincrement: false;
224
+ hasRuntimeDefault: false;
225
+ enumValues: [string, ...string[]];
226
+ baseColumn: never;
227
+ identity: undefined;
228
+ generated: undefined;
229
+ }, {}, {}>;
230
+ concurrency_limit: import("drizzle-orm/pg-core").PgColumn<{
231
+ name: "concurrency_limit";
232
+ tableName: "jobs";
233
+ dataType: "number";
234
+ columnType: "PgInteger";
235
+ data: number;
236
+ driverParam: string | number;
237
+ notNull: true;
238
+ hasDefault: true;
239
+ isPrimaryKey: false;
240
+ isAutoincrement: false;
241
+ hasRuntimeDefault: false;
242
+ enumValues: undefined;
243
+ baseColumn: never;
244
+ identity: undefined;
245
+ generated: undefined;
246
+ }, {}, {}>;
247
+ created_at: import("drizzle-orm/pg-core").PgColumn<{
248
+ name: "created_at";
249
+ tableName: "jobs";
250
+ dataType: "date";
251
+ columnType: "PgTimestamp";
252
+ data: Date;
253
+ driverParam: string;
254
+ notNull: true;
255
+ hasDefault: true;
256
+ isPrimaryKey: false;
257
+ isAutoincrement: false;
258
+ hasRuntimeDefault: false;
259
+ enumValues: undefined;
260
+ baseColumn: never;
261
+ identity: undefined;
262
+ generated: undefined;
263
+ }, {}, {}>;
264
+ updated_at: import("drizzle-orm/pg-core").PgColumn<{
265
+ name: "updated_at";
266
+ tableName: "jobs";
267
+ dataType: "date";
268
+ columnType: "PgTimestamp";
269
+ data: Date;
270
+ driverParam: string;
271
+ notNull: true;
272
+ hasDefault: true;
273
+ isPrimaryKey: false;
274
+ isAutoincrement: false;
275
+ hasRuntimeDefault: false;
276
+ enumValues: undefined;
277
+ baseColumn: never;
278
+ identity: undefined;
279
+ generated: undefined;
280
+ }, {}, {}>;
281
+ };
282
+ dialect: "pg";
283
+ }>, jobStepsTable: import("drizzle-orm/pg-core").PgTableWithColumns<{
284
+ name: "job_steps";
285
+ schema: string;
286
+ columns: {
287
+ id: import("drizzle-orm/pg-core").PgColumn<{
288
+ name: "id";
289
+ tableName: "job_steps";
290
+ dataType: "string";
291
+ columnType: "PgUUID";
292
+ data: string;
293
+ driverParam: string;
294
+ notNull: true;
295
+ hasDefault: true;
296
+ isPrimaryKey: true;
297
+ isAutoincrement: false;
298
+ hasRuntimeDefault: false;
299
+ enumValues: undefined;
300
+ baseColumn: never;
301
+ identity: undefined;
302
+ generated: undefined;
303
+ }, {}, {}>;
304
+ job_id: import("drizzle-orm/pg-core").PgColumn<{
305
+ name: "job_id";
306
+ tableName: "job_steps";
307
+ dataType: "string";
308
+ columnType: "PgUUID";
309
+ data: string;
310
+ driverParam: string;
311
+ notNull: true;
312
+ hasDefault: false;
313
+ isPrimaryKey: false;
314
+ isAutoincrement: false;
315
+ hasRuntimeDefault: false;
316
+ enumValues: undefined;
317
+ baseColumn: never;
318
+ identity: undefined;
319
+ generated: undefined;
320
+ }, {}, {}>;
321
+ name: import("drizzle-orm/pg-core").PgColumn<{
322
+ name: "name";
323
+ tableName: "job_steps";
324
+ dataType: "string";
325
+ columnType: "PgText";
326
+ data: string;
327
+ driverParam: string;
328
+ notNull: true;
329
+ hasDefault: false;
330
+ isPrimaryKey: false;
331
+ isAutoincrement: false;
332
+ hasRuntimeDefault: false;
333
+ enumValues: [string, ...string[]];
334
+ baseColumn: never;
335
+ identity: undefined;
336
+ generated: undefined;
337
+ }, {}, {}>;
338
+ status: import("drizzle-orm/pg-core").PgColumn<{
339
+ name: "status";
340
+ tableName: "job_steps";
341
+ dataType: "string";
342
+ columnType: "PgText";
343
+ data: "active" | "completed" | "failed" | "cancelled";
344
+ driverParam: string;
345
+ notNull: true;
346
+ hasDefault: true;
347
+ isPrimaryKey: false;
348
+ isAutoincrement: false;
349
+ hasRuntimeDefault: false;
350
+ enumValues: [string, ...string[]];
351
+ baseColumn: never;
352
+ identity: undefined;
353
+ generated: undefined;
354
+ }, {}, {
355
+ $type: "active" | "completed" | "failed" | "cancelled";
356
+ }>;
357
+ output: import("drizzle-orm/pg-core").PgColumn<{
358
+ name: "output";
359
+ tableName: "job_steps";
360
+ dataType: "json";
361
+ columnType: "PgJsonb";
362
+ data: unknown;
363
+ driverParam: unknown;
364
+ notNull: false;
365
+ hasDefault: false;
366
+ isPrimaryKey: false;
367
+ isAutoincrement: false;
368
+ hasRuntimeDefault: false;
369
+ enumValues: undefined;
370
+ baseColumn: never;
371
+ identity: undefined;
372
+ generated: undefined;
373
+ }, {}, {}>;
374
+ error: import("drizzle-orm/pg-core").PgColumn<{
375
+ name: "error";
376
+ tableName: "job_steps";
377
+ dataType: "json";
378
+ columnType: "PgJsonb";
379
+ data: import("../../errors.js").SerializableError;
380
+ driverParam: unknown;
381
+ notNull: false;
382
+ hasDefault: false;
383
+ isPrimaryKey: false;
384
+ isAutoincrement: false;
385
+ hasRuntimeDefault: false;
386
+ enumValues: undefined;
387
+ baseColumn: never;
388
+ identity: undefined;
389
+ generated: undefined;
390
+ }, {}, {
391
+ $type: import("../../errors.js").SerializableError;
392
+ }>;
393
+ started_at: import("drizzle-orm/pg-core").PgColumn<{
394
+ name: "started_at";
395
+ tableName: "job_steps";
396
+ dataType: "date";
397
+ columnType: "PgTimestamp";
398
+ data: Date;
399
+ driverParam: string;
400
+ notNull: true;
401
+ hasDefault: true;
402
+ isPrimaryKey: false;
403
+ isAutoincrement: false;
404
+ hasRuntimeDefault: false;
405
+ enumValues: undefined;
406
+ baseColumn: never;
407
+ identity: undefined;
408
+ generated: undefined;
409
+ }, {}, {}>;
410
+ finished_at: import("drizzle-orm/pg-core").PgColumn<{
411
+ name: "finished_at";
412
+ tableName: "job_steps";
413
+ dataType: "date";
414
+ columnType: "PgTimestamp";
415
+ data: Date;
416
+ driverParam: string;
417
+ notNull: false;
418
+ hasDefault: false;
419
+ isPrimaryKey: false;
420
+ isAutoincrement: false;
421
+ hasRuntimeDefault: false;
422
+ enumValues: undefined;
423
+ baseColumn: never;
424
+ identity: undefined;
425
+ generated: undefined;
426
+ }, {}, {}>;
427
+ timeout_ms: import("drizzle-orm/pg-core").PgColumn<{
428
+ name: "timeout_ms";
429
+ tableName: "job_steps";
430
+ dataType: "number";
431
+ columnType: "PgInteger";
432
+ data: number;
433
+ driverParam: string | number;
434
+ notNull: true;
435
+ hasDefault: false;
436
+ isPrimaryKey: false;
437
+ isAutoincrement: false;
438
+ hasRuntimeDefault: false;
439
+ enumValues: undefined;
440
+ baseColumn: never;
441
+ identity: undefined;
442
+ generated: undefined;
443
+ }, {}, {}>;
444
+ expires_at: import("drizzle-orm/pg-core").PgColumn<{
445
+ name: "expires_at";
446
+ tableName: "job_steps";
447
+ dataType: "date";
448
+ columnType: "PgTimestamp";
449
+ data: Date;
450
+ driverParam: string;
451
+ notNull: false;
452
+ hasDefault: false;
453
+ isPrimaryKey: false;
454
+ isAutoincrement: false;
455
+ hasRuntimeDefault: false;
456
+ enumValues: undefined;
457
+ baseColumn: never;
458
+ identity: undefined;
459
+ generated: undefined;
460
+ }, {}, {}>;
461
+ retries_limit: import("drizzle-orm/pg-core").PgColumn<{
462
+ name: "retries_limit";
463
+ tableName: "job_steps";
464
+ dataType: "number";
465
+ columnType: "PgInteger";
466
+ data: number;
467
+ driverParam: string | number;
468
+ notNull: true;
469
+ hasDefault: true;
470
+ isPrimaryKey: false;
471
+ isAutoincrement: false;
472
+ hasRuntimeDefault: false;
473
+ enumValues: undefined;
474
+ baseColumn: never;
475
+ identity: undefined;
476
+ generated: undefined;
477
+ }, {}, {}>;
478
+ retries_count: import("drizzle-orm/pg-core").PgColumn<{
479
+ name: "retries_count";
480
+ tableName: "job_steps";
481
+ dataType: "number";
482
+ columnType: "PgInteger";
483
+ data: number;
484
+ driverParam: string | number;
485
+ notNull: true;
486
+ hasDefault: true;
487
+ isPrimaryKey: false;
488
+ isAutoincrement: false;
489
+ hasRuntimeDefault: false;
490
+ enumValues: undefined;
491
+ baseColumn: never;
492
+ identity: undefined;
493
+ generated: undefined;
494
+ }, {}, {}>;
495
+ delayed_ms: import("drizzle-orm/pg-core").PgColumn<{
496
+ name: "delayed_ms";
497
+ tableName: "job_steps";
498
+ dataType: "number";
499
+ columnType: "PgInteger";
500
+ data: number;
501
+ driverParam: string | number;
502
+ notNull: false;
503
+ hasDefault: false;
504
+ isPrimaryKey: false;
505
+ isAutoincrement: false;
506
+ hasRuntimeDefault: false;
507
+ enumValues: undefined;
508
+ baseColumn: never;
509
+ identity: undefined;
510
+ generated: undefined;
511
+ }, {}, {}>;
512
+ history_failed_attempts: import("drizzle-orm/pg-core").PgColumn<{
513
+ name: "history_failed_attempts";
514
+ tableName: "job_steps";
515
+ dataType: "json";
516
+ columnType: "PgJsonb";
517
+ data: Record<string, {
518
+ failedAt: Date;
519
+ error: import("../../errors.js").SerializableError;
520
+ delayedMs: number;
521
+ }>;
522
+ driverParam: unknown;
523
+ notNull: true;
524
+ hasDefault: true;
525
+ isPrimaryKey: false;
526
+ isAutoincrement: false;
527
+ hasRuntimeDefault: false;
528
+ enumValues: undefined;
529
+ baseColumn: never;
530
+ identity: undefined;
531
+ generated: undefined;
532
+ }, {}, {
533
+ $type: Record<string, {
534
+ failedAt: Date;
535
+ error: import("../../errors.js").SerializableError;
536
+ delayedMs: number;
537
+ }>;
538
+ }>;
539
+ created_at: import("drizzle-orm/pg-core").PgColumn<{
540
+ name: "created_at";
541
+ tableName: "job_steps";
542
+ dataType: "date";
543
+ columnType: "PgTimestamp";
544
+ data: Date;
545
+ driverParam: string;
546
+ notNull: true;
547
+ hasDefault: true;
548
+ isPrimaryKey: false;
549
+ isAutoincrement: false;
550
+ hasRuntimeDefault: false;
551
+ enumValues: undefined;
552
+ baseColumn: never;
553
+ identity: undefined;
554
+ generated: undefined;
555
+ }, {}, {}>;
556
+ updated_at: import("drizzle-orm/pg-core").PgColumn<{
557
+ name: "updated_at";
558
+ tableName: "job_steps";
559
+ dataType: "date";
560
+ columnType: "PgTimestamp";
561
+ data: Date;
562
+ driverParam: string;
563
+ notNull: true;
564
+ hasDefault: true;
565
+ isPrimaryKey: false;
566
+ isAutoincrement: false;
567
+ hasRuntimeDefault: false;
568
+ enumValues: undefined;
569
+ baseColumn: never;
570
+ identity: undefined;
571
+ generated: undefined;
572
+ }, {}, {}>;
573
+ };
574
+ dialect: "pg";
575
+ }>;
576
+ export { schema, jobsTable, jobStepsTable };
577
+ //# sourceMappingURL=schema.default.d.ts.map
@@ -0,0 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA0B,CAAA;AAElE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ import createSchema from './schema.js';
2
+ const { schema, jobsTable, jobStepsTable } = createSchema('duron');
3
+ export { schema, jobsTable, jobStepsTable };
@@ -0,0 +1,87 @@
1
+ import { sql } from 'drizzle-orm';
2
+ import { check, index, integer, jsonb, pgSchema, text, timestamp, unique, uuid } from 'drizzle-orm/pg-core';
3
+ import { JOB_STATUSES, STEP_STATUS_ACTIVE, STEP_STATUSES } from '../../constants.js';
4
+ export default function createSchema(schemaName) {
5
+ const schema = pgSchema(schemaName);
6
+ const jobsTable = schema.table('jobs', {
7
+ id: uuid('id').primaryKey().defaultRandom(),
8
+ action_name: text('action_name').notNull(),
9
+ group_key: text('group_key').notNull(),
10
+ status: text('status').$type().notNull().default('created'),
11
+ checksum: text('checksum').notNull(),
12
+ input: jsonb('input').notNull().default({}),
13
+ output: jsonb('output'),
14
+ error: jsonb('error').$type(),
15
+ timeout_ms: integer('timeout_ms').notNull(),
16
+ expires_at: timestamp('expires_at', { withTimezone: true }),
17
+ started_at: timestamp('started_at', { withTimezone: true }),
18
+ finished_at: timestamp('finished_at', { withTimezone: true }),
19
+ owner_id: text('owner_id'),
20
+ concurrency_limit: integer('concurrency_limit').notNull().default(10),
21
+ created_at: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
22
+ updated_at: timestamp('updated_at', { withTimezone: true })
23
+ .notNull()
24
+ .defaultNow()
25
+ .$onUpdateFn(() => ({
26
+ toISOString: () => sql `now()`,
27
+ })),
28
+ }, (table) => [
29
+ index('idx_jobs_action_name').on(table.action_name),
30
+ index('idx_jobs_status').on(table.status),
31
+ index('idx_jobs_group_key').on(table.group_key),
32
+ index('idx_jobs_started_at').on(table.started_at),
33
+ index('idx_jobs_finished_at').on(table.finished_at),
34
+ index('idx_jobs_expires_at').on(table.expires_at),
35
+ index('idx_jobs_owner_id').on(table.owner_id),
36
+ index('idx_jobs_checksum').on(table.checksum),
37
+ index('idx_jobs_concurrency_limit').on(table.concurrency_limit),
38
+ index('idx_jobs_action_status').on(table.action_name, table.status),
39
+ index('idx_jobs_action_group').on(table.action_name, table.group_key),
40
+ index('idx_jobs_input_fts').using('gin', sql `to_tsvector('english', ${table.input}::text)`),
41
+ index('idx_jobs_output_fts').using('gin', sql `to_tsvector('english', ${table.output}::text)`),
42
+ check('jobs_status_check', sql `${table.status} IN ${sql.raw(`(${JOB_STATUSES.map((s) => `'${s}'`).join(',')})`)}`),
43
+ ]);
44
+ const jobStepsTable = schema.table('job_steps', {
45
+ id: uuid('id').primaryKey().defaultRandom(),
46
+ job_id: uuid('job_id')
47
+ .notNull()
48
+ .references(() => jobsTable.id, { onDelete: 'cascade' }),
49
+ name: text('name').notNull(),
50
+ status: text('status').$type().notNull().default(STEP_STATUS_ACTIVE),
51
+ output: jsonb('output'),
52
+ error: jsonb('error').$type(),
53
+ started_at: timestamp('started_at', { withTimezone: true }).notNull().defaultNow(),
54
+ finished_at: timestamp('finished_at', { withTimezone: true }),
55
+ timeout_ms: integer('timeout_ms').notNull(),
56
+ expires_at: timestamp('expires_at', { withTimezone: true }),
57
+ retries_limit: integer('retries_limit').notNull().default(0),
58
+ retries_count: integer('retries_count').notNull().default(0),
59
+ delayed_ms: integer('delayed_ms'),
60
+ history_failed_attempts: jsonb('history_failed_attempts')
61
+ .$type()
62
+ .notNull()
63
+ .default({}),
64
+ created_at: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
65
+ updated_at: timestamp('updated_at', { withTimezone: true })
66
+ .notNull()
67
+ .defaultNow()
68
+ .$onUpdateFn(() => ({
69
+ toISOString: () => sql `now()`,
70
+ })),
71
+ }, (table) => [
72
+ index('idx_job_steps_job_id').on(table.job_id),
73
+ index('idx_job_steps_status').on(table.status),
74
+ index('idx_job_steps_name').on(table.name),
75
+ index('idx_job_steps_expires_at').on(table.expires_at),
76
+ index('idx_job_steps_job_status').on(table.job_id, table.status),
77
+ index('idx_job_steps_job_name').on(table.job_id, table.name),
78
+ index('idx_job_steps_output_fts').using('gin', sql `to_tsvector('english', ${table.output}::text)`),
79
+ unique('unique_job_step_name').on(table.job_id, table.name),
80
+ check('job_steps_status_check', sql `${table.status} IN ${sql.raw(`(${STEP_STATUSES.map((s) => `'${s}'`).join(',')})`)}`),
81
+ ]);
82
+ return {
83
+ schema,
84
+ jobsTable,
85
+ jobStepsTable,
86
+ };
87
+ }