prostgles-server 4.2.689 → 4.2.691

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 (72) hide show
  1. package/dist/Audit/AuditTable.d.ts +1 -31
  2. package/dist/Audit/AuditTable.d.ts.map +1 -1
  3. package/dist/Audit/AuditTable.js +4 -26
  4. package/dist/Audit/AuditTable.js.map +1 -1
  5. package/dist/Auth/AuthHandler.d.ts +2 -0
  6. package/dist/Auth/AuthHandler.d.ts.map +1 -1
  7. package/dist/Auth/AuthHandler.js +17 -4
  8. package/dist/Auth/AuthHandler.js.map +1 -1
  9. package/dist/Auth/AuthTypes.d.ts +10 -8
  10. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  11. package/dist/Auth/AuthTypes.js.map +1 -1
  12. package/dist/Auth/endpoints/setOAuthRequestHandlers.js +1 -1
  13. package/dist/Auth/endpoints/setOAuthRequestHandlers.js.map +1 -1
  14. package/dist/Auth/endpoints/setRegisterRequestHandler.d.ts +1 -1
  15. package/dist/Auth/endpoints/setRegisterRequestHandler.d.ts.map +1 -1
  16. package/dist/Auth/endpoints/setRegisterRequestHandler.js +20 -6
  17. package/dist/Auth/endpoints/setRegisterRequestHandler.js.map +1 -1
  18. package/dist/Auth/getClientAuth.d.ts +1 -1
  19. package/dist/Auth/getClientAuth.d.ts.map +1 -1
  20. package/dist/Auth/getClientAuth.js +18 -8
  21. package/dist/Auth/getClientAuth.js.map +1 -1
  22. package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
  23. package/dist/Auth/setupAuthRoutes.js +5 -0
  24. package/dist/Auth/setupAuthRoutes.js.map +1 -1
  25. package/dist/Auth/utils/upsertNamedExpressMiddleware.d.ts +2 -2
  26. package/dist/Auth/utils/upsertNamedExpressMiddleware.d.ts.map +1 -1
  27. package/dist/Auth/utils/upsertNamedExpressMiddleware.js +2 -2
  28. package/dist/Auth/utils/upsertNamedExpressMiddleware.js.map +1 -1
  29. package/dist/Jobs/JobManager.d.ts +2 -0
  30. package/dist/Jobs/JobManager.d.ts.map +1 -1
  31. package/dist/Jobs/JobManager.js +11 -0
  32. package/dist/Jobs/JobManager.js.map +1 -1
  33. package/dist/Jobs/JobTypes.d.ts +37 -33
  34. package/dist/Jobs/JobTypes.d.ts.map +1 -1
  35. package/dist/Jobs/JobTypes.js.map +1 -1
  36. package/dist/Jobs/claimJob.d.ts +4 -4
  37. package/dist/Jobs/enqueueJob.d.ts +1 -0
  38. package/dist/Jobs/enqueueJob.d.ts.map +1 -1
  39. package/dist/Jobs/enqueueJob.js.map +1 -1
  40. package/dist/Jobs/enqueueSchedules.d.ts.map +1 -1
  41. package/dist/Jobs/enqueueSchedules.js +15 -6
  42. package/dist/Jobs/enqueueSchedules.js.map +1 -1
  43. package/dist/Jobs/getJobRetention.d.ts +10 -0
  44. package/dist/Jobs/getJobRetention.d.ts.map +1 -0
  45. package/dist/Jobs/getJobRetention.js +65 -0
  46. package/dist/Jobs/getJobRetention.js.map +1 -0
  47. package/dist/Jobs/jobTableConfig.d.ts +19 -15
  48. package/dist/Jobs/jobTableConfig.d.ts.map +1 -1
  49. package/dist/Jobs/jobTableConfig.js +6 -54
  50. package/dist/Jobs/jobTableConfig.js.map +1 -1
  51. package/dist/Jobs/pruneJobs.d.ts +4 -0
  52. package/dist/Jobs/pruneJobs.d.ts.map +1 -0
  53. package/dist/Jobs/pruneJobs.js +49 -0
  54. package/dist/Jobs/pruneJobs.js.map +1 -0
  55. package/dist/Jobs/runJob.d.ts.map +1 -1
  56. package/dist/Jobs/runJob.js +7 -3
  57. package/dist/Jobs/runJob.js.map +1 -1
  58. package/dist/StorageClient/fileTableDefinitions.d.ts +4 -55
  59. package/dist/StorageClient/fileTableDefinitions.d.ts.map +1 -1
  60. package/dist/StorageClient/fileTableDefinitions.js +4 -35
  61. package/dist/StorageClient/fileTableDefinitions.js.map +1 -1
  62. package/dist/TableConfig/TableConfigTypes.d.ts +2 -11
  63. package/dist/TableConfig/TableConfigTypes.d.ts.map +1 -1
  64. package/dist/TableConfig/TableRowFromColumnDefinitions.d.ts +4 -69
  65. package/dist/TableConfig/TableRowFromColumnDefinitions.d.ts.map +1 -1
  66. package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
  67. package/dist/TableConfig/initTableConfig.js +10 -1
  68. package/dist/TableConfig/initTableConfig.js.map +1 -1
  69. package/dist/index.d.ts +2 -1
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js.map +1 -1
  72. package/package.json +2 -2
