effect-mq 0.2.0 → 0.3.1
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 +182 -18
- package/dist/Job.d.ts +51 -1
- package/dist/Job.d.ts.map +1 -1
- package/dist/Job.js +52 -6
- package/dist/Job.js.map +1 -1
- package/dist/JobStore.d.ts +86 -6
- package/dist/JobStore.d.ts.map +1 -1
- package/dist/JobStore.js +27 -1
- package/dist/JobStore.js.map +1 -1
- package/dist/MemoryJobStore.d.ts +6 -5
- package/dist/MemoryJobStore.d.ts.map +1 -1
- package/dist/MemoryJobStore.js +160 -32
- package/dist/MemoryJobStore.js.map +1 -1
- package/dist/Metrics.d.ts +98 -0
- package/dist/Metrics.d.ts.map +1 -0
- package/dist/Metrics.js +124 -0
- package/dist/Metrics.js.map +1 -0
- package/dist/Worker.d.ts +6 -0
- package/dist/Worker.d.ts.map +1 -1
- package/dist/Worker.js +63 -3
- package/dist/Worker.js.map +1 -1
- package/dist/drizzle-postgres/DrizzleJobStore.d.ts +20 -3
- package/dist/drizzle-postgres/DrizzleJobStore.d.ts.map +1 -1
- package/dist/drizzle-postgres/DrizzleJobStore.js +352 -84
- package/dist/drizzle-postgres/DrizzleJobStore.js.map +1 -1
- package/dist/drizzle-postgres/schema.d.ts +255 -351
- package/dist/drizzle-postgres/schema.d.ts.map +1 -1
- package/dist/drizzle-postgres/schema.js +75 -27
- package/dist/drizzle-postgres/schema.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/redis/RedisJobStore.d.ts +4 -2
- package/dist/redis/RedisJobStore.d.ts.map +1 -1
- package/dist/redis/RedisJobStore.js +67 -28
- package/dist/redis/RedisJobStore.js.map +1 -1
- package/dist/redis/scripts.d.ts +19 -6
- package/dist/redis/scripts.d.ts.map +1 -1
- package/dist/redis/scripts.js +208 -23
- package/dist/redis/scripts.js.map +1 -1
- package/dist/testing/conformance.d.ts.map +1 -1
- package/dist/testing/conformance.js +172 -7
- package/dist/testing/conformance.js.map +1 -1
- package/package.json +1 -1
- package/src/Job.ts +128 -9
- package/src/JobStore.ts +122 -6
- package/src/MemoryJobStore.ts +184 -44
- package/src/Metrics.ts +135 -0
- package/src/Worker.ts +102 -3
- package/src/drizzle-postgres/DrizzleJobStore.ts +431 -91
- package/src/drizzle-postgres/schema.ts +177 -63
- package/src/index.ts +8 -0
- package/src/redis/RedisJobStore.ts +90 -35
- package/src/redis/scripts.ts +217 -24
- package/src/testing/conformance.ts +246 -7
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
import * as JobStore from "../JobStore.ts";
|
|
20
20
|
import type { PgClient } from "@effect/sql-pg";
|
|
21
21
|
import { type Context, Duration, Effect, Layer, type Scope } from "effect";
|
|
22
|
-
import type { MqJobAttemptsTable, MqJobsTable, MqQueueControlTable, MqSchedulesTable } from "./schema.ts";
|
|
22
|
+
import type { MqDedupeTable, MqJobAttemptsTable, MqJobsTable, MqQueueControlTable, MqSchedulesTable } from "./schema.ts";
|
|
23
23
|
/**
|
|
24
24
|
* @since 0.1.0
|
|
25
25
|
*/
|
|
@@ -32,13 +32,24 @@ export interface DrizzleJobStoreOptions<StoreId = JobStore.JobStore> {
|
|
|
32
32
|
readonly schedules: MqSchedulesTable;
|
|
33
33
|
/** The queue pause/resume flags table (from `mqQueueControl`). */
|
|
34
34
|
readonly queues: MqQueueControlTable;
|
|
35
|
+
/** The dedup-key registry table (from `mqDedupe`). */
|
|
36
|
+
readonly dedupe: MqDedupeTable;
|
|
37
|
+
/**
|
|
38
|
+
* Values for columns added via `mqJobs({ extend })`, evaluated at enqueue
|
|
39
|
+
* (and on dedupe `replace`). Keys are the extended columns' TS names.
|
|
40
|
+
* Default: each extended column fills from `request.metadata[<TS name>]`,
|
|
41
|
+
* NULL when absent.
|
|
42
|
+
*/
|
|
43
|
+
readonly extraValues?: ((request: JobStore.EnqueueRequest) => Readonly<Record<string, ExtraColumnValue>>) | undefined;
|
|
35
44
|
/** Bind to a `JobStore.named(...)` key; default: the default `JobStore`. */
|
|
36
45
|
readonly store?: Context.Key<StoreId, JobStore.Service> | undefined;
|
|
37
46
|
/**
|
|
38
47
|
* Store-level retention ceiling: terminal records older than this are
|
|
39
|
-
* removed by a periodic sweep
|
|
48
|
+
* removed by a periodic sweep — one duration for all terminal states or a
|
|
49
|
+
* per-state split (`{ completed: "1 day", failed: "30 days" }`). The sweep
|
|
50
|
+
* also honours stricter per-job `keep.age` rules.
|
|
40
51
|
*/
|
|
41
|
-
readonly historyTtl?:
|
|
52
|
+
readonly historyTtl?: JobStore.HistoryTtlInput | undefined;
|
|
42
53
|
/** History sweep cadence (default 1 minute). */
|
|
43
54
|
readonly historySweepInterval?: Duration.Input | undefined;
|
|
44
55
|
/**
|
|
@@ -52,6 +63,12 @@ export interface DrizzleJobStoreOptions<StoreId = JobStore.JobStore> {
|
|
|
52
63
|
*/
|
|
53
64
|
readonly validate?: boolean | undefined;
|
|
54
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* A value the driver can bind directly into an extended column.
|
|
68
|
+
*
|
|
69
|
+
* @since 0.3.0
|
|
70
|
+
*/
|
|
71
|
+
export type ExtraColumnValue = string | number | boolean | Date | null;
|
|
55
72
|
/**
|
|
56
73
|
* Build the store implementation. Requires `PgClient` and a `Scope` (for the
|
|
57
74
|
* LISTEN subscription).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrizzleJobStore.d.ts","sourceRoot":"","sources":["../../src/drizzle-postgres/DrizzleJobStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAI9C,OAAO,EAAS,KAAK,OAAO,EAAY,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAU,KAAK,KAAK,EAAU,MAAM,QAAQ,CAAA;AAC3G,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"DrizzleJobStore.d.ts","sourceRoot":"","sources":["../../src/drizzle-postgres/DrizzleJobStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAI9C,OAAO,EAAS,KAAK,OAAO,EAAY,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAU,KAAK,KAAK,EAAU,MAAM,QAAQ,CAAA;AAC3G,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAIxH;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,OAAO,GAAG,QAAQ,CAAC,QAAQ;IACjE,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;IACrC,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;IACpC,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;IACpC,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EACjB,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAClF,SAAS,CAAA;IACb,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;IACnE;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,eAAe,GAAG,SAAS,CAAA;IAC1D,gDAAgD;IAChD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IAC1D;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAA;IACvD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACxC;AAID;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAA;AAoGtE;;;;;GAKG;AACH,eAAO,MAAM,IAAI,YACN,sBAAsB,CAAC,GAAG,CAAC,KACnC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CA0kCtF,CAAA;AAEJ;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,KAAK,GAAI,OAAO,GAAG,QAAQ,CAAC,QAAQ,WACtC,sBAAsB,CAAC,OAAO,CAAC,KACvC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAO9D,CAAA"}
|