prostgles-server 4.2.705 → 4.2.706

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 (57) hide show
  1. package/dist/Jobs/JobTypes.d.ts +48 -8
  2. package/dist/Jobs/JobTypes.d.ts.map +1 -1
  3. package/dist/Jobs/JobTypes.js.map +1 -1
  4. package/dist/Jobs/claimJob.d.ts +2 -0
  5. package/dist/Jobs/claimJob.d.ts.map +1 -1
  6. package/dist/Jobs/claimJob.js +26 -6
  7. package/dist/Jobs/claimJob.js.map +1 -1
  8. package/dist/Jobs/controlJob.d.ts +2 -2
  9. package/dist/Jobs/controlJob.d.ts.map +1 -1
  10. package/dist/Jobs/controlJob.js +10 -4
  11. package/dist/Jobs/controlJob.js.map +1 -1
  12. package/dist/Jobs/controlManualJob.d.ts +6 -0
  13. package/dist/Jobs/controlManualJob.d.ts.map +1 -0
  14. package/dist/Jobs/controlManualJob.js +53 -0
  15. package/dist/Jobs/controlManualJob.js.map +1 -0
  16. package/dist/Jobs/createJobControlFunctionDefiner.d.ts +57 -13
  17. package/dist/Jobs/createJobControlFunctionDefiner.d.ts.map +1 -1
  18. package/dist/Jobs/createJobControlFunctionDefiner.js +37 -7
  19. package/dist/Jobs/createJobControlFunctionDefiner.js.map +1 -1
  20. package/dist/Jobs/createJobsAPI.d.ts.map +1 -1
  21. package/dist/Jobs/createJobsAPI.js +16 -9
  22. package/dist/Jobs/createJobsAPI.js.map +1 -1
  23. package/dist/Jobs/createManualJobControlFunction.d.ts +49 -0
  24. package/dist/Jobs/createManualJobControlFunction.d.ts.map +1 -0
  25. package/dist/Jobs/createManualJobControlFunction.js +44 -0
  26. package/dist/Jobs/createManualJobControlFunction.js.map +1 -0
  27. package/dist/Jobs/enqueueJob.d.ts +1 -1
  28. package/dist/Jobs/enqueueJob.d.ts.map +1 -1
  29. package/dist/Jobs/enqueueJob.js +2 -1
  30. package/dist/Jobs/enqueueJob.js.map +1 -1
  31. package/dist/Jobs/getJobDefinition.d.ts.map +1 -1
  32. package/dist/Jobs/getJobDefinition.js +7 -4
  33. package/dist/Jobs/getJobDefinition.js.map +1 -1
  34. package/dist/Jobs/getJobRetention.d.ts.map +1 -1
  35. package/dist/Jobs/getJobRetention.js +5 -5
  36. package/dist/Jobs/getJobRetention.js.map +1 -1
  37. package/dist/Jobs/getJobTableHooks.js +1 -1
  38. package/dist/Jobs/getJobTableHooks.js.map +1 -1
  39. package/dist/Jobs/jobTableConfig.d.ts +2 -0
  40. package/dist/Jobs/jobTableConfig.d.ts.map +1 -1
  41. package/dist/Jobs/jobUtils.d.ts +2 -1
  42. package/dist/Jobs/jobUtils.d.ts.map +1 -1
  43. package/dist/Jobs/jobUtils.js +10 -1
  44. package/dist/Jobs/jobUtils.js.map +1 -1
  45. package/dist/Jobs/runJob.d.ts.map +1 -1
  46. package/dist/Jobs/runJob.js +14 -3
  47. package/dist/Jobs/runJob.js.map +1 -1
  48. package/dist/Jobs/startJob.d.ts +10 -0
  49. package/dist/Jobs/startJob.d.ts.map +1 -0
  50. package/dist/Jobs/startJob.js +40 -0
  51. package/dist/Jobs/startJob.js.map +1 -0
  52. package/dist/ProstglesTypes.d.ts +1 -1
  53. package/dist/ProstglesTypes.d.ts.map +1 -1
  54. package/dist/index.d.ts +1 -1
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js.map +1 -1
  57. package/package.json +2 -2
