@q32/core 0.1.20 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,7 +15,7 @@ The first release focuses on common infrastructure repeated across Q32 apps:
15
15
  - HTTP JSON/error helpers
16
16
  - D1-like database types and migration runner
17
17
  - encoding helpers
18
- - D1-backed jobs
18
+ - durable D1-backed jobs, child orchestration, queue publishers, and pipeline managers
19
19
  - `ops_events`
20
20
  - Postgres migration helpers
21
21
  - R2 JSON artifacts
@@ -59,4 +59,4 @@ import {
59
59
  } from "@q32/core";
60
60
  ```
61
61
 
62
- See [docs/evaluation.md](docs/evaluation.md) for the project-inventory replacement matrix.
62
+ See [docs/evaluation.md](docs/evaluation.md) for the project-inventory replacement matrix and [docs/jobs.md](docs/jobs.md) for the shared jobs model.
package/dist/jobs.d.ts CHANGED
@@ -1,12 +1,18 @@
1
1
  import type { D1DatabaseLike } from "./d1.js";
2
- export type JobStatus = "queued" | "running" | "succeeded" | "failed";
3
- export type JobHandlerResult<TResult = unknown> = {
2
+ export type JobStatus = "queued" | "running" | "succeeded" | "failed" | "stopping" | "stopped";
3
+ export type TerminalJobStatus = "succeeded" | "failed" | "stopped";
4
+ export type JobEnqueuePolicy = "enqueue" | "dedupe_active";
5
+ export type JobHandlerResult<TResult = unknown, TPayload = unknown> = {
4
6
  kind: "done";
5
7
  result?: TResult | null;
6
8
  } | {
7
9
  kind: "requeue";
10
+ payload?: TPayload;
8
11
  result?: TResult | null;
9
12
  availableAt?: string | null;
13
+ } | {
14
+ kind: "stopped";
15
+ result?: TResult | null;
10
16
  };
11
17
  export type JobRecord<TPayload = unknown, TResult = unknown> = {
12
18
  jobId: string;
@@ -14,7 +20,14 @@ export type JobRecord<TPayload = unknown, TResult = unknown> = {
14
20
  status: JobStatus;
15
21
  payload: TPayload;
16
22
  result: TResult | null;
23
+ orgId: string | null;
24
+ siteId: string | null;
25
+ parentJobId: string | null;
17
26
  lockKey: string | null;
27
+ concurrencyKey: string | null;
28
+ concurrencyLimit: number | null;
29
+ enqueuePolicy: JobEnqueuePolicy;
30
+ metadata: Record<string, unknown>;
18
31
  attemptCount: number;
19
32
  maxAttempts: number;
20
33
  availableAt: string | null;
@@ -27,26 +40,401 @@ export type JobRecord<TPayload = unknown, TResult = unknown> = {
27
40
  export type EnqueueJobInput<TPayload = unknown> = {
28
41
  jobType: string;
29
42
  payload?: TPayload;
43
+ orgId?: string | null;
44
+ siteId?: string | null;
45
+ parentJobId?: string | null;
30
46
  lockKey?: string | null;
47
+ concurrencyKey?: string | null;
48
+ concurrencyLimit?: number | null;
49
+ enqueuePolicy?: JobEnqueuePolicy;
50
+ metadata?: Record<string, unknown> | null;
31
51
  maxAttempts?: number;
32
52
  availableAt?: string | null;
33
53
  };
34
- export declare class D1JobStore {
54
+ export type DurableJobEventInput = {
55
+ eventName: string;
56
+ status?: "started" | "ok" | "warning" | "error" | "skipped" | string;
57
+ severity?: "debug" | "info" | "warn" | "error";
58
+ message?: string | null;
59
+ error?: unknown;
60
+ metrics?: Record<string, unknown> | null;
61
+ metadata?: Record<string, unknown> | null;
62
+ };
63
+ export type DurableJobEventSink<TPayload = unknown, TResult = unknown> = (job: JobRecord<TPayload, TResult>, event: DurableJobEventInput) => Promise<void> | void;
64
+ export interface DurableJobRepository {
65
+ enqueue<TPayload = unknown>(input: EnqueueJobInput<TPayload>): Promise<JobRecord<TPayload>>;
66
+ get<TPayload = unknown, TResult = unknown>(jobId: string): Promise<JobRecord<TPayload, TResult> | null>;
67
+ claim<TPayload = unknown>(jobId: string): Promise<JobRecord<TPayload> | null>;
68
+ succeed<TResult = unknown>(jobId: string, result?: TResult | null): Promise<void>;
69
+ requeue<TPayload = unknown, TResult = unknown>(jobId: string, input?: {
70
+ payload?: TPayload;
71
+ result?: TResult | null;
72
+ availableAt?: string | null;
73
+ lastError?: string | null;
74
+ }): Promise<void>;
75
+ fail(jobId: string, error: unknown): Promise<void>;
76
+ stop<TResult = unknown>(jobId: string, result?: TResult | null): Promise<void>;
77
+ requestStop(jobId: string): Promise<void>;
78
+ listChildren(parentJobId: string): Promise<JobRecord[]>;
79
+ summarizeChildren(parentJobId: string): Promise<JobChildrenSummary>;
80
+ markQueuedChildrenTerminal(parentJobId: string, status: "failed" | "stopped", error?: unknown): Promise<number>;
81
+ requestStopActiveChildren(parentJobId: string): Promise<number>;
82
+ }
83
+ export type JobStatusEventInput<TPayload = unknown, TResult = unknown> = {
84
+ job: JobRecord<TPayload, TResult>;
85
+ status: JobStatus;
86
+ message: string;
87
+ error?: unknown;
88
+ metadata?: Record<string, unknown> | null;
89
+ };
90
+ export type JobStatusEventSink = (event: JobStatusEventInput) => Promise<void> | void;
91
+ export type JobChildrenSummary = {
92
+ parentJobId: string;
93
+ total: number;
94
+ queued: number;
95
+ running: number;
96
+ stopping: number;
97
+ succeeded: number;
98
+ failed: number;
99
+ stopped: number;
100
+ active: number;
101
+ terminal: number;
102
+ allTerminal: boolean;
103
+ };
104
+ export type JobTreeRollupStatus = "queued" | "running" | "succeeded" | "failed" | "stopped";
105
+ export type JobEntityState = {
106
+ jobId: string;
107
+ jobType: string;
108
+ status: JobStatus;
109
+ entityKey: string;
110
+ entityType: string | null;
111
+ entityId: string | null;
112
+ label: string | null;
113
+ lastError: string | null;
114
+ result: unknown;
115
+ depth: number;
116
+ };
117
+ export type JobActivityEvent = {
118
+ opsEventId: string;
119
+ jobId: string | null;
120
+ level: "info" | "warn" | "error";
121
+ eventType: string;
122
+ message: string;
123
+ metadata: Record<string, unknown> | null;
124
+ createdAt: string;
125
+ };
126
+ export type JobTreeRecord<TPayload = unknown, TResult = unknown> = {
127
+ root: JobRecord<TPayload, TResult>;
128
+ children: Array<JobRecord & {
129
+ depth: number;
130
+ }>;
131
+ summary: JobChildrenSummary;
132
+ rollupStatus: JobTreeRollupStatus;
133
+ rowStates: JobEntityState[];
134
+ activityEvents: JobActivityEvent[];
135
+ latestError: string | null;
136
+ };
137
+ export type DurableJobHandlerContext<TPayload = unknown, TResult = unknown, TServices = unknown> = {
138
+ job: JobRecord<TPayload, TResult>;
139
+ jobs: DurableJobRepository;
140
+ services: TServices;
141
+ events: {
142
+ info(input: Omit<DurableJobEventInput, "severity">): Promise<void>;
143
+ warn(input: Omit<DurableJobEventInput, "severity">): Promise<void>;
144
+ error(input: Omit<DurableJobEventInput, "severity">): Promise<void>;
145
+ };
146
+ shouldStop(): Promise<boolean>;
147
+ };
148
+ export declare class JobDeadline {
149
+ private readonly budgetMs;
150
+ private readonly startedAt;
151
+ constructor(budgetMs?: number);
152
+ shouldYield(): boolean;
153
+ }
154
+ export type JobOperationEntity = {
155
+ entityType: string;
156
+ entityId: string;
157
+ entityLabel?: string | null;
158
+ entityKey?: string | null;
159
+ };
160
+ export type EnqueueJobOperationInput<TPayload extends Record<string, unknown> = Record<string, unknown>> = {
161
+ jobType: string;
162
+ operationKey: string;
163
+ orgId?: string | null;
164
+ siteId?: string | null;
165
+ parentJobId?: string | null;
166
+ entity?: JobOperationEntity | null;
167
+ payload?: TPayload | null;
168
+ dedupeActive?: boolean;
169
+ concurrencyScope?: string | null;
170
+ concurrencyLimit?: number | null;
171
+ maxAttempts?: number | null;
172
+ availableAt?: string | null;
173
+ };
174
+ export type JobOperationKeys = {
175
+ lockKey: string | null;
176
+ concurrencyKey: string;
177
+ concurrencyLimit: number;
178
+ };
179
+ export type DurableJobHandler<TPayload = unknown, TResult = unknown, TServices = unknown> = (context: DurableJobHandlerContext<TPayload, TResult, TServices>) => Promise<JobHandlerResult<TResult, TPayload> | TResult | void>;
180
+ export type DurableJobRegistry<TServices = unknown> = Record<string, DurableJobHandler<unknown, unknown, TServices>>;
181
+ export type DurableJobDispatcherOptions<TServices = unknown> = {
182
+ jobs: DurableJobRepository;
183
+ handlers: DurableJobRegistry<TServices>;
184
+ services: TServices;
185
+ events?: DurableJobEventSink;
186
+ retryDelay?: (input: {
187
+ job: JobRecord;
188
+ error: unknown;
189
+ }) => string | null | undefined;
190
+ };
191
+ export declare class DurableJobDispatcher<TServices = unknown> {
192
+ private readonly options;
193
+ constructor(options: DurableJobDispatcherOptions<TServices>);
194
+ run<TResult = unknown>(jobId: string): Promise<JobHandlerResult<TResult>>;
195
+ private shouldStop;
196
+ }
197
+ export type ParentJobOrchestrationInput<TPayload = unknown> = {
198
+ children: EnqueueJobInput<TPayload>[];
199
+ failureMode?: "fail_fast" | "continue";
200
+ queuedSiblingPolicy?: "fail" | "stop";
201
+ pollSeconds?: number;
202
+ now?: () => Date;
203
+ onChildQueued?: (job: JobRecord<TPayload>) => Promise<void> | void;
204
+ };
205
+ export type ParentJobOrchestrationResult = {
206
+ stage: "waiting_children" | "complete";
207
+ failureMode: "fail_fast" | "continue";
208
+ queuedSiblingPolicy: "fail" | "stop";
209
+ childJobIds: string[];
210
+ summary: JobChildrenSummary;
211
+ };
212
+ export declare function runParentJobOrchestration<TPayload = unknown, TResult = unknown, TServices = unknown>(context: DurableJobHandlerContext<TPayload, TResult, TServices>, input: ParentJobOrchestrationInput<TPayload>): Promise<JobHandlerResult>;
213
+ export declare class D1JobStore implements DurableJobRepository {
35
214
  private readonly db;
36
215
  private readonly options;
37
216
  constructor(db: D1DatabaseLike, options?: {
38
217
  tableName?: string;
39
218
  idPrefix?: string;
219
+ staleRunningAfterSeconds?: number;
220
+ opsEventsTableName?: string;
221
+ defaultMaxAttempts?: number;
222
+ onStatusEvent?: JobStatusEventSink;
223
+ queuedStopStatus?: "stopping" | "stopped";
224
+ requestStopQueuedChildren?: boolean;
40
225
  });
41
226
  get tableName(): string;
42
227
  enqueue<TPayload = unknown>(input: EnqueueJobInput<TPayload>): Promise<JobRecord<TPayload>>;
43
228
  get<TPayload = unknown, TResult = unknown>(jobId: string): Promise<JobRecord<TPayload, TResult> | null>;
229
+ getJob<TPayload = unknown, TResult = unknown>(jobId: string): Promise<JobRecord<TPayload, TResult> | null>;
230
+ enqueueChild<TPayload = unknown>(parentJobId: string, input: Omit<EnqueueJobInput<TPayload>, "parentJobId">): Promise<JobRecord<TPayload>>;
231
+ enqueueChildren<TPayload = unknown>(parentJobId: string, inputs: Array<Omit<EnqueueJobInput<TPayload>, "parentJobId">>): Promise<Array<JobRecord<TPayload>>>;
44
232
  listQueued(limit?: number): Promise<JobRecord[]>;
233
+ getLatestForSite(input: {
234
+ siteId: string;
235
+ jobType?: string | null;
236
+ }): Promise<JobRecord | null>;
237
+ getActiveForSite(input: {
238
+ siteId: string;
239
+ jobType?: string | null;
240
+ }): Promise<JobRecord | null>;
241
+ getLatestForSiteByPayload(input: {
242
+ siteId: string;
243
+ jobType?: string | null;
244
+ key: string;
245
+ value: string | number | boolean | null;
246
+ }): Promise<JobRecord | null>;
247
+ getActiveForSiteByPayload(input: {
248
+ siteId: string;
249
+ jobType?: string | null;
250
+ key: string;
251
+ value: string | number | boolean | null;
252
+ }): Promise<JobRecord | null>;
45
253
  claim<TPayload = unknown>(jobId: string): Promise<JobRecord<TPayload> | null>;
254
+ run<TPayload = unknown, TResult = unknown>(jobId: string, handler: (job: JobRecord<TPayload, TResult>) => Promise<JobHandlerResult<TResult, TPayload> | TResult | void>): Promise<JobHandlerResult<TResult>>;
46
255
  succeed<TResult = unknown>(jobId: string, result?: TResult | null): Promise<void>;
47
- requeue<TResult = unknown>(jobId: string, result?: TResult | null, availableAt?: string | null): Promise<void>;
256
+ stop<TResult = unknown>(jobId: string, result?: TResult | null): Promise<void>;
257
+ requeue<TResult = unknown>(jobId: string, result: TResult | null, availableAt?: string | null): Promise<void>;
258
+ requeue<TPayload = unknown, TResult = unknown>(jobId: string, input?: {
259
+ payload?: TPayload;
260
+ result?: TResult | null;
261
+ availableAt?: string | null;
262
+ lastError?: string | null;
263
+ }): Promise<void>;
48
264
  fail(jobId: string, error: unknown): Promise<void>;
49
- run<TPayload = unknown, TResult = unknown>(jobId: string, handler: (job: JobRecord<TPayload, TResult>) => Promise<JobHandlerResult<TResult> | TResult | void>): Promise<JobHandlerResult<TResult>>;
265
+ requestStop(jobId: string): Promise<void>;
266
+ listChildren(parentJobId: string): Promise<JobRecord[]>;
267
+ getJobTree<TPayload = unknown, TResult = unknown>(jobId: string): Promise<JobTreeRecord<TPayload, TResult> | null>;
268
+ summarizeChildren(parentJobId: string): Promise<JobChildrenSummary>;
269
+ markQueuedChildrenTerminal(parentJobId: string, status: "failed" | "stopped", error?: unknown): Promise<number>;
270
+ requestStopActiveChildren(parentJobId: string): Promise<number>;
271
+ failQueuedChildren(input: {
272
+ parentJobId: string;
273
+ reason?: string | null;
274
+ }): Promise<number>;
275
+ stopQueuedChildren(input: {
276
+ parentJobId: string;
277
+ reason?: string | null;
278
+ }): Promise<number>;
279
+ private getActiveForLockKey;
280
+ private countRunningForConcurrencyKey;
281
+ private getForSiteByPayload;
282
+ private listJobActivityEvents;
283
+ private complete;
284
+ private markStaleRunningQueued;
285
+ private emitStatusEvent;
286
+ private selectSql;
50
287
  }
51
- export declare const D1_JOBS_SCHEMA = "\nCREATE TABLE IF NOT EXISTS jobs (\n job_id TEXT PRIMARY KEY,\n job_type TEXT NOT NULL,\n status TEXT NOT NULL,\n payload_json TEXT NOT NULL DEFAULT '{}',\n result_json TEXT,\n lock_key TEXT,\n attempt_count INTEGER NOT NULL DEFAULT 0,\n max_attempts INTEGER NOT NULL DEFAULT 3,\n available_at TEXT,\n started_at TEXT,\n completed_at TEXT,\n last_error TEXT,\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL\n);\nCREATE INDEX IF NOT EXISTS jobs_status_available_idx ON jobs(status, available_at, created_at);\nCREATE INDEX IF NOT EXISTS jobs_type_status_idx ON jobs(job_type, status, created_at);\nCREATE UNIQUE INDEX IF NOT EXISTS jobs_active_lock_key_idx ON jobs(lock_key)\n WHERE lock_key IS NOT NULL AND status IN ('queued', 'running');\n";
288
+ export type PostgresSqlLike = {
289
+ unsafe<Row extends object = Record<string, unknown>>(query: string, values?: readonly unknown[]): Promise<Row[]>;
290
+ json?: (value: unknown) => unknown;
291
+ };
292
+ export type PostgresJobStoreOptions = {
293
+ tableName?: string;
294
+ idPrefix?: string;
295
+ queueName?: string;
296
+ statusMap?: Partial<Record<JobStatus, string>>;
297
+ reverseStatusMap?: Record<string, JobStatus>;
298
+ columns?: Partial<PostgresJobColumns>;
299
+ defaultMaxAttempts?: number;
300
+ initialResult?: unknown;
301
+ retryDelaySql?: string;
302
+ };
303
+ export type PostgresJobColumns = {
304
+ jobId: string;
305
+ orgId: string | null;
306
+ siteId: string | null;
307
+ queueName: string;
308
+ jobType: string;
309
+ status: string;
310
+ payloadJson: string;
311
+ resultJson: string;
312
+ metadataJson: string | null;
313
+ parentJobId: string | null;
314
+ lockKey: string | null;
315
+ concurrencyKey: string | null;
316
+ concurrencyLimit: string | null;
317
+ enqueuePolicy: string | null;
318
+ attemptCount: string;
319
+ maxAttempts: string;
320
+ availableAt: string;
321
+ startedAt: string | null;
322
+ completedAt: string | null;
323
+ lastError: string | null;
324
+ createdAt: string;
325
+ updatedAt: string;
326
+ };
327
+ export declare class PostgresJobStore implements DurableJobRepository {
328
+ private readonly sql;
329
+ private readonly options;
330
+ private readonly tableName;
331
+ private readonly columns;
332
+ constructor(sql: PostgresSqlLike, options?: PostgresJobStoreOptions);
333
+ enqueue<TPayload = unknown>(input: EnqueueJobInput<TPayload>): Promise<JobRecord<TPayload>>;
334
+ get<TPayload = unknown, TResult = unknown>(jobId: string): Promise<JobRecord<TPayload, TResult> | null>;
335
+ claim<TPayload = unknown>(jobId: string): Promise<JobRecord<TPayload> | null>;
336
+ succeed<TResult = unknown>(jobId: string, result?: TResult | null): Promise<void>;
337
+ requeue<TPayload = unknown, TResult = unknown>(jobId: string, input?: {
338
+ payload?: TPayload;
339
+ result?: TResult | null;
340
+ availableAt?: string | null;
341
+ lastError?: string | null;
342
+ }): Promise<void>;
343
+ fail(jobId: string, error: unknown): Promise<void>;
344
+ stop<TResult = unknown>(jobId: string, result?: TResult | null): Promise<void>;
345
+ requestStop(jobId: string): Promise<void>;
346
+ listChildren(parentJobId: string): Promise<JobRecord[]>;
347
+ summarizeChildren(parentJobId: string): Promise<JobChildrenSummary>;
348
+ markQueuedChildrenTerminal(parentJobId: string, status: "failed" | "stopped", error?: unknown): Promise<number>;
349
+ requestStopActiveChildren(parentJobId: string): Promise<number>;
350
+ private getActiveForLockKey;
351
+ private complete;
352
+ private selectSql;
353
+ private returningSql;
354
+ private rowToJob;
355
+ private toDbStatus;
356
+ private fromDbStatus;
357
+ private col;
358
+ private colRaw;
359
+ private insertPlaceholder;
360
+ private nullableColSql;
361
+ private selectExpr;
362
+ private setSql;
363
+ }
364
+ export type PipelineJob<StepName extends string, State> = {
365
+ pipeline: string;
366
+ runId: string;
367
+ step: StepName;
368
+ continuationId?: string;
369
+ state: State;
370
+ };
371
+ export type PipelineStepHandlerInput<StepName extends string, State> = {
372
+ job: PipelineJob<StepName, State>;
373
+ stepIndex: number;
374
+ isFinalStep: boolean;
375
+ };
376
+ export type PipelineCompletion = {
377
+ status: string;
378
+ targetsTotal: number;
379
+ targetsSucceeded: number;
380
+ targetsFailed: number;
381
+ message?: string | null;
382
+ };
383
+ export type PipelineStepHandlerResult<StepName extends string, State> = {
384
+ state?: State;
385
+ nextStep?: {
386
+ step: StepName;
387
+ state?: State;
388
+ } | null;
389
+ nextStepDelaySeconds?: number;
390
+ completion?: PipelineCompletion | null;
391
+ };
392
+ export type PipelineStepHandler<StepName extends string, State> = (input: PipelineStepHandlerInput<StepName, State>) => Promise<PipelineStepHandlerResult<StepName, State> | undefined> | Promise<void>;
393
+ export type PipelineManagerOptions<StepName extends string, State> = {
394
+ pipeline: string;
395
+ steps: readonly StepName[];
396
+ handlers: Record<StepName, PipelineStepHandler<StepName, State>>;
397
+ enqueue: (job: PipelineJob<StepName, State>, options?: {
398
+ delaySeconds?: number;
399
+ }) => Promise<void>;
400
+ makeContinuationId?: () => string;
401
+ };
402
+ export declare class PipelineManager<StepName extends string, State> {
403
+ private readonly options;
404
+ constructor(options: PipelineManagerOptions<StepName, State>);
405
+ getNextStep(step: StepName): StepName | null;
406
+ run(job: PipelineJob<StepName, State>): Promise<{
407
+ nextStep: StepName | null;
408
+ state: State;
409
+ completion: PipelineCompletion | null;
410
+ }>;
411
+ }
412
+ export type QueueSendOptions = {
413
+ delaySeconds?: number;
414
+ };
415
+ export type QueueBindingLike<TMessage> = {
416
+ send(message: TMessage, options?: QueueSendOptions): Promise<void>;
417
+ };
418
+ export type JobPublisher<TMessage> = {
419
+ put(message: TMessage, options?: QueueSendOptions): Promise<void>;
420
+ };
421
+ export type JobPublisherOptions<TMessage> = {
422
+ queue?: QueueBindingLike<TMessage>;
423
+ inline?: boolean;
424
+ handleInline?: (message: TMessage) => Promise<void>;
425
+ onQueued?: (message: TMessage, options: QueueSendOptions & {
426
+ mode: "inline" | "queue";
427
+ }) => Promise<void> | void;
428
+ };
429
+ export declare function createJobPublisher<TMessage>(options: JobPublisherOptions<TMessage>): JobPublisher<TMessage>;
430
+ export declare function enqueueJobOperation<TPayload extends Record<string, unknown> = Record<string, unknown>>(jobs: Pick<DurableJobRepository, "enqueue">, input: EnqueueJobOperationInput<TPayload>): Promise<JobRecord>;
431
+ export declare function jobOperationKeys(input: {
432
+ operationKey: string;
433
+ siteId?: string | null;
434
+ entity?: JobOperationEntity | null;
435
+ dedupeActive?: boolean;
436
+ concurrencyScope?: string | null;
437
+ concurrencyLimit?: number | null;
438
+ }): JobOperationKeys;
439
+ export declare const D1_JOBS_SCHEMA = "\nCREATE TABLE IF NOT EXISTS jobs (\n job_id TEXT PRIMARY KEY,\n job_type TEXT NOT NULL,\n status TEXT NOT NULL,\n payload_json TEXT NOT NULL DEFAULT '{}',\n result_json TEXT,\n org_id TEXT,\n site_id TEXT,\n metadata_json TEXT NOT NULL DEFAULT '{}',\n parent_job_id TEXT,\n lock_key TEXT,\n concurrency_key TEXT,\n concurrency_limit INTEGER,\n enqueue_policy TEXT NOT NULL DEFAULT 'enqueue',\n attempt_count INTEGER NOT NULL DEFAULT 0,\n max_attempts INTEGER NOT NULL DEFAULT 3,\n available_at TEXT,\n started_at TEXT,\n completed_at TEXT,\n last_error TEXT,\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL\n);\nCREATE INDEX IF NOT EXISTS jobs_status_available_idx ON jobs(status, available_at, created_at);\nCREATE INDEX IF NOT EXISTS jobs_type_status_idx ON jobs(job_type, status, created_at);\nCREATE INDEX IF NOT EXISTS jobs_org_status_idx ON jobs(org_id, status, created_at);\nCREATE INDEX IF NOT EXISTS jobs_site_status_idx ON jobs(site_id, status, created_at);\nCREATE INDEX IF NOT EXISTS jobs_parent_status_idx ON jobs(parent_job_id, status, created_at);\nCREATE INDEX IF NOT EXISTS jobs_concurrency_active_idx ON jobs(concurrency_key, status)\n WHERE concurrency_key IS NOT NULL AND status IN ('running', 'stopping');\nCREATE UNIQUE INDEX IF NOT EXISTS jobs_active_lock_key_idx ON jobs(lock_key)\n WHERE lock_key IS NOT NULL AND status IN ('queued', 'running', 'stopping');\n";
52
440
  //# sourceMappingURL=jobs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}