pg-boss 12.25.0 → 12.26.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.
@@ -0,0 +1,2069 @@
1
+ {
2
+ "_generated": "Generated by scripts/gen-manifest.ts — do not edit by hand. Run `npm run gen:manifest`.",
3
+ "version": 37,
4
+ "schemaToken": "{{schema}}",
5
+ "partitioned": {
6
+ "tables": [
7
+ "bam",
8
+ "job",
9
+ "job_common",
10
+ "job_dependency",
11
+ "queue",
12
+ "queue_stats",
13
+ "schedule",
14
+ "subscription",
15
+ "version",
16
+ "warning"
17
+ ],
18
+ "columns": [
19
+ {
20
+ "table": "bam",
21
+ "column": "command",
22
+ "type": "text",
23
+ "notNull": true,
24
+ "default": null
25
+ },
26
+ {
27
+ "table": "bam",
28
+ "column": "completed_on",
29
+ "type": "timestamp with time zone",
30
+ "notNull": false,
31
+ "default": null
32
+ },
33
+ {
34
+ "table": "bam",
35
+ "column": "created_on",
36
+ "type": "timestamp with time zone",
37
+ "notNull": true,
38
+ "default": "clock_timestamp()"
39
+ },
40
+ {
41
+ "table": "bam",
42
+ "column": "error",
43
+ "type": "text",
44
+ "notNull": false,
45
+ "default": null
46
+ },
47
+ {
48
+ "table": "bam",
49
+ "column": "id",
50
+ "type": "uuid",
51
+ "notNull": true,
52
+ "default": "gen_random_uuid()"
53
+ },
54
+ {
55
+ "table": "bam",
56
+ "column": "name",
57
+ "type": "text",
58
+ "notNull": true,
59
+ "default": null
60
+ },
61
+ {
62
+ "table": "bam",
63
+ "column": "queue",
64
+ "type": "text",
65
+ "notNull": false,
66
+ "default": null
67
+ },
68
+ {
69
+ "table": "bam",
70
+ "column": "started_on",
71
+ "type": "timestamp with time zone",
72
+ "notNull": false,
73
+ "default": null
74
+ },
75
+ {
76
+ "table": "bam",
77
+ "column": "status",
78
+ "type": "text",
79
+ "notNull": true,
80
+ "default": "'pending'::text"
81
+ },
82
+ {
83
+ "table": "bam",
84
+ "column": "table_name",
85
+ "type": "text",
86
+ "notNull": true,
87
+ "default": null
88
+ },
89
+ {
90
+ "table": "bam",
91
+ "column": "version",
92
+ "type": "integer",
93
+ "notNull": true,
94
+ "default": null
95
+ },
96
+ {
97
+ "table": "job_common",
98
+ "column": "blocked",
99
+ "type": "boolean",
100
+ "notNull": true,
101
+ "default": "false"
102
+ },
103
+ {
104
+ "table": "job_common",
105
+ "column": "blocking",
106
+ "type": "boolean",
107
+ "notNull": true,
108
+ "default": "false"
109
+ },
110
+ {
111
+ "table": "job_common",
112
+ "column": "completed_on",
113
+ "type": "timestamp with time zone",
114
+ "notNull": false,
115
+ "default": null
116
+ },
117
+ {
118
+ "table": "job_common",
119
+ "column": "created_on",
120
+ "type": "timestamp with time zone",
121
+ "notNull": true,
122
+ "default": "now()"
123
+ },
124
+ {
125
+ "table": "job_common",
126
+ "column": "data",
127
+ "type": "jsonb",
128
+ "notNull": false,
129
+ "default": null
130
+ },
131
+ {
132
+ "table": "job_common",
133
+ "column": "dead_letter",
134
+ "type": "text",
135
+ "notNull": false,
136
+ "default": null
137
+ },
138
+ {
139
+ "table": "job_common",
140
+ "column": "deletion_seconds",
141
+ "type": "integer",
142
+ "notNull": true,
143
+ "default": "604800"
144
+ },
145
+ {
146
+ "table": "job_common",
147
+ "column": "expire_seconds",
148
+ "type": "integer",
149
+ "notNull": true,
150
+ "default": "900"
151
+ },
152
+ {
153
+ "table": "job_common",
154
+ "column": "group_id",
155
+ "type": "text",
156
+ "notNull": false,
157
+ "default": null
158
+ },
159
+ {
160
+ "table": "job_common",
161
+ "column": "group_tier",
162
+ "type": "text",
163
+ "notNull": false,
164
+ "default": null
165
+ },
166
+ {
167
+ "table": "job_common",
168
+ "column": "heartbeat_on",
169
+ "type": "timestamp with time zone",
170
+ "notNull": false,
171
+ "default": null
172
+ },
173
+ {
174
+ "table": "job_common",
175
+ "column": "heartbeat_seconds",
176
+ "type": "integer",
177
+ "notNull": false,
178
+ "default": null
179
+ },
180
+ {
181
+ "table": "job_common",
182
+ "column": "id",
183
+ "type": "uuid",
184
+ "notNull": true,
185
+ "default": "gen_random_uuid()"
186
+ },
187
+ {
188
+ "table": "job_common",
189
+ "column": "keep_until",
190
+ "type": "timestamp with time zone",
191
+ "notNull": true,
192
+ "default": "(now() + '336:00:00'::interval)"
193
+ },
194
+ {
195
+ "table": "job_common",
196
+ "column": "name",
197
+ "type": "text",
198
+ "notNull": true,
199
+ "default": null
200
+ },
201
+ {
202
+ "table": "job_common",
203
+ "column": "output",
204
+ "type": "jsonb",
205
+ "notNull": false,
206
+ "default": null
207
+ },
208
+ {
209
+ "table": "job_common",
210
+ "column": "pending_dependencies",
211
+ "type": "integer",
212
+ "notNull": true,
213
+ "default": "0"
214
+ },
215
+ {
216
+ "table": "job_common",
217
+ "column": "policy",
218
+ "type": "text",
219
+ "notNull": false,
220
+ "default": null
221
+ },
222
+ {
223
+ "table": "job_common",
224
+ "column": "priority",
225
+ "type": "integer",
226
+ "notNull": true,
227
+ "default": "0"
228
+ },
229
+ {
230
+ "table": "job_common",
231
+ "column": "retry_backoff",
232
+ "type": "boolean",
233
+ "notNull": true,
234
+ "default": "false"
235
+ },
236
+ {
237
+ "table": "job_common",
238
+ "column": "retry_count",
239
+ "type": "integer",
240
+ "notNull": true,
241
+ "default": "0"
242
+ },
243
+ {
244
+ "table": "job_common",
245
+ "column": "retry_delay",
246
+ "type": "integer",
247
+ "notNull": true,
248
+ "default": "0"
249
+ },
250
+ {
251
+ "table": "job_common",
252
+ "column": "retry_delay_max",
253
+ "type": "integer",
254
+ "notNull": false,
255
+ "default": null
256
+ },
257
+ {
258
+ "table": "job_common",
259
+ "column": "retry_limit",
260
+ "type": "integer",
261
+ "notNull": true,
262
+ "default": "2"
263
+ },
264
+ {
265
+ "table": "job_common",
266
+ "column": "singleton_key",
267
+ "type": "text",
268
+ "notNull": false,
269
+ "default": null
270
+ },
271
+ {
272
+ "table": "job_common",
273
+ "column": "singleton_on",
274
+ "type": "timestamp without time zone",
275
+ "notNull": false,
276
+ "default": null
277
+ },
278
+ {
279
+ "table": "job_common",
280
+ "column": "source_created_on",
281
+ "type": "timestamp with time zone",
282
+ "notNull": false,
283
+ "default": null
284
+ },
285
+ {
286
+ "table": "job_common",
287
+ "column": "source_id",
288
+ "type": "uuid",
289
+ "notNull": false,
290
+ "default": null
291
+ },
292
+ {
293
+ "table": "job_common",
294
+ "column": "source_name",
295
+ "type": "text",
296
+ "notNull": false,
297
+ "default": null
298
+ },
299
+ {
300
+ "table": "job_common",
301
+ "column": "source_retry_count",
302
+ "type": "integer",
303
+ "notNull": false,
304
+ "default": null
305
+ },
306
+ {
307
+ "table": "job_common",
308
+ "column": "start_after",
309
+ "type": "timestamp with time zone",
310
+ "notNull": true,
311
+ "default": "now()"
312
+ },
313
+ {
314
+ "table": "job_common",
315
+ "column": "started_on",
316
+ "type": "timestamp with time zone",
317
+ "notNull": false,
318
+ "default": null
319
+ },
320
+ {
321
+ "table": "job_common",
322
+ "column": "state",
323
+ "type": "{{schema}}.job_state",
324
+ "notNull": true,
325
+ "default": "'created'::{{schema}}.job_state"
326
+ },
327
+ {
328
+ "table": "job_dependency",
329
+ "column": "child_id",
330
+ "type": "uuid",
331
+ "notNull": true,
332
+ "default": null
333
+ },
334
+ {
335
+ "table": "job_dependency",
336
+ "column": "child_name",
337
+ "type": "text",
338
+ "notNull": true,
339
+ "default": null
340
+ },
341
+ {
342
+ "table": "job_dependency",
343
+ "column": "parent_id",
344
+ "type": "uuid",
345
+ "notNull": true,
346
+ "default": null
347
+ },
348
+ {
349
+ "table": "job_dependency",
350
+ "column": "parent_name",
351
+ "type": "text",
352
+ "notNull": true,
353
+ "default": null
354
+ },
355
+ {
356
+ "table": "job",
357
+ "column": "blocked",
358
+ "type": "boolean",
359
+ "notNull": true,
360
+ "default": "false"
361
+ },
362
+ {
363
+ "table": "job",
364
+ "column": "blocking",
365
+ "type": "boolean",
366
+ "notNull": true,
367
+ "default": "false"
368
+ },
369
+ {
370
+ "table": "job",
371
+ "column": "completed_on",
372
+ "type": "timestamp with time zone",
373
+ "notNull": false,
374
+ "default": null
375
+ },
376
+ {
377
+ "table": "job",
378
+ "column": "created_on",
379
+ "type": "timestamp with time zone",
380
+ "notNull": true,
381
+ "default": "now()"
382
+ },
383
+ {
384
+ "table": "job",
385
+ "column": "data",
386
+ "type": "jsonb",
387
+ "notNull": false,
388
+ "default": null
389
+ },
390
+ {
391
+ "table": "job",
392
+ "column": "dead_letter",
393
+ "type": "text",
394
+ "notNull": false,
395
+ "default": null
396
+ },
397
+ {
398
+ "table": "job",
399
+ "column": "deletion_seconds",
400
+ "type": "integer",
401
+ "notNull": true,
402
+ "default": "604800"
403
+ },
404
+ {
405
+ "table": "job",
406
+ "column": "expire_seconds",
407
+ "type": "integer",
408
+ "notNull": true,
409
+ "default": "900"
410
+ },
411
+ {
412
+ "table": "job",
413
+ "column": "group_id",
414
+ "type": "text",
415
+ "notNull": false,
416
+ "default": null
417
+ },
418
+ {
419
+ "table": "job",
420
+ "column": "group_tier",
421
+ "type": "text",
422
+ "notNull": false,
423
+ "default": null
424
+ },
425
+ {
426
+ "table": "job",
427
+ "column": "heartbeat_on",
428
+ "type": "timestamp with time zone",
429
+ "notNull": false,
430
+ "default": null
431
+ },
432
+ {
433
+ "table": "job",
434
+ "column": "heartbeat_seconds",
435
+ "type": "integer",
436
+ "notNull": false,
437
+ "default": null
438
+ },
439
+ {
440
+ "table": "job",
441
+ "column": "id",
442
+ "type": "uuid",
443
+ "notNull": true,
444
+ "default": "gen_random_uuid()"
445
+ },
446
+ {
447
+ "table": "job",
448
+ "column": "keep_until",
449
+ "type": "timestamp with time zone",
450
+ "notNull": true,
451
+ "default": "(now() + '336:00:00'::interval)"
452
+ },
453
+ {
454
+ "table": "job",
455
+ "column": "name",
456
+ "type": "text",
457
+ "notNull": true,
458
+ "default": null
459
+ },
460
+ {
461
+ "table": "job",
462
+ "column": "output",
463
+ "type": "jsonb",
464
+ "notNull": false,
465
+ "default": null
466
+ },
467
+ {
468
+ "table": "job",
469
+ "column": "pending_dependencies",
470
+ "type": "integer",
471
+ "notNull": true,
472
+ "default": "0"
473
+ },
474
+ {
475
+ "table": "job",
476
+ "column": "policy",
477
+ "type": "text",
478
+ "notNull": false,
479
+ "default": null
480
+ },
481
+ {
482
+ "table": "job",
483
+ "column": "priority",
484
+ "type": "integer",
485
+ "notNull": true,
486
+ "default": "0"
487
+ },
488
+ {
489
+ "table": "job",
490
+ "column": "retry_backoff",
491
+ "type": "boolean",
492
+ "notNull": true,
493
+ "default": "false"
494
+ },
495
+ {
496
+ "table": "job",
497
+ "column": "retry_count",
498
+ "type": "integer",
499
+ "notNull": true,
500
+ "default": "0"
501
+ },
502
+ {
503
+ "table": "job",
504
+ "column": "retry_delay",
505
+ "type": "integer",
506
+ "notNull": true,
507
+ "default": "0"
508
+ },
509
+ {
510
+ "table": "job",
511
+ "column": "retry_delay_max",
512
+ "type": "integer",
513
+ "notNull": false,
514
+ "default": null
515
+ },
516
+ {
517
+ "table": "job",
518
+ "column": "retry_limit",
519
+ "type": "integer",
520
+ "notNull": true,
521
+ "default": "2"
522
+ },
523
+ {
524
+ "table": "job",
525
+ "column": "singleton_key",
526
+ "type": "text",
527
+ "notNull": false,
528
+ "default": null
529
+ },
530
+ {
531
+ "table": "job",
532
+ "column": "singleton_on",
533
+ "type": "timestamp without time zone",
534
+ "notNull": false,
535
+ "default": null
536
+ },
537
+ {
538
+ "table": "job",
539
+ "column": "source_created_on",
540
+ "type": "timestamp with time zone",
541
+ "notNull": false,
542
+ "default": null
543
+ },
544
+ {
545
+ "table": "job",
546
+ "column": "source_id",
547
+ "type": "uuid",
548
+ "notNull": false,
549
+ "default": null
550
+ },
551
+ {
552
+ "table": "job",
553
+ "column": "source_name",
554
+ "type": "text",
555
+ "notNull": false,
556
+ "default": null
557
+ },
558
+ {
559
+ "table": "job",
560
+ "column": "source_retry_count",
561
+ "type": "integer",
562
+ "notNull": false,
563
+ "default": null
564
+ },
565
+ {
566
+ "table": "job",
567
+ "column": "start_after",
568
+ "type": "timestamp with time zone",
569
+ "notNull": true,
570
+ "default": "now()"
571
+ },
572
+ {
573
+ "table": "job",
574
+ "column": "started_on",
575
+ "type": "timestamp with time zone",
576
+ "notNull": false,
577
+ "default": null
578
+ },
579
+ {
580
+ "table": "job",
581
+ "column": "state",
582
+ "type": "{{schema}}.job_state",
583
+ "notNull": true,
584
+ "default": "'created'::{{schema}}.job_state"
585
+ },
586
+ {
587
+ "table": "queue_stats",
588
+ "column": "active_count",
589
+ "type": "integer",
590
+ "notNull": true,
591
+ "default": "0"
592
+ },
593
+ {
594
+ "table": "queue_stats",
595
+ "column": "captured_on",
596
+ "type": "timestamp with time zone",
597
+ "notNull": true,
598
+ "default": "now()"
599
+ },
600
+ {
601
+ "table": "queue_stats",
602
+ "column": "deferred_count",
603
+ "type": "integer",
604
+ "notNull": true,
605
+ "default": "0"
606
+ },
607
+ {
608
+ "table": "queue_stats",
609
+ "column": "failed_count",
610
+ "type": "integer",
611
+ "notNull": true,
612
+ "default": "0"
613
+ },
614
+ {
615
+ "table": "queue_stats",
616
+ "column": "id",
617
+ "type": "uuid",
618
+ "notNull": true,
619
+ "default": "gen_random_uuid()"
620
+ },
621
+ {
622
+ "table": "queue_stats",
623
+ "column": "name",
624
+ "type": "text",
625
+ "notNull": true,
626
+ "default": null
627
+ },
628
+ {
629
+ "table": "queue_stats",
630
+ "column": "queued_count",
631
+ "type": "integer",
632
+ "notNull": true,
633
+ "default": "0"
634
+ },
635
+ {
636
+ "table": "queue_stats",
637
+ "column": "ready_count",
638
+ "type": "integer",
639
+ "notNull": true,
640
+ "default": "0"
641
+ },
642
+ {
643
+ "table": "queue_stats",
644
+ "column": "total_count",
645
+ "type": "integer",
646
+ "notNull": true,
647
+ "default": "0"
648
+ },
649
+ {
650
+ "table": "queue",
651
+ "column": "active_count",
652
+ "type": "integer",
653
+ "notNull": true,
654
+ "default": "0"
655
+ },
656
+ {
657
+ "table": "queue",
658
+ "column": "created_on",
659
+ "type": "timestamp with time zone",
660
+ "notNull": true,
661
+ "default": "now()"
662
+ },
663
+ {
664
+ "table": "queue",
665
+ "column": "dead_letter",
666
+ "type": "text",
667
+ "notNull": false,
668
+ "default": null
669
+ },
670
+ {
671
+ "table": "queue",
672
+ "column": "deferred_count",
673
+ "type": "integer",
674
+ "notNull": true,
675
+ "default": "0"
676
+ },
677
+ {
678
+ "table": "queue",
679
+ "column": "deletion_seconds",
680
+ "type": "integer",
681
+ "notNull": true,
682
+ "default": null
683
+ },
684
+ {
685
+ "table": "queue",
686
+ "column": "expire_seconds",
687
+ "type": "integer",
688
+ "notNull": true,
689
+ "default": null
690
+ },
691
+ {
692
+ "table": "queue",
693
+ "column": "failed_count",
694
+ "type": "integer",
695
+ "notNull": true,
696
+ "default": "0"
697
+ },
698
+ {
699
+ "table": "queue",
700
+ "column": "heartbeat_seconds",
701
+ "type": "integer",
702
+ "notNull": false,
703
+ "default": null
704
+ },
705
+ {
706
+ "table": "queue",
707
+ "column": "maintain_on",
708
+ "type": "timestamp with time zone",
709
+ "notNull": false,
710
+ "default": null
711
+ },
712
+ {
713
+ "table": "queue",
714
+ "column": "monitor_on",
715
+ "type": "timestamp with time zone",
716
+ "notNull": false,
717
+ "default": null
718
+ },
719
+ {
720
+ "table": "queue",
721
+ "column": "name",
722
+ "type": "text",
723
+ "notNull": true,
724
+ "default": null
725
+ },
726
+ {
727
+ "table": "queue",
728
+ "column": "notify",
729
+ "type": "boolean",
730
+ "notNull": true,
731
+ "default": "false"
732
+ },
733
+ {
734
+ "table": "queue",
735
+ "column": "partition",
736
+ "type": "boolean",
737
+ "notNull": true,
738
+ "default": null
739
+ },
740
+ {
741
+ "table": "queue",
742
+ "column": "policy",
743
+ "type": "text",
744
+ "notNull": true,
745
+ "default": null
746
+ },
747
+ {
748
+ "table": "queue",
749
+ "column": "queued_count",
750
+ "type": "integer",
751
+ "notNull": true,
752
+ "default": "0"
753
+ },
754
+ {
755
+ "table": "queue",
756
+ "column": "ready_count",
757
+ "type": "integer",
758
+ "notNull": true,
759
+ "default": "0"
760
+ },
761
+ {
762
+ "table": "queue",
763
+ "column": "ready_history",
764
+ "type": "integer[]",
765
+ "notNull": true,
766
+ "default": "'{}'::integer[]"
767
+ },
768
+ {
769
+ "table": "queue",
770
+ "column": "retention_seconds",
771
+ "type": "integer",
772
+ "notNull": true,
773
+ "default": null
774
+ },
775
+ {
776
+ "table": "queue",
777
+ "column": "retry_backoff",
778
+ "type": "boolean",
779
+ "notNull": true,
780
+ "default": null
781
+ },
782
+ {
783
+ "table": "queue",
784
+ "column": "retry_delay",
785
+ "type": "integer",
786
+ "notNull": true,
787
+ "default": null
788
+ },
789
+ {
790
+ "table": "queue",
791
+ "column": "retry_delay_max",
792
+ "type": "integer",
793
+ "notNull": false,
794
+ "default": null
795
+ },
796
+ {
797
+ "table": "queue",
798
+ "column": "retry_limit",
799
+ "type": "integer",
800
+ "notNull": true,
801
+ "default": null
802
+ },
803
+ {
804
+ "table": "queue",
805
+ "column": "singletons_active",
806
+ "type": "text[]",
807
+ "notNull": false,
808
+ "default": null
809
+ },
810
+ {
811
+ "table": "queue",
812
+ "column": "table_name",
813
+ "type": "text",
814
+ "notNull": true,
815
+ "default": null
816
+ },
817
+ {
818
+ "table": "queue",
819
+ "column": "total_count",
820
+ "type": "integer",
821
+ "notNull": true,
822
+ "default": "0"
823
+ },
824
+ {
825
+ "table": "queue",
826
+ "column": "updated_on",
827
+ "type": "timestamp with time zone",
828
+ "notNull": true,
829
+ "default": "now()"
830
+ },
831
+ {
832
+ "table": "queue",
833
+ "column": "warning_queued",
834
+ "type": "integer",
835
+ "notNull": true,
836
+ "default": "0"
837
+ },
838
+ {
839
+ "table": "schedule",
840
+ "column": "created_on",
841
+ "type": "timestamp with time zone",
842
+ "notNull": true,
843
+ "default": "now()"
844
+ },
845
+ {
846
+ "table": "schedule",
847
+ "column": "cron",
848
+ "type": "text",
849
+ "notNull": true,
850
+ "default": null
851
+ },
852
+ {
853
+ "table": "schedule",
854
+ "column": "data",
855
+ "type": "jsonb",
856
+ "notNull": false,
857
+ "default": null
858
+ },
859
+ {
860
+ "table": "schedule",
861
+ "column": "key",
862
+ "type": "text",
863
+ "notNull": true,
864
+ "default": "''::text"
865
+ },
866
+ {
867
+ "table": "schedule",
868
+ "column": "name",
869
+ "type": "text",
870
+ "notNull": true,
871
+ "default": null
872
+ },
873
+ {
874
+ "table": "schedule",
875
+ "column": "options",
876
+ "type": "jsonb",
877
+ "notNull": false,
878
+ "default": null
879
+ },
880
+ {
881
+ "table": "schedule",
882
+ "column": "timezone",
883
+ "type": "text",
884
+ "notNull": false,
885
+ "default": null
886
+ },
887
+ {
888
+ "table": "schedule",
889
+ "column": "updated_on",
890
+ "type": "timestamp with time zone",
891
+ "notNull": true,
892
+ "default": "now()"
893
+ },
894
+ {
895
+ "table": "subscription",
896
+ "column": "created_on",
897
+ "type": "timestamp with time zone",
898
+ "notNull": true,
899
+ "default": "now()"
900
+ },
901
+ {
902
+ "table": "subscription",
903
+ "column": "event",
904
+ "type": "text",
905
+ "notNull": true,
906
+ "default": null
907
+ },
908
+ {
909
+ "table": "subscription",
910
+ "column": "name",
911
+ "type": "text",
912
+ "notNull": true,
913
+ "default": null
914
+ },
915
+ {
916
+ "table": "subscription",
917
+ "column": "updated_on",
918
+ "type": "timestamp with time zone",
919
+ "notNull": true,
920
+ "default": "now()"
921
+ },
922
+ {
923
+ "table": "version",
924
+ "column": "bam_on",
925
+ "type": "timestamp with time zone",
926
+ "notNull": false,
927
+ "default": null
928
+ },
929
+ {
930
+ "table": "version",
931
+ "column": "cron_on",
932
+ "type": "timestamp with time zone",
933
+ "notNull": false,
934
+ "default": null
935
+ },
936
+ {
937
+ "table": "version",
938
+ "column": "flow_on",
939
+ "type": "timestamp with time zone",
940
+ "notNull": false,
941
+ "default": null
942
+ },
943
+ {
944
+ "table": "version",
945
+ "column": "version",
946
+ "type": "integer",
947
+ "notNull": true,
948
+ "default": null
949
+ },
950
+ {
951
+ "table": "warning",
952
+ "column": "created_on",
953
+ "type": "timestamp with time zone",
954
+ "notNull": true,
955
+ "default": "now()"
956
+ },
957
+ {
958
+ "table": "warning",
959
+ "column": "data",
960
+ "type": "jsonb",
961
+ "notNull": false,
962
+ "default": null
963
+ },
964
+ {
965
+ "table": "warning",
966
+ "column": "id",
967
+ "type": "uuid",
968
+ "notNull": true,
969
+ "default": "gen_random_uuid()"
970
+ },
971
+ {
972
+ "table": "warning",
973
+ "column": "message",
974
+ "type": "text",
975
+ "notNull": true,
976
+ "default": null
977
+ },
978
+ {
979
+ "table": "warning",
980
+ "column": "type",
981
+ "type": "text",
982
+ "notNull": true,
983
+ "default": null
984
+ }
985
+ ],
986
+ "constraints": [
987
+ {
988
+ "table": "bam",
989
+ "def": "PRIMARY KEY (id)"
990
+ },
991
+ {
992
+ "table": "job_common",
993
+ "def": "CHECK ((NOT ((policy = 'key_strict_fifo'::text) AND (singleton_key IS NULL))))"
994
+ },
995
+ {
996
+ "table": "job_common",
997
+ "def": "FOREIGN KEY (dead_letter) REFERENCES {{schema}}.queue(name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED"
998
+ },
999
+ {
1000
+ "table": "job_common",
1001
+ "def": "FOREIGN KEY (name) REFERENCES {{schema}}.queue(name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED"
1002
+ },
1003
+ {
1004
+ "table": "job_common",
1005
+ "def": "PRIMARY KEY (name, id)"
1006
+ },
1007
+ {
1008
+ "table": "job_dependency",
1009
+ "def": "PRIMARY KEY (child_name, child_id, parent_name, parent_id)"
1010
+ },
1011
+ {
1012
+ "table": "job",
1013
+ "def": "PRIMARY KEY (name, id)"
1014
+ },
1015
+ {
1016
+ "table": "queue_stats",
1017
+ "def": "PRIMARY KEY (id, captured_on)"
1018
+ },
1019
+ {
1020
+ "table": "queue",
1021
+ "def": "CHECK ((dead_letter IS DISTINCT FROM name))"
1022
+ },
1023
+ {
1024
+ "table": "queue",
1025
+ "def": "FOREIGN KEY (dead_letter) REFERENCES {{schema}}.queue(name)"
1026
+ },
1027
+ {
1028
+ "table": "queue",
1029
+ "def": "PRIMARY KEY (name)"
1030
+ },
1031
+ {
1032
+ "table": "schedule",
1033
+ "def": "FOREIGN KEY (name) REFERENCES {{schema}}.queue(name) ON DELETE CASCADE"
1034
+ },
1035
+ {
1036
+ "table": "schedule",
1037
+ "def": "PRIMARY KEY (name, key)"
1038
+ },
1039
+ {
1040
+ "table": "subscription",
1041
+ "def": "FOREIGN KEY (name) REFERENCES {{schema}}.queue(name) ON DELETE CASCADE"
1042
+ },
1043
+ {
1044
+ "table": "subscription",
1045
+ "def": "PRIMARY KEY (event, name)"
1046
+ },
1047
+ {
1048
+ "table": "version",
1049
+ "def": "PRIMARY KEY (version)"
1050
+ },
1051
+ {
1052
+ "table": "warning",
1053
+ "def": "PRIMARY KEY (id)"
1054
+ }
1055
+ ],
1056
+ "indexes": [
1057
+ {
1058
+ "name": "job_common_i1",
1059
+ "table": "job_common",
1060
+ "valid": true,
1061
+ "def": "CREATE UNIQUE INDEX job_common_i1 ON {{schema}}.job_common USING btree (name, COALESCE(singleton_key, ''::text)) WHERE ((state = 'created'::{{schema}}.job_state) AND (policy = 'short'::text))"
1062
+ },
1063
+ {
1064
+ "name": "job_common_i2",
1065
+ "table": "job_common",
1066
+ "valid": true,
1067
+ "def": "CREATE UNIQUE INDEX job_common_i2 ON {{schema}}.job_common USING btree (name, COALESCE(singleton_key, ''::text)) WHERE ((state = 'active'::{{schema}}.job_state) AND (policy = 'singleton'::text))"
1068
+ },
1069
+ {
1070
+ "name": "job_common_i3",
1071
+ "table": "job_common",
1072
+ "valid": true,
1073
+ "def": "CREATE UNIQUE INDEX job_common_i3 ON {{schema}}.job_common USING btree (name, state, COALESCE(singleton_key, ''::text)) WHERE ((state <= 'active'::{{schema}}.job_state) AND (policy = 'stately'::text))"
1074
+ },
1075
+ {
1076
+ "name": "job_common_i4",
1077
+ "table": "job_common",
1078
+ "valid": true,
1079
+ "def": "CREATE UNIQUE INDEX job_common_i4 ON {{schema}}.job_common USING btree (name, singleton_on, COALESCE(singleton_key, ''::text)) WHERE ((state <> 'cancelled'::{{schema}}.job_state) AND (singleton_on IS NOT NULL))"
1080
+ },
1081
+ {
1082
+ "name": "job_common_i5",
1083
+ "table": "job_common",
1084
+ "valid": true,
1085
+ "def": "CREATE INDEX job_common_i5 ON {{schema}}.job_common USING btree (name, start_after) WHERE ((state < 'active'::{{schema}}.job_state) AND (NOT blocked))"
1086
+ },
1087
+ {
1088
+ "name": "job_common_i6",
1089
+ "table": "job_common",
1090
+ "valid": true,
1091
+ "def": "CREATE UNIQUE INDEX job_common_i6 ON {{schema}}.job_common USING btree (name, COALESCE(singleton_key, ''::text)) WHERE ((state <= 'active'::{{schema}}.job_state) AND (policy = 'exclusive'::text))"
1092
+ },
1093
+ {
1094
+ "name": "job_common_i7",
1095
+ "table": "job_common",
1096
+ "valid": true,
1097
+ "def": "CREATE INDEX job_common_i7 ON {{schema}}.job_common USING btree (name, group_id) WHERE ((state = 'active'::{{schema}}.job_state) AND (group_id IS NOT NULL))"
1098
+ },
1099
+ {
1100
+ "name": "job_common_i8",
1101
+ "table": "job_common",
1102
+ "valid": true,
1103
+ "def": "CREATE UNIQUE INDEX job_common_i8 ON {{schema}}.job_common USING btree (name, singleton_key) WHERE ((state = ANY (ARRAY['active'::{{schema}}.job_state, 'retry'::{{schema}}.job_state, 'failed'::{{schema}}.job_state])) AND (policy = 'key_strict_fifo'::text))"
1104
+ },
1105
+ {
1106
+ "name": "job_common_i9",
1107
+ "table": "job_common",
1108
+ "valid": true,
1109
+ "def": "CREATE INDEX job_common_i9 ON {{schema}}.job_common USING btree (name, id) WHERE (blocking AND (state = 'completed'::{{schema}}.job_state))"
1110
+ },
1111
+ {
1112
+ "name": "job_dep_parent_idx",
1113
+ "table": "job_dependency",
1114
+ "valid": true,
1115
+ "def": "CREATE INDEX job_dep_parent_idx ON {{schema}}.job_dependency USING btree (parent_name, parent_id)"
1116
+ },
1117
+ {
1118
+ "name": "queue_stats_i1",
1119
+ "table": "queue_stats",
1120
+ "valid": true,
1121
+ "def": "CREATE INDEX queue_stats_i1 ON ONLY {{schema}}.queue_stats USING btree (name, captured_on DESC) INCLUDE (deferred_count, queued_count, ready_count, active_count, failed_count, total_count)"
1122
+ },
1123
+ {
1124
+ "name": "warning_i1",
1125
+ "table": "warning",
1126
+ "valid": true,
1127
+ "def": "CREATE INDEX warning_i1 ON {{schema}}.warning USING btree (created_on DESC)"
1128
+ }
1129
+ ],
1130
+ "functions": [
1131
+ {
1132
+ "name": "create_queue",
1133
+ "def": "CREATE OR REPLACE FUNCTION {{schema}}.create_queue(queue_name text, options jsonb)\n RETURNS void\n LANGUAGE plpgsql\nAS $function$\n DECLARE\n tablename varchar := CASE WHEN options->>'partition' = 'true'\n THEN 'j' || encode(sha224(queue_name::bytea), 'hex')\n ELSE 'job_common'\n END;\n queue_created_on timestamptz;\n BEGIN\n\n WITH q as (\n INSERT INTO {{schema}}.queue (\n name,\n policy,\n retry_limit,\n retry_delay,\n retry_backoff,\n retry_delay_max,\n expire_seconds,\n retention_seconds,\n deletion_seconds,\n warning_queued,\n dead_letter,\n partition,\n table_name,\n heartbeat_seconds,\n notify\n )\n VALUES (\n queue_name,\n options->>'policy',\n COALESCE((options->>'retryLimit')::int, 2),\n COALESCE((options->>'retryDelay')::int, 0),\n COALESCE((options->>'retryBackoff')::bool, false),\n (options->>'retryDelayMax')::int,\n COALESCE((options->>'expireInSeconds')::int, 900),\n COALESCE((options->>'retentionSeconds')::int, 1209600),\n COALESCE((options->>'deleteAfterSeconds')::int, 604800),\n COALESCE((options->>'warningQueueSize')::int, 0),\n options->>'deadLetter',\n COALESCE((options->>'partition')::bool, false),\n tablename,\n (options->>'heartbeatSeconds')::int,\n COALESCE((options->>'notify')::bool, false)\n )\n ON CONFLICT DO NOTHING\n RETURNING created_on\n )\n SELECT created_on into queue_created_on from q;\n\n IF queue_created_on IS NULL OR options->>'partition' IS DISTINCT FROM 'true' THEN\n RETURN;\n END IF;\n\n EXECUTE format('CREATE TABLE {{schema}}.%I (LIKE {{schema}}.job INCLUDING DEFAULTS)', tablename);\n\n EXECUTE {{schema}}.job_table_format($cmd$ALTER TABLE {{schema}}.job ADD PRIMARY KEY (name, id)$cmd$, tablename);\n EXECUTE {{schema}}.job_table_format($cmd$ALTER TABLE {{schema}}.job ADD CONSTRAINT q_fkey FOREIGN KEY (name) REFERENCES {{schema}}.queue (name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED$cmd$, tablename);\n EXECUTE {{schema}}.job_table_format($cmd$ALTER TABLE {{schema}}.job ADD CONSTRAINT dlq_fkey FOREIGN KEY (dead_letter) REFERENCES {{schema}}.queue (name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED$cmd$, tablename);\n\n EXECUTE {{schema}}.job_table_format($cmd$CREATE INDEX job_i5 ON {{schema}}.job (name, start_after) WHERE state < 'active' AND NOT blocked$cmd$, tablename);\n EXECUTE {{schema}}.job_table_format($cmd$CREATE UNIQUE INDEX job_i4 ON {{schema}}.job (name, singleton_on, COALESCE(singleton_key, '')) WHERE state <> 'cancelled' AND singleton_on IS NOT NULL$cmd$, tablename);\n EXECUTE {{schema}}.job_table_format($cmd$CREATE INDEX job_i7 ON {{schema}}.job (name, group_id) WHERE state = 'active' AND group_id IS NOT NULL$cmd$, tablename);\n EXECUTE {{schema}}.job_table_format($cmd$CREATE INDEX job_i9 ON {{schema}}.job (name, id) WHERE blocking AND state = 'completed'$cmd$, tablename);\n\n IF options->>'policy' = 'short' THEN\n EXECUTE {{schema}}.job_table_format($cmd$CREATE UNIQUE INDEX job_i1 ON {{schema}}.job (name, COALESCE(singleton_key, '')) WHERE state = 'created' AND policy = 'short'$cmd$, tablename);\n ELSIF options->>'policy' = 'singleton' THEN\n EXECUTE {{schema}}.job_table_format($cmd$CREATE UNIQUE INDEX job_i2 ON {{schema}}.job (name, COALESCE(singleton_key, '')) WHERE state = 'active' AND policy = 'singleton'$cmd$, tablename);\n ELSIF options->>'policy' = 'stately' THEN\n EXECUTE {{schema}}.job_table_format($cmd$CREATE UNIQUE INDEX job_i3 ON {{schema}}.job (name, state, COALESCE(singleton_key, '')) WHERE state <= 'active' AND policy = 'stately'$cmd$, tablename);\n ELSIF options->>'policy' = 'exclusive' THEN\n EXECUTE {{schema}}.job_table_format($cmd$CREATE UNIQUE INDEX job_i6 ON {{schema}}.job (name, COALESCE(singleton_key, '')) WHERE state <= 'active' AND policy = 'exclusive'$cmd$, tablename);\n ELSIF options->>'policy' = 'key_strict_fifo' THEN\n EXECUTE {{schema}}.job_table_format($cmd$CREATE UNIQUE INDEX job_i8 ON {{schema}}.job (name, singleton_key) WHERE state IN ('active', 'retry', 'failed') AND policy = 'key_strict_fifo'$cmd$, tablename);\n EXECUTE {{schema}}.job_table_format($cmd$ALTER TABLE {{schema}}.job ADD CONSTRAINT job_key_strict_fifo_singleton_key_check CHECK (NOT (policy = 'key_strict_fifo' AND singleton_key IS NULL))$cmd$, tablename);\n END IF;\n\n EXECUTE format('ALTER TABLE {{schema}}.%I ADD CONSTRAINT cjc CHECK (name=%L)', tablename, queue_name);\n EXECUTE format('ALTER TABLE {{schema}}.job ATTACH PARTITION {{schema}}.%I FOR VALUES IN (%L)', tablename, queue_name);\n END;\n $function$\n"
1134
+ },
1135
+ {
1136
+ "name": "delete_queue",
1137
+ "def": "CREATE OR REPLACE FUNCTION {{schema}}.delete_queue(queue_name text)\n RETURNS void\n LANGUAGE plpgsql\nAS $function$\n DECLARE\n v_table varchar;\n v_partition bool;\n BEGIN\n \n SELECT table_name, partition\n FROM {{schema}}.queue\n WHERE name = queue_name\n INTO v_table, v_partition;\n\n IF v_partition THEN\n EXECUTE format('DROP TABLE IF EXISTS {{schema}}.%I', v_table);\n ELSE\n EXECUTE format('DELETE FROM {{schema}}.%I WHERE name = %L', v_table, queue_name);\n END IF;\n \n DELETE FROM {{schema}}.queue WHERE name = queue_name;\n END;\n $function$\n"
1138
+ },
1139
+ {
1140
+ "name": "job_table_format",
1141
+ "def": "CREATE OR REPLACE FUNCTION {{schema}}.job_table_format(command text, table_name text)\n RETURNS text\n LANGUAGE sql\n IMMUTABLE\nAS $function$\n SELECT format(\n regexp_replace(\n regexp_replace(command, '\\.job\\y', '.%1$I', 'g'),\n '\\yjob_i(\\d+)', '%1$s_i\\1', 'g'\n ),\n table_name\n );\n $function$\n"
1142
+ },
1143
+ {
1144
+ "name": "job_table_run",
1145
+ "def": "CREATE OR REPLACE FUNCTION {{schema}}.job_table_run(command text, tbl_name text DEFAULT NULL::text, queue_name text DEFAULT NULL::text)\n RETURNS void\n LANGUAGE plpgsql\nAS $function$\n DECLARE\n tbl RECORD;\n BEGIN\n IF queue_name IS NOT NULL THEN\n SELECT table_name INTO tbl_name FROM {{schema}}.queue WHERE name = queue_name;\n END IF;\n\n IF tbl_name IS NOT NULL THEN\n EXECUTE {{schema}}.job_table_format(command, tbl_name);\n RETURN;\n END IF;\n\n EXECUTE {{schema}}.job_table_format(command, 'job_common');\n\n FOR tbl IN SELECT table_name FROM {{schema}}.queue WHERE partition = true\n LOOP\n EXECUTE {{schema}}.job_table_format(command, tbl.table_name);\n END LOOP;\n END;\n $function$\n"
1146
+ },
1147
+ {
1148
+ "name": "job_table_run_async",
1149
+ "def": "CREATE OR REPLACE FUNCTION {{schema}}.job_table_run_async(command_name text, version integer, command text, tbl_name text DEFAULT NULL::text, queue_name text DEFAULT NULL::text)\n RETURNS void\n LANGUAGE plpgsql\nAS $function$\n BEGIN\n IF queue_name IS NOT NULL THEN\n SELECT table_name INTO tbl_name FROM {{schema}}.queue WHERE name = queue_name;\n END IF;\n\n IF tbl_name IS NOT NULL THEN\n INSERT INTO {{schema}}.bam (name, version, status, queue, table_name, command)\n VALUES (\n command_name,\n version,\n 'pending',\n queue_name,\n tbl_name,\n {{schema}}.job_table_format(command, tbl_name)\n );\n RETURN;\n END IF;\n\n INSERT INTO {{schema}}.bam (name, version, status, queue, table_name, command)\n SELECT\n command_name,\n version,\n 'pending',\n NULL,\n 'job_common',\n {{schema}}.job_table_format(command, 'job_common')\n UNION ALL\n SELECT\n command_name,\n version,\n 'pending',\n queue.name,\n queue.table_name,\n {{schema}}.job_table_format(command, queue.table_name)\n FROM {{schema}}.queue\n WHERE partition = true;\n END;\n $function$\n"
1150
+ }
1151
+ ],
1152
+ "enum": [
1153
+ "created",
1154
+ "retry",
1155
+ "active",
1156
+ "completed",
1157
+ "cancelled",
1158
+ "failed"
1159
+ ]
1160
+ },
1161
+ "nonPartitioned": {
1162
+ "tables": [
1163
+ "bam",
1164
+ "job",
1165
+ "job_dependency",
1166
+ "queue",
1167
+ "queue_stats",
1168
+ "schedule",
1169
+ "subscription",
1170
+ "version",
1171
+ "warning"
1172
+ ],
1173
+ "columns": [
1174
+ {
1175
+ "table": "bam",
1176
+ "column": "command",
1177
+ "type": "text",
1178
+ "notNull": true,
1179
+ "default": null
1180
+ },
1181
+ {
1182
+ "table": "bam",
1183
+ "column": "completed_on",
1184
+ "type": "timestamp with time zone",
1185
+ "notNull": false,
1186
+ "default": null
1187
+ },
1188
+ {
1189
+ "table": "bam",
1190
+ "column": "created_on",
1191
+ "type": "timestamp with time zone",
1192
+ "notNull": true,
1193
+ "default": "clock_timestamp()"
1194
+ },
1195
+ {
1196
+ "table": "bam",
1197
+ "column": "error",
1198
+ "type": "text",
1199
+ "notNull": false,
1200
+ "default": null
1201
+ },
1202
+ {
1203
+ "table": "bam",
1204
+ "column": "id",
1205
+ "type": "uuid",
1206
+ "notNull": true,
1207
+ "default": "gen_random_uuid()"
1208
+ },
1209
+ {
1210
+ "table": "bam",
1211
+ "column": "name",
1212
+ "type": "text",
1213
+ "notNull": true,
1214
+ "default": null
1215
+ },
1216
+ {
1217
+ "table": "bam",
1218
+ "column": "queue",
1219
+ "type": "text",
1220
+ "notNull": false,
1221
+ "default": null
1222
+ },
1223
+ {
1224
+ "table": "bam",
1225
+ "column": "started_on",
1226
+ "type": "timestamp with time zone",
1227
+ "notNull": false,
1228
+ "default": null
1229
+ },
1230
+ {
1231
+ "table": "bam",
1232
+ "column": "status",
1233
+ "type": "text",
1234
+ "notNull": true,
1235
+ "default": "'pending'::text"
1236
+ },
1237
+ {
1238
+ "table": "bam",
1239
+ "column": "table_name",
1240
+ "type": "text",
1241
+ "notNull": true,
1242
+ "default": null
1243
+ },
1244
+ {
1245
+ "table": "bam",
1246
+ "column": "version",
1247
+ "type": "integer",
1248
+ "notNull": true,
1249
+ "default": null
1250
+ },
1251
+ {
1252
+ "table": "job_dependency",
1253
+ "column": "child_id",
1254
+ "type": "uuid",
1255
+ "notNull": true,
1256
+ "default": null
1257
+ },
1258
+ {
1259
+ "table": "job_dependency",
1260
+ "column": "child_name",
1261
+ "type": "text",
1262
+ "notNull": true,
1263
+ "default": null
1264
+ },
1265
+ {
1266
+ "table": "job_dependency",
1267
+ "column": "parent_id",
1268
+ "type": "uuid",
1269
+ "notNull": true,
1270
+ "default": null
1271
+ },
1272
+ {
1273
+ "table": "job_dependency",
1274
+ "column": "parent_name",
1275
+ "type": "text",
1276
+ "notNull": true,
1277
+ "default": null
1278
+ },
1279
+ {
1280
+ "table": "job",
1281
+ "column": "blocked",
1282
+ "type": "boolean",
1283
+ "notNull": true,
1284
+ "default": "false"
1285
+ },
1286
+ {
1287
+ "table": "job",
1288
+ "column": "blocking",
1289
+ "type": "boolean",
1290
+ "notNull": true,
1291
+ "default": "false"
1292
+ },
1293
+ {
1294
+ "table": "job",
1295
+ "column": "completed_on",
1296
+ "type": "timestamp with time zone",
1297
+ "notNull": false,
1298
+ "default": null
1299
+ },
1300
+ {
1301
+ "table": "job",
1302
+ "column": "created_on",
1303
+ "type": "timestamp with time zone",
1304
+ "notNull": true,
1305
+ "default": "now()"
1306
+ },
1307
+ {
1308
+ "table": "job",
1309
+ "column": "data",
1310
+ "type": "jsonb",
1311
+ "notNull": false,
1312
+ "default": null
1313
+ },
1314
+ {
1315
+ "table": "job",
1316
+ "column": "dead_letter",
1317
+ "type": "text",
1318
+ "notNull": false,
1319
+ "default": null
1320
+ },
1321
+ {
1322
+ "table": "job",
1323
+ "column": "deletion_seconds",
1324
+ "type": "integer",
1325
+ "notNull": true,
1326
+ "default": "604800"
1327
+ },
1328
+ {
1329
+ "table": "job",
1330
+ "column": "expire_seconds",
1331
+ "type": "integer",
1332
+ "notNull": true,
1333
+ "default": "900"
1334
+ },
1335
+ {
1336
+ "table": "job",
1337
+ "column": "group_id",
1338
+ "type": "text",
1339
+ "notNull": false,
1340
+ "default": null
1341
+ },
1342
+ {
1343
+ "table": "job",
1344
+ "column": "group_tier",
1345
+ "type": "text",
1346
+ "notNull": false,
1347
+ "default": null
1348
+ },
1349
+ {
1350
+ "table": "job",
1351
+ "column": "heartbeat_on",
1352
+ "type": "timestamp with time zone",
1353
+ "notNull": false,
1354
+ "default": null
1355
+ },
1356
+ {
1357
+ "table": "job",
1358
+ "column": "heartbeat_seconds",
1359
+ "type": "integer",
1360
+ "notNull": false,
1361
+ "default": null
1362
+ },
1363
+ {
1364
+ "table": "job",
1365
+ "column": "id",
1366
+ "type": "uuid",
1367
+ "notNull": true,
1368
+ "default": "gen_random_uuid()"
1369
+ },
1370
+ {
1371
+ "table": "job",
1372
+ "column": "keep_until",
1373
+ "type": "timestamp with time zone",
1374
+ "notNull": true,
1375
+ "default": "(now() + '336:00:00'::interval)"
1376
+ },
1377
+ {
1378
+ "table": "job",
1379
+ "column": "name",
1380
+ "type": "text",
1381
+ "notNull": true,
1382
+ "default": null
1383
+ },
1384
+ {
1385
+ "table": "job",
1386
+ "column": "output",
1387
+ "type": "jsonb",
1388
+ "notNull": false,
1389
+ "default": null
1390
+ },
1391
+ {
1392
+ "table": "job",
1393
+ "column": "pending_dependencies",
1394
+ "type": "integer",
1395
+ "notNull": true,
1396
+ "default": "0"
1397
+ },
1398
+ {
1399
+ "table": "job",
1400
+ "column": "policy",
1401
+ "type": "text",
1402
+ "notNull": false,
1403
+ "default": null
1404
+ },
1405
+ {
1406
+ "table": "job",
1407
+ "column": "priority",
1408
+ "type": "integer",
1409
+ "notNull": true,
1410
+ "default": "0"
1411
+ },
1412
+ {
1413
+ "table": "job",
1414
+ "column": "retry_backoff",
1415
+ "type": "boolean",
1416
+ "notNull": true,
1417
+ "default": "false"
1418
+ },
1419
+ {
1420
+ "table": "job",
1421
+ "column": "retry_count",
1422
+ "type": "integer",
1423
+ "notNull": true,
1424
+ "default": "0"
1425
+ },
1426
+ {
1427
+ "table": "job",
1428
+ "column": "retry_delay",
1429
+ "type": "integer",
1430
+ "notNull": true,
1431
+ "default": "0"
1432
+ },
1433
+ {
1434
+ "table": "job",
1435
+ "column": "retry_delay_max",
1436
+ "type": "integer",
1437
+ "notNull": false,
1438
+ "default": null
1439
+ },
1440
+ {
1441
+ "table": "job",
1442
+ "column": "retry_limit",
1443
+ "type": "integer",
1444
+ "notNull": true,
1445
+ "default": "2"
1446
+ },
1447
+ {
1448
+ "table": "job",
1449
+ "column": "singleton_key",
1450
+ "type": "text",
1451
+ "notNull": false,
1452
+ "default": null
1453
+ },
1454
+ {
1455
+ "table": "job",
1456
+ "column": "singleton_on",
1457
+ "type": "timestamp without time zone",
1458
+ "notNull": false,
1459
+ "default": null
1460
+ },
1461
+ {
1462
+ "table": "job",
1463
+ "column": "source_created_on",
1464
+ "type": "timestamp with time zone",
1465
+ "notNull": false,
1466
+ "default": null
1467
+ },
1468
+ {
1469
+ "table": "job",
1470
+ "column": "source_id",
1471
+ "type": "uuid",
1472
+ "notNull": false,
1473
+ "default": null
1474
+ },
1475
+ {
1476
+ "table": "job",
1477
+ "column": "source_name",
1478
+ "type": "text",
1479
+ "notNull": false,
1480
+ "default": null
1481
+ },
1482
+ {
1483
+ "table": "job",
1484
+ "column": "source_retry_count",
1485
+ "type": "integer",
1486
+ "notNull": false,
1487
+ "default": null
1488
+ },
1489
+ {
1490
+ "table": "job",
1491
+ "column": "start_after",
1492
+ "type": "timestamp with time zone",
1493
+ "notNull": true,
1494
+ "default": "now()"
1495
+ },
1496
+ {
1497
+ "table": "job",
1498
+ "column": "started_on",
1499
+ "type": "timestamp with time zone",
1500
+ "notNull": false,
1501
+ "default": null
1502
+ },
1503
+ {
1504
+ "table": "job",
1505
+ "column": "state",
1506
+ "type": "{{schema}}.job_state",
1507
+ "notNull": true,
1508
+ "default": "'created'::{{schema}}.job_state"
1509
+ },
1510
+ {
1511
+ "table": "queue_stats",
1512
+ "column": "active_count",
1513
+ "type": "integer",
1514
+ "notNull": true,
1515
+ "default": "0"
1516
+ },
1517
+ {
1518
+ "table": "queue_stats",
1519
+ "column": "captured_on",
1520
+ "type": "timestamp with time zone",
1521
+ "notNull": true,
1522
+ "default": "now()"
1523
+ },
1524
+ {
1525
+ "table": "queue_stats",
1526
+ "column": "deferred_count",
1527
+ "type": "integer",
1528
+ "notNull": true,
1529
+ "default": "0"
1530
+ },
1531
+ {
1532
+ "table": "queue_stats",
1533
+ "column": "failed_count",
1534
+ "type": "integer",
1535
+ "notNull": true,
1536
+ "default": "0"
1537
+ },
1538
+ {
1539
+ "table": "queue_stats",
1540
+ "column": "id",
1541
+ "type": "uuid",
1542
+ "notNull": true,
1543
+ "default": "gen_random_uuid()"
1544
+ },
1545
+ {
1546
+ "table": "queue_stats",
1547
+ "column": "name",
1548
+ "type": "text",
1549
+ "notNull": true,
1550
+ "default": null
1551
+ },
1552
+ {
1553
+ "table": "queue_stats",
1554
+ "column": "queued_count",
1555
+ "type": "integer",
1556
+ "notNull": true,
1557
+ "default": "0"
1558
+ },
1559
+ {
1560
+ "table": "queue_stats",
1561
+ "column": "ready_count",
1562
+ "type": "integer",
1563
+ "notNull": true,
1564
+ "default": "0"
1565
+ },
1566
+ {
1567
+ "table": "queue_stats",
1568
+ "column": "total_count",
1569
+ "type": "integer",
1570
+ "notNull": true,
1571
+ "default": "0"
1572
+ },
1573
+ {
1574
+ "table": "queue",
1575
+ "column": "active_count",
1576
+ "type": "integer",
1577
+ "notNull": true,
1578
+ "default": "0"
1579
+ },
1580
+ {
1581
+ "table": "queue",
1582
+ "column": "created_on",
1583
+ "type": "timestamp with time zone",
1584
+ "notNull": true,
1585
+ "default": "now()"
1586
+ },
1587
+ {
1588
+ "table": "queue",
1589
+ "column": "dead_letter",
1590
+ "type": "text",
1591
+ "notNull": false,
1592
+ "default": null
1593
+ },
1594
+ {
1595
+ "table": "queue",
1596
+ "column": "deferred_count",
1597
+ "type": "integer",
1598
+ "notNull": true,
1599
+ "default": "0"
1600
+ },
1601
+ {
1602
+ "table": "queue",
1603
+ "column": "deletion_seconds",
1604
+ "type": "integer",
1605
+ "notNull": true,
1606
+ "default": null
1607
+ },
1608
+ {
1609
+ "table": "queue",
1610
+ "column": "expire_seconds",
1611
+ "type": "integer",
1612
+ "notNull": true,
1613
+ "default": null
1614
+ },
1615
+ {
1616
+ "table": "queue",
1617
+ "column": "failed_count",
1618
+ "type": "integer",
1619
+ "notNull": true,
1620
+ "default": "0"
1621
+ },
1622
+ {
1623
+ "table": "queue",
1624
+ "column": "heartbeat_seconds",
1625
+ "type": "integer",
1626
+ "notNull": false,
1627
+ "default": null
1628
+ },
1629
+ {
1630
+ "table": "queue",
1631
+ "column": "maintain_on",
1632
+ "type": "timestamp with time zone",
1633
+ "notNull": false,
1634
+ "default": null
1635
+ },
1636
+ {
1637
+ "table": "queue",
1638
+ "column": "monitor_on",
1639
+ "type": "timestamp with time zone",
1640
+ "notNull": false,
1641
+ "default": null
1642
+ },
1643
+ {
1644
+ "table": "queue",
1645
+ "column": "name",
1646
+ "type": "text",
1647
+ "notNull": true,
1648
+ "default": null
1649
+ },
1650
+ {
1651
+ "table": "queue",
1652
+ "column": "notify",
1653
+ "type": "boolean",
1654
+ "notNull": true,
1655
+ "default": "false"
1656
+ },
1657
+ {
1658
+ "table": "queue",
1659
+ "column": "partition",
1660
+ "type": "boolean",
1661
+ "notNull": true,
1662
+ "default": null
1663
+ },
1664
+ {
1665
+ "table": "queue",
1666
+ "column": "policy",
1667
+ "type": "text",
1668
+ "notNull": true,
1669
+ "default": null
1670
+ },
1671
+ {
1672
+ "table": "queue",
1673
+ "column": "queued_count",
1674
+ "type": "integer",
1675
+ "notNull": true,
1676
+ "default": "0"
1677
+ },
1678
+ {
1679
+ "table": "queue",
1680
+ "column": "ready_count",
1681
+ "type": "integer",
1682
+ "notNull": true,
1683
+ "default": "0"
1684
+ },
1685
+ {
1686
+ "table": "queue",
1687
+ "column": "ready_history",
1688
+ "type": "integer[]",
1689
+ "notNull": true,
1690
+ "default": "'{}'::integer[]"
1691
+ },
1692
+ {
1693
+ "table": "queue",
1694
+ "column": "retention_seconds",
1695
+ "type": "integer",
1696
+ "notNull": true,
1697
+ "default": null
1698
+ },
1699
+ {
1700
+ "table": "queue",
1701
+ "column": "retry_backoff",
1702
+ "type": "boolean",
1703
+ "notNull": true,
1704
+ "default": null
1705
+ },
1706
+ {
1707
+ "table": "queue",
1708
+ "column": "retry_delay",
1709
+ "type": "integer",
1710
+ "notNull": true,
1711
+ "default": null
1712
+ },
1713
+ {
1714
+ "table": "queue",
1715
+ "column": "retry_delay_max",
1716
+ "type": "integer",
1717
+ "notNull": false,
1718
+ "default": null
1719
+ },
1720
+ {
1721
+ "table": "queue",
1722
+ "column": "retry_limit",
1723
+ "type": "integer",
1724
+ "notNull": true,
1725
+ "default": null
1726
+ },
1727
+ {
1728
+ "table": "queue",
1729
+ "column": "singletons_active",
1730
+ "type": "text[]",
1731
+ "notNull": false,
1732
+ "default": null
1733
+ },
1734
+ {
1735
+ "table": "queue",
1736
+ "column": "table_name",
1737
+ "type": "text",
1738
+ "notNull": true,
1739
+ "default": null
1740
+ },
1741
+ {
1742
+ "table": "queue",
1743
+ "column": "total_count",
1744
+ "type": "integer",
1745
+ "notNull": true,
1746
+ "default": "0"
1747
+ },
1748
+ {
1749
+ "table": "queue",
1750
+ "column": "updated_on",
1751
+ "type": "timestamp with time zone",
1752
+ "notNull": true,
1753
+ "default": "now()"
1754
+ },
1755
+ {
1756
+ "table": "queue",
1757
+ "column": "warning_queued",
1758
+ "type": "integer",
1759
+ "notNull": true,
1760
+ "default": "0"
1761
+ },
1762
+ {
1763
+ "table": "schedule",
1764
+ "column": "created_on",
1765
+ "type": "timestamp with time zone",
1766
+ "notNull": true,
1767
+ "default": "now()"
1768
+ },
1769
+ {
1770
+ "table": "schedule",
1771
+ "column": "cron",
1772
+ "type": "text",
1773
+ "notNull": true,
1774
+ "default": null
1775
+ },
1776
+ {
1777
+ "table": "schedule",
1778
+ "column": "data",
1779
+ "type": "jsonb",
1780
+ "notNull": false,
1781
+ "default": null
1782
+ },
1783
+ {
1784
+ "table": "schedule",
1785
+ "column": "key",
1786
+ "type": "text",
1787
+ "notNull": true,
1788
+ "default": "''::text"
1789
+ },
1790
+ {
1791
+ "table": "schedule",
1792
+ "column": "name",
1793
+ "type": "text",
1794
+ "notNull": true,
1795
+ "default": null
1796
+ },
1797
+ {
1798
+ "table": "schedule",
1799
+ "column": "options",
1800
+ "type": "jsonb",
1801
+ "notNull": false,
1802
+ "default": null
1803
+ },
1804
+ {
1805
+ "table": "schedule",
1806
+ "column": "timezone",
1807
+ "type": "text",
1808
+ "notNull": false,
1809
+ "default": null
1810
+ },
1811
+ {
1812
+ "table": "schedule",
1813
+ "column": "updated_on",
1814
+ "type": "timestamp with time zone",
1815
+ "notNull": true,
1816
+ "default": "now()"
1817
+ },
1818
+ {
1819
+ "table": "subscription",
1820
+ "column": "created_on",
1821
+ "type": "timestamp with time zone",
1822
+ "notNull": true,
1823
+ "default": "now()"
1824
+ },
1825
+ {
1826
+ "table": "subscription",
1827
+ "column": "event",
1828
+ "type": "text",
1829
+ "notNull": true,
1830
+ "default": null
1831
+ },
1832
+ {
1833
+ "table": "subscription",
1834
+ "column": "name",
1835
+ "type": "text",
1836
+ "notNull": true,
1837
+ "default": null
1838
+ },
1839
+ {
1840
+ "table": "subscription",
1841
+ "column": "updated_on",
1842
+ "type": "timestamp with time zone",
1843
+ "notNull": true,
1844
+ "default": "now()"
1845
+ },
1846
+ {
1847
+ "table": "version",
1848
+ "column": "bam_on",
1849
+ "type": "timestamp with time zone",
1850
+ "notNull": false,
1851
+ "default": null
1852
+ },
1853
+ {
1854
+ "table": "version",
1855
+ "column": "cron_on",
1856
+ "type": "timestamp with time zone",
1857
+ "notNull": false,
1858
+ "default": null
1859
+ },
1860
+ {
1861
+ "table": "version",
1862
+ "column": "flow_on",
1863
+ "type": "timestamp with time zone",
1864
+ "notNull": false,
1865
+ "default": null
1866
+ },
1867
+ {
1868
+ "table": "version",
1869
+ "column": "version",
1870
+ "type": "integer",
1871
+ "notNull": true,
1872
+ "default": null
1873
+ },
1874
+ {
1875
+ "table": "warning",
1876
+ "column": "created_on",
1877
+ "type": "timestamp with time zone",
1878
+ "notNull": true,
1879
+ "default": "now()"
1880
+ },
1881
+ {
1882
+ "table": "warning",
1883
+ "column": "data",
1884
+ "type": "jsonb",
1885
+ "notNull": false,
1886
+ "default": null
1887
+ },
1888
+ {
1889
+ "table": "warning",
1890
+ "column": "id",
1891
+ "type": "uuid",
1892
+ "notNull": true,
1893
+ "default": "gen_random_uuid()"
1894
+ },
1895
+ {
1896
+ "table": "warning",
1897
+ "column": "message",
1898
+ "type": "text",
1899
+ "notNull": true,
1900
+ "default": null
1901
+ },
1902
+ {
1903
+ "table": "warning",
1904
+ "column": "type",
1905
+ "type": "text",
1906
+ "notNull": true,
1907
+ "default": null
1908
+ }
1909
+ ],
1910
+ "constraints": [
1911
+ {
1912
+ "table": "bam",
1913
+ "def": "PRIMARY KEY (id)"
1914
+ },
1915
+ {
1916
+ "table": "job_dependency",
1917
+ "def": "PRIMARY KEY (child_name, child_id, parent_name, parent_id)"
1918
+ },
1919
+ {
1920
+ "table": "job",
1921
+ "def": "CHECK ((NOT ((policy = 'key_strict_fifo'::text) AND (singleton_key IS NULL))))"
1922
+ },
1923
+ {
1924
+ "table": "job",
1925
+ "def": "FOREIGN KEY (dead_letter) REFERENCES {{schema}}.queue(name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED"
1926
+ },
1927
+ {
1928
+ "table": "job",
1929
+ "def": "FOREIGN KEY (name) REFERENCES {{schema}}.queue(name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED"
1930
+ },
1931
+ {
1932
+ "table": "job",
1933
+ "def": "PRIMARY KEY (name, id)"
1934
+ },
1935
+ {
1936
+ "table": "queue_stats",
1937
+ "def": "PRIMARY KEY (id)"
1938
+ },
1939
+ {
1940
+ "table": "queue",
1941
+ "def": "CHECK ((dead_letter IS DISTINCT FROM name))"
1942
+ },
1943
+ {
1944
+ "table": "queue",
1945
+ "def": "FOREIGN KEY (dead_letter) REFERENCES {{schema}}.queue(name)"
1946
+ },
1947
+ {
1948
+ "table": "queue",
1949
+ "def": "PRIMARY KEY (name)"
1950
+ },
1951
+ {
1952
+ "table": "schedule",
1953
+ "def": "FOREIGN KEY (name) REFERENCES {{schema}}.queue(name) ON DELETE CASCADE"
1954
+ },
1955
+ {
1956
+ "table": "schedule",
1957
+ "def": "PRIMARY KEY (name, key)"
1958
+ },
1959
+ {
1960
+ "table": "subscription",
1961
+ "def": "FOREIGN KEY (name) REFERENCES {{schema}}.queue(name) ON DELETE CASCADE"
1962
+ },
1963
+ {
1964
+ "table": "subscription",
1965
+ "def": "PRIMARY KEY (event, name)"
1966
+ },
1967
+ {
1968
+ "table": "version",
1969
+ "def": "PRIMARY KEY (version)"
1970
+ },
1971
+ {
1972
+ "table": "warning",
1973
+ "def": "PRIMARY KEY (id)"
1974
+ }
1975
+ ],
1976
+ "indexes": [
1977
+ {
1978
+ "name": "job_dep_parent_idx",
1979
+ "table": "job_dependency",
1980
+ "valid": true,
1981
+ "def": "CREATE INDEX job_dep_parent_idx ON {{schema}}.job_dependency USING btree (parent_name, parent_id)"
1982
+ },
1983
+ {
1984
+ "name": "job_i1",
1985
+ "table": "job",
1986
+ "valid": true,
1987
+ "def": "CREATE UNIQUE INDEX job_i1 ON {{schema}}.job USING btree (name, COALESCE(singleton_key, ''::text)) WHERE ((state = 'created'::{{schema}}.job_state) AND (policy = 'short'::text))"
1988
+ },
1989
+ {
1990
+ "name": "job_i2",
1991
+ "table": "job",
1992
+ "valid": true,
1993
+ "def": "CREATE UNIQUE INDEX job_i2 ON {{schema}}.job USING btree (name, COALESCE(singleton_key, ''::text)) WHERE ((state = 'active'::{{schema}}.job_state) AND (policy = 'singleton'::text))"
1994
+ },
1995
+ {
1996
+ "name": "job_i3",
1997
+ "table": "job",
1998
+ "valid": true,
1999
+ "def": "CREATE UNIQUE INDEX job_i3 ON {{schema}}.job USING btree (name, state, COALESCE(singleton_key, ''::text)) WHERE ((state <= 'active'::{{schema}}.job_state) AND (policy = 'stately'::text))"
2000
+ },
2001
+ {
2002
+ "name": "job_i4",
2003
+ "table": "job",
2004
+ "valid": true,
2005
+ "def": "CREATE UNIQUE INDEX job_i4 ON {{schema}}.job USING btree (name, singleton_on, COALESCE(singleton_key, ''::text)) WHERE ((state <> 'cancelled'::{{schema}}.job_state) AND (singleton_on IS NOT NULL))"
2006
+ },
2007
+ {
2008
+ "name": "job_i5",
2009
+ "table": "job",
2010
+ "valid": true,
2011
+ "def": "CREATE INDEX job_i5 ON {{schema}}.job USING btree (name, start_after) WHERE ((state < 'active'::{{schema}}.job_state) AND (NOT blocked))"
2012
+ },
2013
+ {
2014
+ "name": "job_i6",
2015
+ "table": "job",
2016
+ "valid": true,
2017
+ "def": "CREATE UNIQUE INDEX job_i6 ON {{schema}}.job USING btree (name, COALESCE(singleton_key, ''::text)) WHERE ((state <= 'active'::{{schema}}.job_state) AND (policy = 'exclusive'::text))"
2018
+ },
2019
+ {
2020
+ "name": "job_i7",
2021
+ "table": "job",
2022
+ "valid": true,
2023
+ "def": "CREATE INDEX job_i7 ON {{schema}}.job USING btree (name, group_id) WHERE ((state = 'active'::{{schema}}.job_state) AND (group_id IS NOT NULL))"
2024
+ },
2025
+ {
2026
+ "name": "job_i8",
2027
+ "table": "job",
2028
+ "valid": true,
2029
+ "def": "CREATE UNIQUE INDEX job_i8 ON {{schema}}.job USING btree (name, singleton_key) WHERE ((state = ANY (ARRAY['active'::{{schema}}.job_state, 'retry'::{{schema}}.job_state, 'failed'::{{schema}}.job_state])) AND (policy = 'key_strict_fifo'::text))"
2030
+ },
2031
+ {
2032
+ "name": "job_i9",
2033
+ "table": "job",
2034
+ "valid": true,
2035
+ "def": "CREATE INDEX job_i9 ON {{schema}}.job USING btree (name, id) WHERE (blocking AND (state = 'completed'::{{schema}}.job_state))"
2036
+ },
2037
+ {
2038
+ "name": "queue_stats_i1",
2039
+ "table": "queue_stats",
2040
+ "valid": true,
2041
+ "def": "CREATE INDEX queue_stats_i1 ON {{schema}}.queue_stats USING btree (name, captured_on DESC) INCLUDE (deferred_count, queued_count, ready_count, active_count, failed_count, total_count)"
2042
+ },
2043
+ {
2044
+ "name": "warning_i1",
2045
+ "table": "warning",
2046
+ "valid": true,
2047
+ "def": "CREATE INDEX warning_i1 ON {{schema}}.warning USING btree (created_on DESC)"
2048
+ }
2049
+ ],
2050
+ "functions": [
2051
+ {
2052
+ "name": "create_queue",
2053
+ "def": "CREATE OR REPLACE FUNCTION {{schema}}.create_queue(queue_name text, options jsonb)\n RETURNS void\n LANGUAGE plpgsql\nAS $function$\n BEGIN\n INSERT INTO {{schema}}.queue (\n name,\n policy,\n retry_limit,\n retry_delay,\n retry_backoff,\n retry_delay_max,\n expire_seconds,\n retention_seconds,\n deletion_seconds,\n warning_queued,\n dead_letter,\n partition,\n table_name,\n heartbeat_seconds\n )\n VALUES (\n queue_name,\n options->>'policy',\n COALESCE((options->>'retryLimit')::int, 2),\n COALESCE((options->>'retryDelay')::int, 0),\n COALESCE((options->>'retryBackoff')::bool, false),\n (options->>'retryDelayMax')::int,\n COALESCE((options->>'expireInSeconds')::int, 900),\n COALESCE((options->>'retentionSeconds')::int, 1209600),\n COALESCE((options->>'deleteAfterSeconds')::int, 604800),\n COALESCE((options->>'warningQueueSize')::int, 0),\n options->>'deadLetter',\n false,\n 'job',\n (options->>'heartbeatSeconds')::int\n )\n ON CONFLICT DO NOTHING;\n END;\n $function$\n"
2054
+ },
2055
+ {
2056
+ "name": "delete_queue",
2057
+ "def": "CREATE OR REPLACE FUNCTION {{schema}}.delete_queue(queue_name text)\n RETURNS void\n LANGUAGE plpgsql\nAS $function$\n BEGIN\n DELETE FROM {{schema}}.job WHERE name = queue_name;\n DELETE FROM {{schema}}.queue WHERE name = queue_name;\n END;\n $function$\n"
2058
+ }
2059
+ ],
2060
+ "enum": [
2061
+ "created",
2062
+ "retry",
2063
+ "active",
2064
+ "completed",
2065
+ "cancelled",
2066
+ "failed"
2067
+ ]
2068
+ }
2069
+ }