@@ -27,6 +27,7 @@ export type ParamsOutput<P extends ParamsSchema> = {
27
27
  export type RowTrigger<S, T extends JobTableName<S>> = {
28
28
  type: "row";
29
29
  table: T;
30
+ /** Use an empty array for rows whose jobs are started only through the jobs API. */
30
31
  on: ("insert" | "update")[];
31
32
  /** On updates, at least one of these columns must actually change. */
32
33
  columns?: (keyof JobRow<S, T> & string)[];
@@ -43,6 +44,9 @@ export type ScheduleTrigger = {
43
44
  cron: string;
44
45
  timezone?: string;
45
46
  };
47
+ export type ManualTrigger = {
48
+ type: "manual";
49
+ };
46
50
  export type JobRetention = "forever" | Partial<Record<Extract<JobStatus, "succeeded" | "failed" | "cancelled">, string | {
47
51
  /** Positive milliseconds or a PostgreSQL interval, measured from finished_at. */
48
52
  maxAge?: number | string;
@@ -50,12 +54,13 @@ export type JobRetention = "forever" | Partial<Record<Extract<JobStatus, "succee
50
54
  maxCount?: number;
51
55
  }>>;
52
56
  export type JobContext<S, T extends JobTableName<S> | undefined, P extends ParamsSchema, Context = undefined> = {
53
- /** Re-fetched at the start of each attempt. Undefined for schedules. */
57
+ /** Re-fetched at the start of each attempt. Undefined for jobs without a row. */
54
58
  row: T extends string ? Required<JobRow<S, T>> : undefined;
55
59
  params: ParamsOutput<P>;
56
60
  dbo: DBHandlerServer<S>;
57
61
  user: SessionUser["user"] | undefined;
58
62
  context: Context;
63
+ /** An attempt released during graceful shutdown keeps its number when resumed. */
59
64
  run: {
60
65
  id: string;
61
66
  attempt: number;
@@ -75,8 +80,8 @@ export type JobDefinition<S = void, T extends JobTableName<S> | undefined = JobT
75
80
  trigger: RowTrigger<S, T>;
76
81
  retention?: never;
77
82
  } : {
78
- trigger: ScheduleTrigger;
79
- /** Required for schedules. "forever" keeps all history.
83
+ trigger: ScheduleTrigger | ManualTrigger;
84
+ /** Required for jobs without a row. "forever" keeps all history.
80
85
  * Per-status strings shorthand maxAge; "forever" or omitted statuses keep their history.
81
86
  * Cleanup runs periodically and preserves the current scheduling minute for deduplication.
82
87
  */
@@ -99,7 +104,11 @@ type DefineJob<S, Context> = {
99
104
  trigger: RowTrigger<S, T>;
100
105
  retention?: never;
101
106
  }): JobDefinition<S, T, P, Context>;
102
- <const P extends ParamsSchema = {}>(definition: JobDefinition<S, undefined, P, Context>): JobDefinition<S, undefined, P, Context>;
107
+ <const P extends ParamsSchema = {}, Trigger extends ScheduleTrigger | ManualTrigger = ScheduleTrigger | ManualTrigger>(definition: JobDefinition<S, undefined, P, Context> & {
108
+ trigger: Trigger;
109
+ }): JobDefinition<S, undefined, P, Context> & {
110
+ trigger: Trigger;
111
+ };
103
112
  };
104
113
  export declare const jobControlStatuses: Record<JobControlOperation, readonly JobStatus[]>;
105
114
  export type JobControlOptions<S = void, Row extends AnyObject = AnyObject> = {
@@ -107,6 +116,17 @@ export type JobControlOptions<S = void, Row extends AnyObject = AnyObject> = {
107
116
  operation: JobControlOperation;
108
117
  run?: (row: Row, dbx: DBTableHandlersFromSchema<S>) => MaybePromise<void>;
109
118
  };
119
+ export type ManualJobControlOptions<S = void> = {
120
+ /** Omit only when starting a new manual job with startOrRetry. */
121
+ jobId?: string;
122
+ params?: Record<string, JobValue>;
123
+ operation: JobControlOperation;
124
+ run?: (context: {
125
+ job: JobRecord | undefined;
126
+ params: Record<string, JobValue>;
127
+ dbx: DBTableHandlersFromSchema<S>;
128
+ }) => MaybePromise<void>;
129
+ };
110
130
  /** Uses the execution request/user, or an explicit userId. Calls without either are trusted server operations.
111
131
  * Mutations create their own transaction unless explicitly bound with withTransaction.
112
132
  */
@@ -117,6 +137,15 @@ export type Jobs = {
117
137
  get: (id: string, options?: {
118
138
  userId: string;
119
139
  }) => Promise<Partial<JobRecord> | undefined>;
140
+ /** Server operation. Row jobs require a primary key and must satisfy trigger.when.
141
+ * Expose through a published function to authorize client calls, as with rerun.
142
+ */
143
+ start: (name: string, params?: Record<string, JobValue>, options?: {
144
+ row?: JobRecord["target_row_pkey"];
145
+ userId?: string;
146
+ }) => Promise<{
147
+ jobId: string;
148
+ }>;
120
149
  /** Server operation. Expose through a published function to authorize client calls. */
121
150
  cancel: (id: string) => Promise<void>;
122
151
  /** Server operation. The user context determines who the new run executes as. */
@@ -126,9 +155,14 @@ export type Jobs = {
126
155
  jobId: string;
127
156
  }>;
128
157
  /** Requires an execution user. Uses the bound transaction, or creates its own. */
129
- control: <S = void, Row extends AnyObject = AnyObject>(name: string, options: JobControlOptions<S, Row>) => Promise<{
130
- jobId: string;
131
- }>;
158
+ control: {
159
+ <S = void, Row extends AnyObject = AnyObject>(name: string, options: JobControlOptions<S, Row>): Promise<{
160
+ jobId: string;
161
+ }>;
162
+ <S = void>(name: string, options: ManualJobControlOptions<S>): Promise<{
163
+ jobId: string;
164
+ }>;
165
+ };
132
166
  };
133
167
  export type JobTransaction = {
134
168
  t: pgPromise.ITask<{}>;
@@ -139,13 +173,19 @@ type JobDefinitionOptions<S, T extends JobTableName<S> | undefined, P extends Pa
139
173
  params?: P;
140
174
  /** Defaults to system. User jobs enforce the triggering/rerunning user's publish rules. */
141
175
  runAs?: "system" | "user";
176
+ /**
177
+ * Failures and stalled executions have separate retry budgets and backoff counts.
178
+ * Graceful shutdowns consume neither.
179
+ */
142
180
  retry?: {
143
181
  maxAttempts: number;
182
+ /** Maximum stalled executions to recover from. Defaults to 3; 0 disables recovery. */
183
+ maxStalledCount?: number;
144
184
  backoff?: "exponential" | "fixed";
145
185
  delayMs?: number;
146
186
  };
147
187
  timeoutMs?: number;
148
- /** Conflicts use the job name and row primary key, or just the name for schedules. */
188
+ /** Conflicts use the job name and row primary key, or just the name for jobs without a row. */
149
189
  onConflict?: "queue" | "replace" | "skip";
150
190
  /** Maximum parallel runs across workers. Defaults to 1. Same-key runs are serialized. */
151
191
  concurrency?: number;
@@ -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":";;;AA0HA,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"}
1
+ {"version":3,"file":"JobTypes.js","sourceRoot":"","sources":["../../lib/Jobs/JobTypes.ts"],"names":[],"mappings":";;;AA6HA,oFAAoF;AAC7E,MAAM,gBAAgB,GAAG,GAAkC,EAAE,CAClE,CAAC,CAAC,UAAmB,EAAE,EAAE,CAAC,UAAU,CAA0B,CAAC;AADpD,QAAA,gBAAgB,oBACoC;AAiBpD,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"}
@@ -10,7 +10,9 @@ export declare const claimJob: (prostgles: Prostgles, name: string, concurrency:
10
10
  readonly reason: "trigger" | "rerun";
11
11
  readonly status: "running";
12
12
  readonly attempts: number;
13
+ readonly stalled_count: number;
13
14
  readonly max_attempts: number;
15
+ readonly max_stalled_count: number;
14
16
  readonly delay_ms: number;
15
17
  readonly backoff: "fixed" | "exponential";
16
18
  readonly cancel_requested: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"claimJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/claimJob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,eAAO,MAAM,QAAQ,GAAU,WAAW,SAAS,EAAE,MAAM,MAAM,EAAE,aAAa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAqCrF,CAAC"}
1
+ {"version":3,"file":"claimJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/claimJob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,eAAO,MAAM,QAAQ,GAAU,WAAW,SAAS,EAAE,MAAM,MAAM,EAAE,aAAa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAyDrF,CAAC"}
@@ -10,11 +10,30 @@ const claimJob = async (prostgles, name, concurrency) => {
10
10
  await t.one("SELECT pg_advisory_xact_lock(hashtextextended(${advisoryLockKey}, 0))", {
11
11
  advisoryLockKey: JSON.stringify([tableSQL, name]),
12
12
  });
13
- await t.none(`UPDATE ${tableSQL} SET
14
- status = CASE WHEN cancel_requested THEN 'cancelled' WHEN attempts >= max_attempts THEN 'failed' ELSE 'pending' END,
15
- error = jsonb_build_object('message', 'Worker interrupted'), lease_token = NULL, locked_until = NULL,
16
- finished_at = CASE WHEN cancel_requested OR attempts >= max_attempts THEN clock_timestamp() END
17
- WHERE job_name = \${jobName} AND status = 'running' AND locked_until < clock_timestamp()`, { jobName: name });
13
+ await t.none(`UPDATE ${tableSQL}
14
+ SET
15
+ status = CASE
16
+ WHEN cancel_requested THEN 'cancelled'
17
+ WHEN stalled_count >= max_stalled_count THEN 'failed'
18
+ ELSE 'pending'
19
+ END,
20
+ stalled_count = stalled_count + 1,
21
+ error = jsonb_build_object('code', 'WORKER_INTERRUPTED', 'message', 'Worker interrupted'),
22
+ lease_token = NULL,
23
+ locked_until = NULL,
24
+ run_at = CASE
25
+ WHEN cancel_requested OR stalled_count >= max_stalled_count THEN run_at
26
+ ELSE clock_timestamp() + LEAST(2147483647, delay_ms::numeric *
27
+ CASE WHEN backoff = 'exponential' THEN power(2::numeric, LEAST(stalled_count, 1024)) ELSE 1 END
28
+ ) * interval '1 millisecond'
29
+ END,
30
+ finished_at = CASE
31
+ WHEN cancel_requested OR stalled_count >= max_stalled_count THEN clock_timestamp()
32
+ END
33
+ WHERE
34
+ job_name = \${jobName}
35
+ AND status = 'running'
36
+ AND locked_until < clock_timestamp()`, { jobName: name });
18
37
  const count = await jobs.count({ job_name: name, status: "running" });
19
38
  if (+count >= concurrency)
20
39
  return;
@@ -23,7 +42,8 @@ const claimJob = async (prostgles, name, concurrency) => {
23
42
  SELECT j.id FROM ${tableSQL} j
24
43
  WHERE j.job_name = \${jobName} AND j.status = 'pending' AND j.run_at <= clock_timestamp()
25
44
  AND NOT EXISTS (
26
- SELECT 1 FROM ${tableSQL} earlier WHERE earlier.job_name = j.job_name
45
+ SELECT 1 FROM ${tableSQL} earlier
46
+ WHERE earlier.job_name = j.job_name
27
47
  AND earlier.target_table IS NOT DISTINCT FROM j.target_table AND earlier.target_row_pkey = j.target_row_pkey
28
48
  AND (earlier.status = 'running' OR (earlier.status = 'pending'
29
49
  AND (earlier.created_at, earlier.id) < (j.created_at, j.id)))
@@ -1 +1 @@
1
- {"version":3,"file":"claimJob.js","sourceRoot":"","sources":["../../lib/Jobs/claimJob.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAGzC,6DAA0D;AAEnD,MAAM,QAAQ,GAAG,KAAK,EAAE,SAAoB,EAAE,IAAY,EAAE,WAAmB,EAAE,EAAE;IACxF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzC,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,IAAA,uCAAkB,EAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,CAAC,GAAG,CAAC,uEAAuE,EAAE;YACnF,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAClD,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,IAAI,CACV,UAAU,QAAQ;;;;+FAIuE,EACzF,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,IAAI,WAAW;YAAE,OAAO;QAClC,OAAO,CAAC,CAAC,SAAS,CAChB;;2BAEqB,QAAQ;;;4BAGP,QAAQ;;;;;;;eAOrB,QAAQ;;;KAGlB,EACC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAA,wBAAU,GAAE,EAAE,CAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AArCW,QAAA,QAAQ,YAqCnB"}
1
+ {"version":3,"file":"claimJob.js","sourceRoot":"","sources":["../../lib/Jobs/claimJob.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAGzC,6DAA0D;AAEnD,MAAM,QAAQ,GAAG,KAAK,EAAE,SAAoB,EAAE,IAAY,EAAE,WAAmB,EAAE,EAAE;IACxF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzC,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,IAAA,uCAAkB,EAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,CAAC,GAAG,CAAC,uEAAuE,EAAE;YACnF,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAClD,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,IAAI,CACV,UAAU,QAAQ;;;;;;;;;;;;;;;;;;;;;;;6CAuBqB,EACvC,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,IAAI,WAAW;YAAE,OAAO;QAClC,OAAO,CAAC,CAAC,SAAS,CAChB;;2BAEqB,QAAQ;;;4BAGP,QAAQ;;;;;;;;eAQrB,QAAQ;;;KAGlB,EACC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAA,wBAAU,GAAE,EAAE,CAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAzDW,QAAA,QAAQ,YAyDnB"}
@@ -1,8 +1,8 @@
1
1
  import { type AnyObject } from "prostgles-types";
2
2
  import type { Prostgles } from "../Prostgles";
3
3
  import type { AuthClientRequest } from "../Auth/AuthTypes";
4
- import type { JobControlOptions, JobTransaction } from "./JobTypes";
5
- export declare const controlJob: <S, Row extends AnyObject>(prostgles: Prostgles, transaction: JobTransaction, clientReq: AuthClientRequest, name: string, options: JobControlOptions<S, Row>) => Promise<{
4
+ import type { JobControlOptions, JobTransaction, ManualJobControlOptions } from "./JobTypes";
5
+ export declare const controlJob: <S, Row extends AnyObject>(prostgles: Prostgles, transaction: JobTransaction, clientReq: AuthClientRequest, name: string, options: JobControlOptions<S, Row> | ManualJobControlOptions<S>) => Promise<{
6
6
  jobId: string;
7
7
  }>;
8
8
  //# sourceMappingURL=controlJob.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"controlJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/controlJob.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAK3D,OAAO,KAAK,EAAE,iBAAiB,EAAa,cAAc,EAAE,MAAM,YAAY,CAAC;AAI/E,eAAO,MAAM,UAAU,GAAU,CAAC,EAAE,GAAG,SAAS,SAAS,EACvD,WAAW,SAAS,EACpB,aAAa,cAAc,EAC3B,WAAW,iBAAiB,EAC5B,MAAM,MAAM,EACZ,SAAS,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC;;EAsGnC,CAAC"}
1
+ {"version":3,"file":"controlJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/controlJob.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAK3D,OAAO,KAAK,EACV,iBAAiB,EAEjB,cAAc,EACd,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAQpB,eAAO,MAAM,UAAU,GAAU,CAAC,EAAE,GAAG,SAAS,SAAS,EACvD,WAAW,SAAS,EACpB,aAAa,cAAc,EAC3B,WAAW,iBAAiB,EAC5B,MAAM,MAAM,EACZ,SAAS,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC;;EAyGhE,CAAC"}
@@ -7,14 +7,21 @@ const runClientRequest_1 = require("../runClientRequest");
7
7
  const enqueueJob_1 = require("./enqueueJob");
8
8
  const getJobDefinition_1 = require("./getJobDefinition");
9
9
  const getJobTableHandler_1 = require("./getJobTableHandler");
10
- const JobTypes_1 = require("./JobTypes");
11
10
  const jobUtils_1 = require("./jobUtils");
11
+ const controlManualJob_1 = require("./controlManualJob");
12
12
  const controlJob = async (prostgles, transaction, clientReq, name, options) => {
13
13
  const { definition } = (0, getJobDefinition_1.getJobDefinition)(prostgles, name);
14
14
  const { trigger } = definition;
15
+ if (trigger.type === "manual") {
16
+ if ("row" in options)
17
+ throw new Error(`Manual job ${name} does not accept a row`);
18
+ return (0, controlManualJob_1.controlManualJob)(prostgles, transaction, name, options);
19
+ }
15
20
  if (trigger.type !== "row" || !trigger.jobIdColumn) {
16
21
  throw new Error(`Job control requires a row job with jobIdColumn: ${name}`);
17
22
  }
23
+ if (!("row" in options))
24
+ throw new Error(`Job control requires a row: ${name}`);
18
25
  const findReadableRows = (filter) => runClientRequest_1.runClientRequest.call(prostgles, {
19
26
  tableName: trigger.table,
20
27
  command: "find",
@@ -66,9 +73,8 @@ const controlJob = async (prostgles, transaction, clientReq, name, options) => {
66
73
  (0, prostgles_types_1.stableStringify)(job.target_row_pkey) !== (0, prostgles_types_1.stableStringify)(targetRowPkey))) {
67
74
  throw new Error("Linked job does not match the target row");
68
75
  }
69
- if (job && !JobTypes_1.jobControlStatuses[options.operation].includes(job.status)) {
70
- throw new Error(`Job control is not allowed while the job is ${job.status}`);
71
- }
76
+ if (job)
77
+ (0, jobUtils_1.assertJobControlStatus)(job, options.operation);
72
78
  if (!job && options.operation !== "startOrRetry") {
73
79
  throw new Error("Job has not started");
74
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"controlJob.js","sourceRoot":"","sources":["../../lib/Jobs/controlJob.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controlJob.js","sourceRoot":"","sources":["../../lib/Jobs/controlJob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Prostgles } from "../Prostgles";
2
+ import type { JobTransaction, ManualJobControlOptions } from "./JobTypes";
3
+ export declare const controlManualJob: <S>(prostgles: Prostgles, transaction: JobTransaction, name: string, options: ManualJobControlOptions<S>) => Promise<{
4
+ jobId: string;
5
+ }>;
6
+ //# sourceMappingURL=controlManualJob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controlManualJob.d.ts","sourceRoot":"","sources":["../../lib/Jobs/controlManualJob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,OAAO,KAAK,EAAa,cAAc,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGrF,eAAO,MAAM,gBAAgB,GAAU,CAAC,EACtC,WAAW,SAAS,EACpB,aAAa,cAAc,EAC3B,MAAM,MAAM,EACZ,SAAS,uBAAuB,CAAC,CAAC,CAAC;;EAmDpC,CAAC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.controlManualJob = void 0;
4
+ const enqueueJob_1 = require("./enqueueJob");
5
+ const getJobDefinition_1 = require("./getJobDefinition");
6
+ const getJobParams_1 = require("./getJobParams");
7
+ const jobUtils_1 = require("./jobUtils");
8
+ const controlManualJob = async (prostgles, transaction, name, options) => {
9
+ const { jobId, operation } = options;
10
+ const transactionJobs = prostgles.jobs.api.withTransaction(transaction.dbx);
11
+ let job;
12
+ if (jobId !== undefined) {
13
+ if (!(await transactionJobs.get(jobId)))
14
+ throw new Error("Job is unavailable or not readable");
15
+ job =
16
+ (await transaction.t.oneOrNone(`SELECT * FROM ${prostgles.jobs.tableSQL} WHERE id = \${jobId} FOR UPDATE`, { jobId })) ?? undefined;
17
+ if (!job || !(await transactionJobs.get(jobId)))
18
+ throw new Error("Job is unavailable or not readable");
19
+ if (job.job_name !== name || job.target_table !== null) {
20
+ throw new Error("Job does not match the manual job definition");
21
+ }
22
+ (0, jobUtils_1.assertJobControlStatus)(job, operation);
23
+ }
24
+ else if (operation !== "startOrRetry") {
25
+ throw new Error("Job ID is required");
26
+ }
27
+ const { definition } = (0, getJobDefinition_1.getJobDefinition)(prostgles, name);
28
+ const params = operation === "cancel" ?
29
+ (job?.params ?? {})
30
+ : await (0, getJobParams_1.getJobParams)(prostgles, definition.params, {
31
+ ...job?.params,
32
+ ...options.params,
33
+ });
34
+ await options.run?.({
35
+ job,
36
+ params,
37
+ dbx: transaction.dbx,
38
+ });
39
+ if (operation === "cancel") {
40
+ if (!job)
41
+ throw new Error("Job ID is required");
42
+ await transactionJobs.cancel(job.id);
43
+ return { jobId: job.id };
44
+ }
45
+ const { jobId: startedJobId } = await (0, enqueueJob_1.enqueueJob)(prostgles, transaction, name, {}, {
46
+ userId: prostgles.getExecution()?.user?.id,
47
+ reason: job ? "rerun" : "trigger",
48
+ params,
49
+ });
50
+ return { jobId: startedJobId };
51
+ };
52
+ exports.controlManualJob = controlManualJob;
53
+ //# sourceMappingURL=controlManualJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controlManualJob.js","sourceRoot":"","sources":["../../lib/Jobs/controlManualJob.ts"],"names":[],"mappings":";;;AAEA,6CAA0C;AAC1C,yDAAsD;AACtD,iDAA8C;AAE9C,yCAAoD;AAE7C,MAAM,gBAAgB,GAAG,KAAK,EACnC,SAAoB,EACpB,WAA2B,EAC3B,IAAY,EACZ,OAAmC,EACnC,EAAE;IACF,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5E,IAAI,GAA0B,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC/F,GAAG;YACD,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,SAAS,CAC5B,iBAAiB,SAAS,CAAC,IAAI,CAAC,QAAQ,kCAAkC,EAC1E,EAAE,KAAK,EAAE,CACV,CAAC,IAAI,SAAS,CAAC;QAClB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,IAAA,iCAAsB,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,mCAAgB,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,MAAM,GACV,SAAS,KAAK,QAAQ,CAAC,CAAC;QACtB,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC;QACrB,CAAC,CAAC,MAAM,IAAA,2BAAY,EAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE;YAC/C,GAAG,GAAG,EAAE,MAAM;YACd,GAAG,OAAO,CAAC,MAAM;SAClB,CAAC,CAAC;IACP,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;QAClB,GAAG;QACH,MAAM;QACN,GAAG,EAAE,WAAW,CAAC,GAA8C;KAChE,CAAC,CAAC;IACH,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAChD,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,IAAA,uBAAU,EAC9C,SAAS,EACT,WAAW,EACX,IAAI,EACJ,EAAE,EACF;QACE,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE;QAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACjC,MAAM;KACP,CACF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AACjC,CAAC,CAAC;AAvDW,QAAA,gBAAgB,oBAuD3B"}
@@ -2,25 +2,63 @@ import type { AnyObject, MaybePromise } from "prostgles-types";
2
2
  import type { SessionUser } from "../Auth/AuthTypes";
3
3
  import type { DBTableHandlersFromSchema } from "../DBSchemaBuilder/DBSchemaBuilder";
4
4
  import type { ServerFunctionContextMarker, UnrestrictedFunctionContext } from "../PublishParser/defineServerFunction";
5
- import type { JobControlOperation, JobsConfig } from "./JobTypes";
6
- /** Bind controls to configured jobs. Published-function access and row read access are required. */
7
- export declare const createJobControlFunctionDefiner: <S = void, Context = undefined, SUser extends SessionUser = SessionUser>() => <Definitions extends JobsConfig<S, Context>>(jobs: Definitions) => <Name extends RowJobName<Definitions>>(definition: {
5
+ import type { JobControlOperation, JobsConfig, ParamsSchema } from "./JobTypes";
6
+ import { type ManualJobControlFunctionContext } from "./createManualJobControlFunction";
7
+ /**
8
+ * Row controls accept { row }; manual controls accept { jobId, params }.
9
+ * Omit jobId only for a new manual startOrRetry. Existing rows/runs must be readable by the caller.
10
+ */
11
+ export declare const createJobControlFunctionDefiner: <S = void, Context = undefined, SUser extends SessionUser = SessionUser>() => <Definitions extends JobsConfig<S, Context>>(jobs: Definitions) => <Name extends ControllableJobName<Definitions>, Operation extends JobControlOperation>(definition: {
8
12
  jobName: Name;
9
- operation: JobControlOperation;
13
+ operation: Operation;
10
14
  description?: string;
11
- /** Validate and prepare the locked row before the operation. Throw to roll back everything. */
12
- run?: (context: JobControlFunctionContext<S, SUser, Context, JobRow<Definitions, Name>>) => MaybePromise<void>;
13
- }) => {
15
+ /** Validate and prepare in the control transaction. Throw to roll back everything. */
16
+ run?: (context: Definitions[Name] extends {
17
+ trigger: {
18
+ type: "manual";
19
+ };
20
+ } ? ManualJobControlFunctionContext<S, SUser, Context, JobParams<Definitions, Name>> : JobControlFunctionContext<S, SUser, Context, JobRow<Definitions, Name>>) => MaybePromise<void>;
21
+ }) => Definitions[Name] extends {
22
+ trigger: {
23
+ type: "manual";
24
+ };
25
+ } ? {
26
+ input: {
27
+ jobId: {
28
+ type: "string";
29
+ optional: Operation extends "startOrRetry" ? true : false;
30
+ };
31
+ } & (Operation extends "cancel" ? {} : {
32
+ params: {
33
+ optional: true;
34
+ type: JobParamsSchema<Definitions, Name> extends infer T extends ParamsSchema ? { [Key in keyof T]: Omit<T[Key] extends {
35
+ jsonbSchema: infer Field;
36
+ } ? Field : {
37
+ type: T[Key]["jsonbSchemaType"];
38
+ }, "optional"> & {
39
+ optional: true;
40
+ }; } : never;
41
+ };
42
+ });
43
+ description: string | undefined;
44
+ unrestrictedDbAccess: true;
45
+ run: (input: {
46
+ jobId?: string;
47
+ params?: Record<string, import("prostgles-types").JobValue>;
48
+ }, context: UnrestrictedFunctionContext<S, SUser, Context>) => Promise<{
49
+ jobId: string;
50
+ }>;
51
+ } & ServerFunctionContextMarker<S, SUser, Context> : {
14
52
  input: {
15
53
  row: {
16
54
  type: "RowLookup";
17
- table: ((S extends import("prostgles-types").DBSchema ? keyof S & string : string) & undefined) | ((S extends import("prostgles-types").DBSchema ? keyof S & string : string) & string);
55
+ table: string;
18
56
  };
19
57
  };
20
58
  description: string | undefined;
21
59
  unrestrictedDbAccess: true;
22
60
  jobControl: {
23
- jobName: Name;
61
+ jobName: string;
24
62
  rowArg: "row";
25
63
  operation: JobControlOperation;
26
64
  };
@@ -30,20 +68,26 @@ export declare const createJobControlFunctionDefiner: <S = void, Context = undef
30
68
  jobId: string;
31
69
  }>;
32
70
  } & ServerFunctionContextMarker<S, SUser, Context>;
33
- type RowJobName<Definitions> = {
34
- [Name in keyof Definitions]: Definitions[Name] extends {
71
+ type ControllableJobName<Definitions> = {
72
+ [Name in keyof Definitions]: Definitions[Name] extends ({
35
73
  trigger: {
36
- type: "row";
74
+ type: "row" | "manual";
37
75
  };
38
- } ? Name : never;
76
+ }) ? Name : never;
39
77
  }[keyof Definitions] & string;
40
78
  type JobRow<Definitions extends Record<string, {
41
79
  run: (...args: any[]) => unknown;
42
80
  }>, Name extends keyof Definitions> = NonNullable<Parameters<Definitions[Name]["run"]>[0]["row"]>;
81
+ type JobParams<Definitions extends Record<string, {
82
+ run: (...args: any[]) => unknown;
83
+ }>, Name extends keyof Definitions> = Parameters<Definitions[Name]["run"]>[0]["params"];
43
84
  type JobControlFunctionContext<S, SUser extends SessionUser, Context, Row> = Omit<UnrestrictedFunctionContext<S, SUser, Context>, "dbo" | "db" | "sql"> & {
44
85
  row: Row;
45
86
  /** Transactional handlers for validation and preparation writes. */
46
87
  dbx: DBTableHandlersFromSchema<S>;
47
88
  };
89
+ type JobParamsSchema<Definitions extends Record<string, {
90
+ params?: ParamsSchema;
91
+ }>, Name extends keyof Definitions> = NonNullable<Definitions[Name]["params"]>;
48
92
  export {};
49
93
  //# sourceMappingURL=createJobControlFunctionDefiner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createJobControlFunctionDefiner.d.ts","sourceRoot":"","sources":["../../lib/Jobs/createJobControlFunctionDefiner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,KAAK,EACV,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElE,oGAAoG;AACpG,eAAO,MAAM,+BAA+B,GACzC,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,KAAK,SAAS,WAAW,GAAG,WAAW,QACtE,WAAW,SAAS,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,WAAW,MAC7D,IAAI,SAAS,UAAU,CAAC,WAAW,CAAC,EAAE,YAAY;IACjD,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,mBAAmB,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+FAA+F;IAC/F,GAAG,CAAC,EAAE,CACJ,OAAO,EAAE,yBAAyB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,KAC7E,YAAY,CAAC,IAAI,CAAC,CAAC;CACzB,KAmB8B;;;;;;;;;;;;;;iBATd;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,WAAW,2BAA2B,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC;;;IAUxF,2BAA2B,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAChD,CAAC;AAEJ,KAAK,UAAU,CAAC,WAAW,IAAI;KAC5B,IAAI,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE;YAAE,IAAI,EAAE,KAAK,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI,GACxF,KAAK;CACR,CAAC,MAAM,WAAW,CAAC,GAClB,MAAM,CAAC;AAET,KAAK,MAAM,CACT,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAA;CAAE,CAAC,EACxE,IAAI,SAAS,MAAM,WAAW,IAC5B,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAEhE,KAAK,yBAAyB,CAAC,CAAC,EAAE,KAAK,SAAS,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,CAC/E,2BAA2B,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAC9C,KAAK,GAAG,IAAI,GAAG,KAAK,CACrB,GAAG;IACF,GAAG,EAAE,GAAG,CAAC;IACT,oEAAoE;IACpE,GAAG,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC;CACnC,CAAC"}
1
+ {"version":3,"file":"createJobControlFunctionDefiner.d.ts","sourceRoot":"","sources":["../../lib/Jobs/createJobControlFunctionDefiner.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,40 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createJobControlFunctionDefiner = void 0;
4
- /** Bind controls to configured jobs. Published-function access and row read access are required. */
4
+ const createManualJobControlFunction_1 = require("./createManualJobControlFunction");
5
+ /**
6
+ * Row controls accept { row }; manual controls accept { jobId, params }.
7
+ * Omit jobId only for a new manual startOrRetry. Existing rows/runs must be readable by the caller.
8
+ */
5
9
  const createJobControlFunctionDefiner = () => (jobs) => (definition) => {
6
10
  const { jobName, operation, description, run } = definition;
7
- const trigger = jobs[jobName]?.trigger;
8
- if (trigger?.type !== "row" || !trigger.jobIdColumn)
9
- throw new Error(`Job control requires a row job with jobIdColumn: ${jobName}`);
11
+ const job = jobs[jobName];
12
+ if (!job)
13
+ throw new Error(`Unknown job: ${jobName}`);
14
+ const { trigger } = job;
15
+ if (trigger.type === "manual") {
16
+ return (0, createManualJobControlFunction_1.createManualJobControlFunction)({
17
+ jobName,
18
+ operation,
19
+ description,
20
+ params: job.params,
21
+ run: run,
22
+ });
23
+ }
24
+ if (trigger.type !== "row" || !trigger.jobIdColumn)
25
+ throw new Error(`Job control requires a manual job or a row job with jobIdColumn: ${jobName}`);
26
+ return createRowJobControlFunction({
27
+ jobName,
28
+ operation,
29
+ description,
30
+ table: trigger.table,
31
+ run: run,
32
+ });
33
+ };
34
+ exports.createJobControlFunctionDefiner = createJobControlFunctionDefiner;
35
+ const createRowJobControlFunction = ({ jobName, operation, description, table, run, }) => {
10
36
  const functionDefinition = {
11
- input: { row: { type: "RowLookup", table: trigger.table } },
37
+ input: { row: { type: "RowLookup", table } },
12
38
  description,
13
39
  unrestrictedDbAccess: true,
14
40
  jobControl: { jobName, rowArg: "row", operation },
@@ -16,10 +42,14 @@ const createJobControlFunctionDefiner = () => (jobs) => (definition) => {
16
42
  row: input.row,
17
43
  operation,
18
44
  run: run &&
19
- ((row, dbx) => run({ ...context, row, dbx, jobs: context.jobs.withTransaction(dbx) })),
45
+ ((row, dbx) => run({
46
+ ...context,
47
+ row,
48
+ dbx,
49
+ jobs: context.jobs.withTransaction(dbx),
50
+ })),
20
51
  }),
21
52
  };
22
53
  return functionDefinition;
23
54
  };
24
- exports.createJobControlFunctionDefiner = createJobControlFunctionDefiner;
25
55
  //# sourceMappingURL=createJobControlFunctionDefiner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createJobControlFunctionDefiner.js","sourceRoot":"","sources":["../../lib/Jobs/createJobControlFunctionDefiner.ts"],"names":[],"mappings":";;;AASA,oGAAoG;AAC7F,MAAM,+BAA+B,GAC1C,GAA2E,EAAE,CAC7E,CAA6C,IAAiB,EAAE,EAAE,CAClE,CAAuC,UAQtC,EAAE,EAAE;IACH,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IACvC,IAAI,OAAO,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW;QACjD,MAAM,IAAI,KAAK,CAAC,oDAAoD,OAAO,EAAE,CAAC,CAAC;IACjF,MAAM,kBAAkB,GAAG;QACzB,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,WAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;QACpE,WAAW;QACX,oBAAoB,EAAE,IAAa;QACnC,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAc,EAAE,SAAS,EAAE;QAC1D,GAAG,EAAE,CAAC,KAAyB,EAAE,OAAuD,EAAE,EAAE,CAC1F,OAAO,CAAC,IAAI,CAAC,OAAO,CAA+B,OAAO,EAAE;YAC1D,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS;YACT,GAAG,EACD,GAAG;gBACH,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACzF,CAAC;KACL,CAAC;IACF,OAAO,kBACyC,CAAC;AACnD,CAAC,CAAC;AAhCS,QAAA,+BAA+B,mCAgCxC"}
1
+ {"version":3,"file":"createJobControlFunctionDefiner.js","sourceRoot":"","sources":["../../lib/Jobs/createJobControlFunctionDefiner.ts"],"names":[],"mappings":";;;AAQA,qFAG0C;AAE1C;;;GAGG;AACI,MAAM,+BAA+B,GAC1C,GAA2E,EAAE,CAC7E,CAA6C,IAAiB,EAAE,EAAE,CAClE,CAGE,UAUD,EAAE,EAAE;IACH,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;IACrD,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAiBxB,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAA,+DAA8B,EAMnC;YACA,OAAO;YACP,SAAS;YACT,WAAW;YACX,MAAM,EAAE,GAAG,CAAC,MAAwD;YACpE,GAAG,EAAE,GAA2C;SACjD,CAAuB,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW;QAChD,MAAM,IAAI,KAAK,CACb,oEAAoE,OAAO,EAAE,CAC9E,CAAC;IACJ,OAAO,2BAA2B,CAA+C;QAC/E,OAAO;QACP,SAAS;QACT,WAAW;QACX,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,EAAE,GAAwC;KAC9C,CAAuB,CAAC;AAC3B,CAAC,CAAC;AA/DS,QAAA,+BAA+B,mCA+DxC;AAEJ,MAAM,2BAA2B,GAAG,CAA+D,EACjG,OAAO,EACP,SAAS,EACT,WAAW,EACX,KAAK,EACL,GAAG,GASJ,EAAE,EAAE;IACH,MAAM,kBAAkB,GAAG;QACzB,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,WAAoB,EAAE,KAAK,EAAE,EAAE;QACrD,WAAW;QACX,oBAAoB,EAAE,IAAa;QACnC,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAc,EAAE,SAAS,EAAE;QAC1D,GAAG,EAAE,CAAC,KAAyB,EAAE,OAAuD,EAAE,EAAE,CAC1F,OAAO,CAAC,IAAI,CAAC,OAAO,CAAS,OAAO,EAAE;YACpC,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS;YACT,GAAG,EACD,GAAG;gBACH,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CACZ,GAAG,CAAC;oBACF,GAAG,OAAO;oBACV,GAAG;oBACH,GAAG;oBACH,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;iBACxC,CAAC,CAAC;SACR,CAAC;KACL,CAAC;IACF,OAAO,kBACyC,CAAC;AACnD,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createJobsAPI.d.ts","sourceRoot":"","sources":["../../lib/Jobs/createJobsAPI.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAK9C,OAAO,KAAK,EAAa,IAAI,EAAkB,MAAM,YAAY,CAAC;AAElE,eAAO,MAAM,aAAa,GAAI,WAAW,SAAS,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,IA4F7E,CAAC"}
1
+ {"version":3,"file":"createJobsAPI.d.ts","sourceRoot":"","sources":["../../lib/Jobs/createJobsAPI.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAK9C,OAAO,KAAK,EAGV,IAAI,EAGL,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,aAAa,GAAI,WAAW,SAAS,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,IAyG7E,CAAC"}