@@ -9,6 +9,8 @@ const claimJob_1 = require("./claimJob");
9
9
  const enqueueSchedules_1 = require("./enqueueSchedules");
10
10
  const getJobDefinition_1 = require("./getJobDefinition");
11
11
  const getJobControlBinding_1 = require("./getJobControlBinding");
12
+ const getJobRetention_1 = require("./getJobRetention");
13
+ const pruneJobs_1 = require("./pruneJobs");
12
14
  class JobManager {
13
15
  prostgles;
14
16
  constructor(prostgles) {
@@ -29,6 +31,8 @@ class JobManager {
29
31
  ticking;
30
32
  running = new Map();
31
33
  schedules = new Map();
34
+ retention = [];
35
+ nextRetentionCleanup = 0;
32
36
  api;
33
37
  validate = async () => {
34
38
  await (0, getJobDefinition_1.validateJobDefinitions)(this.prostgles, this.prostgles.dboBuilder.tables);
@@ -36,6 +40,8 @@ class JobManager {
36
40
  for (const method of Object.values(group.functions))
37
41
  (0, getJobControlBinding_1.getJobControlBinding)(this.prostgles, method);
38
42
  }
43
+ this.retention = await (0, getJobRetention_1.getJobRetention)(this.prostgles);
44
+ this.nextRetentionCleanup = 0;
39
45
  };
40
46
  start = () => {
41
47
  if (!this.stopped || !this.prostgles.opts.jobs)
@@ -52,6 +58,7 @@ class JobManager {
52
58
  await this.ticking;
53
59
  await Promise.all(this.running.values());
54
60
  this.schedules.clear();
61
+ this.nextRetentionCleanup = 0;
55
62
  };
56
63
  schedule = () => {
57
64
  if (this.stopped)
@@ -91,6 +98,10 @@ class JobManager {
91
98
  this.running.set(controller, work);
92
99
  }
93
100
  }
101
+ if (this.retention.length && Date.now() >= this.nextRetentionCleanup) {
102
+ this.nextRetentionCleanup = Date.now() + 60_000;
103
+ await (0, pruneJobs_1.pruneJobs)(prostgles, this.retention);
104
+ }
94
105
  };
95
106
  }
96
107
  exports.JobManager = JobManager;
@@ -1 +1 @@
1
- {"version":3,"file":"JobManager.js","sourceRoot":"","sources":["../../lib/Jobs/JobManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JobManager.js","sourceRoot":"","sources":["../../lib/Jobs/JobManager.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,10 @@
1
1
  import type pgPromise from "pg-promise";
2
- import type { AnyObject, DBSchema, FullFilter, JobControlOperation, JobStatus, JSONB, MaybePromise } from "prostgles-types";
3
- export type { JobStatus, JobControlOperation, JobControlFunctionMetadata, JobControlBinding, } from "prostgles-types";
2
+ import type { AnyObject, DBSchema, FullFilter, JobControlOperation, JobStatus, JobRecord, JobValue, JSONB, MaybePromise } from "prostgles-types";
3
+ export type { JobRecord, JobInsertRecord, JobValue, JobStatus, JobControlOperation, JobControlFunctionMetadata, JobControlBinding, } from "prostgles-types";
4
4
  import type { SessionUser } from "../Auth/AuthTypes";
5
5
  import type { DBHandlerServer, DBTableHandlersFromSchema } from "../DBSchemaBuilder/DBSchemaBuilder";
6
6
  import type { DbTxTableHandlers } from "../DboBuilder/DboBuilderTypes";
7
7
  import type { JSONBColumnDef } from "../TableConfig/TableConfigTypes";
8
- import type { TableInsertRowFromTableConfig, TableRowFromTableConfig } from "../TableConfig/TableRowFromColumnDefinitions";
9
- import type { jobTableConfig } from "./jobTableConfig";
10
8
  export type ParamsSchema = Record<string, JSONBColumnDef & ({
11
9
  optional: true;
12
10
  } | {
@@ -42,6 +40,12 @@ export type ScheduleTrigger = {
42
40
  cron: string;
43
41
  timezone?: string;
44
42
  };
43
+ export type JobRetention = "forever" | Partial<Record<Extract<JobStatus, "succeeded" | "failed" | "cancelled">, string | {
44
+ /** Positive milliseconds or a PostgreSQL interval, measured from finished_at. */
45
+ maxAge?: number | string;
46
+ /** Keep the newest runs of this status. Zero removes all eligible runs. */
47
+ maxCount?: number;
48
+ }>>;
45
49
  export type JobContext<S, T extends JobTableName<S> | undefined, P extends ParamsSchema, Context = undefined> = {
46
50
  /** Re-fetched at the start of each attempt. Undefined for schedules. */
47
51
  row: T extends string ? Required<JobRow<S, T>> : undefined;
@@ -64,23 +68,17 @@ export type JobContext<S, T extends JobTableName<S> | undefined, P extends Param
64
68
  };
65
69
  fail: (reason: string) => never;
66
70
  };
67
- export type JobDefinition<S = void, T extends JobTableName<S> | undefined = JobTableName<S> | undefined, P extends ParamsSchema = ParamsSchema, Context = undefined> = {
68
- trigger: T extends JobTableName<S> ? RowTrigger<S, T> : ScheduleTrigger;
69
- params?: P;
70
- /** Defaults to system. User jobs enforce the triggering/rerunning user's publish rules. */
71
- runAs?: "system" | "user";
72
- retry?: {
73
- maxAttempts: number;
74
- backoff?: "exponential" | "fixed";
75
- delayMs?: number;
76
- };
77
- timeoutMs?: number;
78
- /** Conflicts use the job name and row primary key, or just the name for schedules. */
79
- onConflict?: "queue" | "replace" | "skip";
80
- /** Maximum parallel runs across workers. Defaults to 1. Same-key runs are serialized. */
81
- concurrency?: number;
82
- run: (ctx: JobContext<S, T, P, Context>) => Promise<void>;
83
- };
71
+ export type JobDefinition<S = void, T extends JobTableName<S> | undefined = JobTableName<S> | undefined, P extends ParamsSchema = ParamsSchema, Context = undefined> = JobDefinitionOptions<S, T, P, Context> & (T extends JobTableName<S> ? {
72
+ trigger: RowTrigger<S, T>;
73
+ retention?: never;
74
+ } : {
75
+ trigger: ScheduleTrigger;
76
+ /** Required for schedules. "forever" keeps all history.
77
+ * Per-status strings shorthand maxAge; "forever" or omitted statuses keep their history.
78
+ * Cleanup runs periodically and preserves the current scheduling minute for deduplication.
79
+ */
80
+ retention: JobRetention;
81
+ });
84
82
  export type JobsConfig<S = void, Context = undefined> = Record<string, ({
85
83
  [T in JobTableName<S>]: Omit<JobDefinition<S, T, any, Context>, "params">;
86
84
  }[JobTableName<S>] | Omit<JobDefinition<S, undefined, any, Context>, "params">) & {
@@ -94,22 +92,12 @@ export type JobsOptions<S = void, Context = undefined> = {
94
92
  /** Infers a job's params and row while sharing the application's schema/context. */
95
93
  export declare const createJobDefiner: <S = void, Context = undefined>() => DefineJob<S, Context>;
96
94
  type DefineJob<S, Context> = {
97
- <T extends JobTableName<S>, const P extends ParamsSchema = {}>(definition: Omit<JobDefinition<S, T, P, Context>, "trigger"> & {
95
+ <T extends JobTableName<S>, const P extends ParamsSchema = {}>(definition: JobDefinitionOptions<S, T, P, Context> & {
98
96
  trigger: RowTrigger<S, T>;
97
+ retention?: never;
99
98
  }): JobDefinition<S, T, P, Context>;
100
99
  <const P extends ParamsSchema = {}>(definition: JobDefinition<S, undefined, P, Context>): JobDefinition<S, undefined, P, Context>;
101
100
  };
102
- export type JobValue = null | string | number | boolean | readonly JobValue[] | {
103
- readonly [key: string]: JobValue;
104
- };
105
- type JobValues = {
106
- target_row_pkey: Record<string, JobValue>;
107
- params: Record<string, JobValue>;
108
- checkpoint: JobValue | null;
109
- error: JobValue;
110
- };
111
- export type JobRecord = TableRowFromTableConfig<typeof jobTableConfig, JobValues>;
112
- export type JobInsertRecord = TableInsertRowFromTableConfig<typeof jobTableConfig, JobValues>;
113
101
  export declare const jobControlStatuses: Record<JobControlOperation, readonly JobStatus[]>;
114
102
  export type JobControlOptions<S = void, Row extends AnyObject = AnyObject> = {
115
103
  row: AnyObject;
@@ -144,6 +132,22 @@ export type JobTransaction = {
144
132
  dbx: DbTxTableHandlers;
145
133
  };
146
134
  export type RuntimeJobDefinition = JobDefinition<void, string | undefined, ParamsSchema, unknown>;
135
+ type JobDefinitionOptions<S, T extends JobTableName<S> | undefined, P extends ParamsSchema, Context> = {
136
+ params?: P;
137
+ /** Defaults to system. User jobs enforce the triggering/rerunning user's publish rules. */
138
+ runAs?: "system" | "user";
139
+ retry?: {
140
+ maxAttempts: number;
141
+ backoff?: "exponential" | "fixed";
142
+ delayMs?: number;
143
+ };
144
+ timeoutMs?: number;
145
+ /** Conflicts use the job name and row primary key, or just the name for schedules. */
146
+ onConflict?: "queue" | "replace" | "skip";
147
+ /** Maximum parallel runs across workers. Defaults to 1. Same-key runs are serialized. */
148
+ concurrency?: number;
149
+ run: (ctx: JobContext<S, T, P, Context>) => Promise<void>;
150
+ };
147
151
  type JobTableName<S> = S extends DBSchema ? keyof S & string : string;
148
152
  type JobRow<S, T extends string> = S extends Record<T, {
149
153
  columns: infer R extends AnyObject;
@@ -1 +1 @@
1
- {"version":3,"file":"JobTypes.d.ts","sourceRoot":"","sources":["../../lib/Jobs/JobTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JobTypes.d.ts","sourceRoot":"","sources":["../../lib/Jobs/JobTypes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"JobTypes.js","sourceRoot":"","sources":["../../lib/Jobs/JobTypes.ts"],"names":[],"mappings":";;;AA4GA,oFAAoF;AAC7E,MAAM,gBAAgB,GAAG,GAAkC,EAAE,CAClE,CAAC,CAAC,UAAmB,EAAE,EAAE,CAAC,UAAU,CAA0B,CAAC;AADpD,QAAA,gBAAgB,oBACoC;AAqBpD,QAAA,kBAAkB,GAAsD;IACnF,YAAY,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IACrC,KAAK,EAAE,CAAC,WAAW,CAAC;IACpB,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B,CAAC"}
1
+ {"version":3,"file":"JobTypes.js","sourceRoot":"","sources":["../../lib/Jobs/JobTypes.ts"],"names":[],"mappings":";;;AAuHA,oFAAoF;AAC7E,MAAM,gBAAgB,GAAG,GAAkC,EAAE,CAClE,CAAC,CAAC,UAAmB,EAAE,EAAE,CAAC,UAAU,CAA0B,CAAC;AADpD,QAAA,gBAAgB,oBACoC;AAcpD,QAAA,kBAAkB,GAAsD;IACnF,YAAY,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IACrC,KAAK,EAAE,CAAC,WAAW,CAAC;IACpB,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B,CAAC"}
@@ -3,8 +3,8 @@ export declare const claimJob: (prostgles: Prostgles, name: string, concurrency:
3
3
  readonly id: string;
4
4
  readonly job_name: string;
5
5
  readonly target_table: string | null;
6
- readonly target_row_pkey: Record<string, import("./JobTypes").JobValue>;
7
- readonly params: Record<string, import("./JobTypes").JobValue>;
6
+ readonly target_row_pkey: Record<string, import("prostgles-types/dist/jobTable").JobValue>;
7
+ readonly params: Record<string, import("prostgles-types/dist/jobTable").JobValue>;
8
8
  readonly user_id: string | null;
9
9
  readonly occurrence: string | null;
10
10
  readonly reason: "trigger" | "rerun";
@@ -14,14 +14,14 @@ export declare const claimJob: (prostgles: Prostgles, name: string, concurrency:
14
14
  readonly delay_ms: number;
15
15
  readonly backoff: "fixed" | "exponential";
16
16
  readonly cancel_requested: boolean;
17
- readonly checkpoint: import("./JobTypes").JobValue;
17
+ readonly checkpoint: import("prostgles-types/dist/jobTable").JobValue;
18
18
  readonly has_checkpoint: boolean;
19
19
  readonly progress_message: string | null;
20
20
  readonly progress_numeric: import("prostgles-types").JSONB.GetObjectType<{
21
21
  readonly done: "number";
22
22
  readonly total: "number";
23
23
  }> | null;
24
- readonly error: import("./JobTypes").JobValue;
24
+ readonly error: import("prostgles-types/dist/jobTable").JobValue;
25
25
  readonly run_at: string;
26
26
  readonly lease_token: string;
27
27
  readonly locked_until: string;
@@ -5,6 +5,7 @@ export declare const enqueueJob: (prostgles: Prostgles, transaction: JobTransact
5
5
  userId?: string;
6
6
  params?: Record<string, unknown>;
7
7
  reason?: "trigger" | "rerun";
8
+ /** Cron slot timestamp for deduplication; omitted for row-triggered jobs and manual reruns. */
8
9
  occurrence?: Date;
9
10
  }) => Promise<{
10
11
  jobId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"enqueueJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/enqueueJob.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5D,2FAA2F;AAC3F,eAAO,MAAM,UAAU,GACrB,WAAW,SAAS,EACpB,aAAa,cAAc,EAC3B,MAAM,MAAM,EACZ,eAAe,SAAS,CAAC,iBAAiB,CAAC,EAC3C,UAAS;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,IAAI,CAAC;CACd;;;EAuFP,CAAC"}
1
+ {"version":3,"file":"enqueueJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/enqueueJob.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5D,2FAA2F;AAC3F,eAAO,MAAM,UAAU,GACrB,WAAW,SAAS,EACpB,aAAa,cAAc,EAC3B,MAAM,MAAM,EACZ,eAAe,SAAS,CAAC,iBAAiB,CAAC,EAC3C,UAAS;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC7B,+FAA+F;IAC/F,UAAU,CAAC,EAAE,IAAI,CAAC;CACd;;;EAuFP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"enqueueJob.js","sourceRoot":"","sources":["../../lib/Jobs/enqueueJob.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enqueueJob.js","sourceRoot":"","sources":["../../lib/Jobs/enqueueJob.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAClD,6CAAyC;AAEzC,yDAAsD;AAEtD,6DAA0D;AAC1D,iDAA8C;AAE9C,2FAA2F;AACpF,MAAM,UAAU,GAAG,KAAK,EAC7B,SAAoB,EACpB,WAA2B,EAC3B,IAAY,EACZ,aAA2C,EAC3C,UAMI,EAAE,EACN,EAAE;IACF,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,mCAAgB,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,UAAU,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAY,EAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,IAAA,uCAAkB,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzC,MAAM,WAAW,GACf,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACjF,MAAM,QAAQ,GACZ,WAAW,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,MAAM,eAAe,GACnB,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE;QAC1B,CAAC,CAAC;YACE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5D,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;aACzB,CAAC,CAAC;SACJ,CAAC;IACN,IAAI,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC3C,gFAAgF;QAChF,MAAM,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;QACvC,IAAI,CAAC,QAAQ,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QACnF,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CACrC,eAAe,EACf,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,EACxB,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CACjC,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,IAAI,SAAS,EAAE,CAAC;IACtD,CAAC,CAAC;IACF,iFAAiF;IACjF,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,uEAAuE,EAAE;QAC/F,eAAe,EAAE,IAAA,iCAAe,EAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;KACzE,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAClC,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE;SAC7C,CAAC,CAAC;QACH,IAAI,QAAQ;YAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B;QACE,IAAI,EAAE;YACJ,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE;YACvE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE;SACxD;KACF,EACD,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAC/B,CAAC;IACF,IAAI,MAAM,IAAI,UAAU,CAAC,UAAU,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3E,IAAI,MAAM,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClD,MAAM,WAAW,CAAC,CAAC,CAAC,IAAI,CACtB;eACS,QAAQ;;;;;;;;;6CASsB,EACvC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,CACrD,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAA,wBAAU,GAAE,CAAC;IAC3B,MAAM,IAAI,CAAC,MAAM,CAAC;QAChB,EAAE,EAAE,KAAK;QACT,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,aAAa;QAC9B,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;QAC/B,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,IAAI;QACrD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;QACnC,YAAY,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC;QAChD,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI;QAC3C,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,IAAI,OAAO;KAC9C,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC;AAlGW,QAAA,UAAU,cAkGrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"enqueueSchedules.d.ts","sourceRoot":"","sources":["../../lib/Jobs/enqueueSchedules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAK9C,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,GAAU,WAAW,SAAS,EAAE,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,kBAe1F,CAAC"}
1
+ {"version":3,"file":"enqueueSchedules.d.ts","sourceRoot":"","sources":["../../lib/Jobs/enqueueSchedules.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAK9C,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,GAAU,WAAW,SAAS,EAAE,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,kBAoB1F,CAAC"}
@@ -1,21 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.enqueueSchedules = void 0;
4
+ const prostgles_types_1 = require("prostgles-types");
4
5
  const enqueueJob_1 = require("./enqueueJob");
5
6
  const cronSchedule_1 = require("./cronSchedule");
6
7
  const jobUtils_1 = require("./jobUtils");
7
8
  /** Deduplicate scheduled occurrences in PostgreSQL, including across instances and restarts. */
8
9
  const enqueueSchedules = async (prostgles, schedules) => {
9
- const { now } = await prostgles.db.one("SELECT clock_timestamp() AS now");
10
10
  for (const [name, { trigger }] of Object.entries(prostgles.opts.jobs?.definitions ?? {})) {
11
11
  if (trigger.type !== "schedule")
12
12
  continue;
13
13
  try {
14
- const occurrence = (0, cronSchedule_1.parseCronSchedule)(trigger)(new Date(now));
15
- if (!occurrence || schedules.get(name) === occurrence.toISOString())
16
- continue;
17
- await prostgles.dboBuilder.getTX((dbx, t) => (0, enqueueJob_1.enqueueJob)(prostgles, { dbx, t }, name, {}, { occurrence }));
18
- schedules.set(name, occurrence.toISOString());
14
+ const occurrence = await prostgles.dboBuilder.getTX(async (dbx, t) => {
15
+ /* Protect deduplication rows from selection through enqueue, including lock waits. */
16
+ await t.one("SELECT pg_advisory_xact_lock_shared(hashtextextended(${lockKey}, 0))", {
17
+ lockKey: (0, prostgles_types_1.stableStringify)([prostgles.jobs.tableSQL, name, "schedule"]),
18
+ });
19
+ const { now } = await t.one("SELECT clock_timestamp() AS now");
20
+ const occurrence = (0, cronSchedule_1.parseCronSchedule)(trigger)(new Date(now));
21
+ if (!occurrence || schedules.get(name) === occurrence.toISOString())
22
+ return;
23
+ await (0, enqueueJob_1.enqueueJob)(prostgles, { dbx, t }, name, {}, { occurrence });
24
+ return occurrence.toISOString();
25
+ });
26
+ if (occurrence)
27
+ schedules.set(name, occurrence);
19
28
  }
20
29
  catch (error) {
21
30
  console.error(`Job schedule ${name} failed`, (0, jobUtils_1.jobError)(error));
@@ -1 +1 @@
1
- {"version":3,"file":"enqueueSchedules.js","sourceRoot":"","sources":["../../lib/Jobs/enqueueSchedules.ts"],"names":[],"mappings":";;;AACA,6CAA0C;AAC1C,iDAAmD;AACnD,yCAAsC;AAEtC,gGAAgG;AACzF,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAAoB,EAAE,SAA8B,EAAE,EAAE;IAC7F,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,SAAS,CAAC,EAAG,CAAC,GAAG,CAAkB,iCAAiC,CAAC,CAAC;IAC5F,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QACzF,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QAC1C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,gCAAiB,EAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,WAAW,EAAE;gBAAE,SAAS;YAC9E,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAC1C,IAAA,uBAAU,EAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAC5D,CAAC;YACF,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,IAAI,SAAS,EAAE,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAfW,QAAA,gBAAgB,oBAe3B"}
1
+ {"version":3,"file":"enqueueSchedules.js","sourceRoot":"","sources":["../../lib/Jobs/enqueueSchedules.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,6CAA0C;AAC1C,iDAAmD;AACnD,yCAAsC;AAEtC,gGAAgG;AACzF,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAAoB,EAAE,SAA8B,EAAE,EAAE;IAC7F,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QACzF,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QAC1C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;gBACnE,sFAAsF;gBACtF,MAAM,CAAC,CAAC,GAAG,CAAC,sEAAsE,EAAE;oBAClF,OAAO,EAAE,IAAA,iCAAe,EAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;iBACtE,CAAC,CAAC;gBACH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAkB,iCAAiC,CAAC,CAAC;gBAChF,MAAM,UAAU,GAAG,IAAA,gCAAiB,EAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7D,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,WAAW,EAAE;oBAAE,OAAO;gBAC5E,MAAM,IAAA,uBAAU,EAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBAClE,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,IAAI,UAAU;gBAAE,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,IAAI,SAAS,EAAE,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AApBW,QAAA,gBAAgB,oBAoB3B"}
@@ -0,0 +1,10 @@
1
+ import type { Prostgles } from "../Prostgles";
2
+ import type { JobRetention } from "./JobTypes";
3
+ export declare const getJobRetention: (prostgles: Prostgles) => Promise<JobRetentionPolicy[]>;
4
+ export type JobRetentionPolicy = {
5
+ jobName: string;
6
+ status: keyof Exclude<JobRetention, "forever">;
7
+ maxAge: string | null;
8
+ maxCount: number | null;
9
+ };
10
+ //# sourceMappingURL=getJobRetention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getJobRetention.d.ts","sourceRoot":"","sources":["../../lib/Jobs/getJobRetention.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,eAAe,GAAU,WAAW,SAAS,kCAiEzD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getJobRetention = void 0;
4
+ const prostgles_types_1 = require("prostgles-types");
5
+ const getJobRetention = async (prostgles) => {
6
+ const policies = [];
7
+ for (const [jobName, definition] of Object.entries(prostgles.opts.jobs?.definitions ?? {})) {
8
+ const retention = definition.retention;
9
+ if (retention === undefined) {
10
+ if (definition.trigger.type === "schedule") {
11
+ throw new Error(`Invalid job retention for ${jobName}: required for scheduled jobs`);
12
+ }
13
+ continue;
14
+ }
15
+ if (definition.trigger.type !== "schedule" || (retention !== "forever" && !(0, prostgles_types_1.isObject)(retention))) {
16
+ throw new Error(`Invalid job retention for ${jobName}: expected a scheduled job's status policies or "forever"`);
17
+ }
18
+ if (retention === "forever")
19
+ continue;
20
+ for (const [status, value] of Object.entries(retention)) {
21
+ const errorMessage = `Invalid job retention for ${jobName}.${status}`;
22
+ if (status !== "succeeded" && status !== "failed" && status !== "cancelled") {
23
+ throw new Error(`${errorMessage}: expected succeeded, failed or cancelled`);
24
+ }
25
+ if (value === undefined || value === "forever")
26
+ continue;
27
+ if (typeof value !== "string" && !(0, prostgles_types_1.isObject)(value)) {
28
+ throw new Error(`${errorMessage}: expected an interval, forever, or maxAge/maxCount`);
29
+ }
30
+ const policy = typeof value === "string" ? { maxAge: value } : value;
31
+ if (Object.keys(policy).some((key) => key !== "maxAge" && key !== "maxCount") ||
32
+ (policy.maxAge === undefined && policy.maxCount === undefined)) {
33
+ throw new Error(`${errorMessage}: expected an interval, forever, or maxAge/maxCount`);
34
+ }
35
+ const { maxAge, maxCount } = policy;
36
+ if (maxCount !== undefined &&
37
+ (typeof maxCount !== "number" || !Number.isSafeInteger(maxCount) || maxCount < 0)) {
38
+ throw new Error(`${errorMessage}: maxCount must be a non-negative safe integer`);
39
+ }
40
+ let interval = null;
41
+ if (maxAge !== undefined) {
42
+ try {
43
+ if (typeof maxAge !== "string" &&
44
+ (typeof maxAge !== "number" || !Number.isFinite(maxAge) || maxAge <= 0)) {
45
+ throw new Error("Expected milliseconds or a PostgreSQL interval");
46
+ }
47
+ interval = typeof maxAge === "number" ? `${maxAge} milliseconds` : maxAge;
48
+ const { valid } = await prostgles.db.one(`SELECT isfinite(age) AND age > interval '0' AS valid
49
+ FROM (SELECT \${interval}::interval AS age) parsed`, { interval });
50
+ if (!valid)
51
+ throw new Error("Expected a positive finite interval");
52
+ }
53
+ catch (cause) {
54
+ throw new Error(`${errorMessage}: maxAge must be a positive finite PostgreSQL interval`, {
55
+ cause,
56
+ });
57
+ }
58
+ }
59
+ policies.push({ jobName, status, maxAge: interval, maxCount: maxCount ?? null });
60
+ }
61
+ }
62
+ return policies;
63
+ };
64
+ exports.getJobRetention = getJobRetention;
65
+ //# sourceMappingURL=getJobRetention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getJobRetention.js","sourceRoot":"","sources":["../../lib/Jobs/getJobRetention.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,23 @@
1
1
  export declare const jobTableConfig: {
2
+ readonly indexes: {
3
+ readonly occurrence: {
4
+ readonly unique: true;
5
+ readonly columns: "job_name, occurrence";
6
+ readonly where: "occurrence IS NOT NULL";
7
+ };
8
+ readonly pending: {
9
+ readonly columns: "job_name, run_at";
10
+ readonly where: "status = 'pending'";
11
+ };
12
+ readonly active: {
13
+ readonly columns: "job_name";
14
+ readonly where: "status IN ('pending', 'running')";
15
+ };
16
+ readonly retention: {
17
+ readonly columns: "job_name, status, finished_at, id";
18
+ readonly where: "target_table IS NULL AND status IN ('succeeded', 'failed', 'cancelled')";
19
+ };
20
+ };
2
21
  readonly columns: {
3
22
  readonly id: "UUID PRIMARY KEY";
4
23
  readonly job_name: "TEXT NOT NULL";
@@ -127,20 +146,5 @@ export declare const jobTableConfig: {
127
146
  };
128
147
  }];
129
148
  };
130
- readonly indexes: {
131
- readonly occurrence: {
132
- readonly unique: true;
133
- readonly columns: "job_name, occurrence";
134
- readonly where: "occurrence IS NOT NULL";
135
- };
136
- readonly pending: {
137
- readonly columns: "job_name, run_at";
138
- readonly where: "status = 'pending'";
139
- };
140
- readonly active: {
141
- readonly columns: "job_name";
142
- readonly where: "status IN ('pending', 'running')";
143
- };
144
- };
145
149
  };
146
150
  //# sourceMappingURL=jobTableConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobTableConfig.d.ts","sourceRoot":"","sources":["../../lib/Jobs/jobTableConfig.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDS,CAAC"}
1
+ {"version":3,"file":"jobTableConfig.d.ts","sourceRoot":"","sources":["../../lib/Jobs/jobTableConfig.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWS,CAAC"}
@@ -1,65 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.jobTableConfig = void 0;
4
- const shared = {
5
- target_table: {},
6
- user_id: {},
7
- occurrence: {},
8
- checkpoint: {},
9
- progress_message: {},
10
- progress_numeric: {},
11
- backoff: { enum: ["fixed", "exponential"] },
12
- reason: { enum: ["trigger", "rerun"] },
13
- };
4
+ const prostgles_types_1 = require("prostgles-types");
14
5
  exports.jobTableConfig = {
15
- columns: {
16
- id: "UUID PRIMARY KEY",
17
- job_name: "TEXT NOT NULL",
18
- target_table: "TEXT",
19
- target_row_pkey: "JSONB NOT NULL",
20
- params: "JSONB NOT NULL",
21
- user_id: "TEXT",
22
- occurrence: "TIMESTAMPTZ",
23
- reason: "TEXT NOT NULL DEFAULT 'trigger'",
24
- status: "TEXT NOT NULL DEFAULT 'pending'",
25
- attempts: "INTEGER NOT NULL DEFAULT 0",
26
- max_attempts: "INTEGER NOT NULL",
27
- delay_ms: "DOUBLE PRECISION NOT NULL",
28
- backoff: "TEXT NOT NULL",
29
- cancel_requested: "BOOLEAN NOT NULL DEFAULT FALSE",
30
- checkpoint: "JSONB",
31
- has_checkpoint: "BOOLEAN NOT NULL DEFAULT FALSE",
32
- progress_message: "TEXT",
33
- progress_numeric: {
34
- nullable: true,
35
- jsonbSchema: { type: { done: "number", total: "number" } },
36
- },
37
- error: "JSONB",
38
- run_at: "TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp()",
39
- lease_token: "UUID",
40
- locked_until: "TIMESTAMPTZ",
41
- created_at: "TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp()",
42
- finished_at: "TIMESTAMPTZ",
43
- },
44
- check: {
45
- $or: [
46
- { ...shared, status: "pending", error: {} },
47
- {
48
- ...shared,
49
- status: "running",
50
- error: {},
51
- lease_token: { $ne: null },
52
- locked_until: { $ne: null },
53
- },
54
- { ...shared, status: "succeeded", finished_at: { $ne: null } },
55
- { ...shared, status: "failed", error: { $ne: null }, finished_at: { $ne: null } },
56
- { ...shared, status: "cancelled", error: {}, finished_at: { $ne: null } },
57
- ],
58
- },
6
+ ...prostgles_types_1.jobTableSchema,
59
7
  indexes: {
60
8
  occurrence: { unique: true, columns: "job_name, occurrence", where: "occurrence IS NOT NULL" },
61
9
  pending: { columns: "job_name, run_at", where: "status = 'pending'" },
62
10
  active: { columns: "job_name", where: "status IN ('pending', 'running')" },
11
+ retention: {
12
+ columns: "job_name, status, finished_at, id",
13
+ where: "target_table IS NULL AND status IN ('succeeded', 'failed', 'cancelled')",
14
+ },
63
15
  },
64
16
  };
65
17
  //# sourceMappingURL=jobTableConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobTableConfig.js","sourceRoot":"","sources":["../../lib/Jobs/jobTableConfig.ts"],"names":[],"mappings":";;;AAEA,MAAM,MAAM,GAAG;IACb,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,EAAE;IACpB,gBAAgB,EAAE,EAAE;IACpB,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE;IAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;CAC9B,CAAC;AAEE,QAAA,cAAc,GAAG;IAC5B,OAAO,EAAE;QACP,EAAE,EAAE,kBAAkB;QACtB,QAAQ,EAAE,eAAe;QACzB,YAAY,EAAE,MAAM;QACpB,eAAe,EAAE,gBAAgB;QACjC,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,aAAa;QACzB,MAAM,EAAE,iCAAiC;QACzC,MAAM,EAAE,iCAAiC;QACzC,QAAQ,EAAE,4BAA4B;QACtC,YAAY,EAAE,kBAAkB;QAChC,QAAQ,EAAE,2BAA2B;QACrC,OAAO,EAAE,eAAe;QACxB,gBAAgB,EAAE,gCAAgC;QAClD,UAAU,EAAE,OAAO;QACnB,cAAc,EAAE,gCAAgC;QAChD,gBAAgB,EAAE,MAAM;QACxB,gBAAgB,EAAE;YAChB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;SAC3D;QACD,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,gDAAgD;QACxD,WAAW,EAAE,MAAM;QACnB,YAAY,EAAE,aAAa;QAC3B,UAAU,EAAE,gDAAgD;QAC5D,WAAW,EAAE,aAAa;KAC3B;IACD,KAAK,EAAE;QACL,GAAG,EAAE;YACH,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;YAC3C;gBACE,GAAG,MAAM;gBACT,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;gBAC1B,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;aAC5B;YACD,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC9D,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACjF,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;SAC1E;KACF;IACD,OAAO,EAAE;QACP,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,wBAAwB,EAAE;QAC9F,OAAO,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,oBAAoB,EAAE;QACrE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,kCAAkC,EAAE;KAC3E;CACiC,CAAC"}
1
+ {"version":3,"file":"jobTableConfig.js","sourceRoot":"","sources":["../../lib/Jobs/jobTableConfig.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AAGpC,QAAA,cAAc,GAAG;IAC5B,GAAG,gCAAc;IACjB,OAAO,EAAE;QACP,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,wBAAwB,EAAE;QAC9F,OAAO,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,oBAAoB,EAAE;QACrE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,kCAAkC,EAAE;QAC1E,SAAS,EAAE;YACT,OAAO,EAAE,mCAAmC;YAC5C,KAAK,EAAE,yEAAyE;SACjF;KACF;CACiC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Prostgles } from "../Prostgles";
2
+ import type { JobRetentionPolicy } from "./getJobRetention";
3
+ export declare const pruneJobs: (prostgles: Prostgles, policies: JobRetentionPolicy[]) => Promise<void>;
4
+ //# sourceMappingURL=pruneJobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pruneJobs.d.ts","sourceRoot":"","sources":["../../lib/Jobs/pruneJobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,eAAO,MAAM,SAAS,GAAU,WAAW,SAAS,EAAE,UAAU,kBAAkB,EAAE,kBA6CnF,CAAC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pruneJobs = void 0;
4
+ const prostgles_types_1 = require("prostgles-types");
5
+ const jobUtils_1 = require("./jobUtils");
6
+ const pruneJobs = async (prostgles, policies) => {
7
+ const tableSQL = prostgles.jobs.tableSQL;
8
+ for (const policy of policies) {
9
+ try {
10
+ await prostgles.db.tx(async (transaction) => {
11
+ /* Skip cleanup while a scheduler may still enqueue an occurrence selected before this minute. */
12
+ const { locked } = await transaction.one("SELECT pg_try_advisory_xact_lock(hashtextextended(${lockKey}, 0)) AS locked", { lockKey: (0, prostgles_types_1.stableStringify)([tableSQL, policy.jobName, "schedule"]) });
13
+ if (!locked)
14
+ return;
15
+ const jobStatusCondition = `job_name = \${jobName} AND status = \${status} AND target_table IS NULL`;
16
+ await transaction.none(`WITH count_boundary AS (
17
+ SELECT finished_at, id
18
+ FROM ${tableSQL}
19
+ WHERE ${jobStatusCondition}
20
+ AND \${maxCount}::bigint IS NOT NULL
21
+ ORDER BY
22
+ finished_at DESC,
23
+ id DESC
24
+ OFFSET \${maxCount}::bigint LIMIT 1
25
+ ), expired AS (
26
+ SELECT id
27
+ FROM ${tableSQL}
28
+ WHERE ${jobStatusCondition}
29
+ AND (occurrence IS NULL OR occurrence < date_trunc('minute', statement_timestamp()))
30
+ AND (
31
+ finished_at < statement_timestamp() - \${maxAge}::interval
32
+ OR (finished_at, id) <= (SELECT finished_at, id FROM count_boundary)
33
+ )
34
+ ORDER BY
35
+ finished_at,
36
+ id
37
+ FOR UPDATE SKIP LOCKED
38
+ LIMIT 1000
39
+ )
40
+ DELETE FROM ${tableSQL} jobs USING expired WHERE jobs.id = expired.id`, policy);
41
+ });
42
+ }
43
+ catch (error) {
44
+ console.error(`Job retention ${policy.jobName}.${policy.status} failed`, (0, jobUtils_1.jobError)(error));
45
+ }
46
+ }
47
+ };
48
+ exports.pruneJobs = pruneJobs;
49
+ //# sourceMappingURL=pruneJobs.js.map