@beignet/provider-db-drizzle 0.0.32 → 0.0.34
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/CHANGELOG.md +18 -0
- package/README.md +47 -7
- package/dist/mysql/index.d.ts +8 -7
- package/dist/mysql/index.d.ts.map +1 -1
- package/dist/mysql/index.js +42 -3
- package/dist/mysql/index.js.map +1 -1
- package/dist/postgres/index.d.ts +8 -7
- package/dist/postgres/index.d.ts.map +1 -1
- package/dist/postgres/index.js +12 -2
- package/dist/postgres/index.js.map +1 -1
- package/dist/shared/idempotency-core.d.ts.map +1 -1
- package/dist/shared/idempotency-core.js +31 -13
- package/dist/shared/idempotency-core.js.map +1 -1
- package/dist/shared/outbox-core.d.ts +6 -1
- package/dist/shared/outbox-core.d.ts.map +1 -1
- package/dist/shared/outbox-core.js +206 -2
- package/dist/shared/outbox-core.js.map +1 -1
- package/dist/sqlite/index.d.ts +8 -7
- package/dist/sqlite/index.d.ts.map +1 -1
- package/dist/sqlite/index.js +36 -5
- package/dist/sqlite/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/database-provider/SKILL.md +7 -2
- package/src/mysql/index.ts +62 -11
- package/src/postgres/index.ts +22 -9
- package/src/shared/idempotency-core.ts +33 -14
- package/src/shared/outbox-core.ts +278 -0
- package/src/sqlite/index.ts +68 -18
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @beignet/provider-db-drizzle
|
|
2
2
|
|
|
3
|
+
## 0.0.34
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 9345cc9: Stabilize the pre-1.0 public surface around factory-only providers, canonical server and testing imports, consistent memory naming, and the removal of deprecated aliases.
|
|
8
|
+
|
|
9
|
+
## 0.0.33
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- e593497: Harden durable concurrency guarantees with shared outbox and idempotency
|
|
14
|
+
contention conformance, stale-lease checks, and serialized Beignet-owned SQLite
|
|
15
|
+
Unit of Work, outbox-claim, and idempotency-reservation transactions that avoid
|
|
16
|
+
leaking `SQLITE_BUSY` under concurrent requests. MySQL now retries deadlock
|
|
17
|
+
victims with a bounded policy around Beignet-owned claim and reservation
|
|
18
|
+
transactions only.
|
|
19
|
+
- 379a351: Add outbox admin ports and CLI tooling to inspect, requeue, purge, and prune durable outbox messages.
|
|
20
|
+
|
|
3
21
|
## 0.0.32
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -338,9 +338,8 @@ export const listTodos = useCase.query("todos.list").run(async ({ ctx }) => {
|
|
|
338
338
|
```
|
|
339
339
|
|
|
340
340
|
`ctx.ports.db.drizzle` remains available as a provider-specific escape hatch for
|
|
341
|
-
infrastructure code and one-off advanced Drizzle features.
|
|
342
|
-
|
|
343
|
-
Do not make either spelling the normal dependency for application use cases.
|
|
341
|
+
infrastructure code and one-off advanced Drizzle features. Do not make it the
|
|
342
|
+
normal dependency for application use cases.
|
|
344
343
|
|
|
345
344
|
## Installed ports
|
|
346
345
|
|
|
@@ -386,6 +385,18 @@ transaction when the callback throws; if post-commit event publishing fails, the
|
|
|
386
385
|
database transaction has already committed, so use the outbox for durable
|
|
387
386
|
follow-up work.
|
|
388
387
|
|
|
388
|
+
SQLite permits one writer at a time. The SQLite adapter therefore queues
|
|
389
|
+
Beignet-owned Unit of Work, root outbox-claim, and root idempotency-reservation
|
|
390
|
+
transactions per Drizzle client instead of leaking local `SQLITE_BUSY` errors
|
|
391
|
+
under concurrent requests. This is process-local coordination for SQLite's
|
|
392
|
+
single-writer model, not a multi-host worker strategy; use Postgres or MySQL for
|
|
393
|
+
distributed worker fleets.
|
|
394
|
+
|
|
395
|
+
MySQL can choose a transaction as an InnoDB deadlock victim during heavy
|
|
396
|
+
contention. The MySQL adapter retries only Beignet-owned outbox-claim and
|
|
397
|
+
idempotency-reservation transactions, up to eight attempts with a short bounded
|
|
398
|
+
delay. It does not retry app-owned Unit of Work callbacks.
|
|
399
|
+
|
|
389
400
|
## Local and tests
|
|
390
401
|
|
|
391
402
|
Generated SQLite apps include database reset helpers for isolated repository
|
|
@@ -498,6 +509,7 @@ import {
|
|
|
498
509
|
createDrizzleSqliteAuditLogSetupStatements,
|
|
499
510
|
createDrizzleSqliteIdempotencyPort,
|
|
500
511
|
createDrizzleSqliteIdempotencySetupStatements,
|
|
512
|
+
createDrizzleSqliteOutboxAdminPort,
|
|
501
513
|
createDrizzleSqliteOutboxPort,
|
|
502
514
|
createDrizzleSqliteOutboxSetupStatements,
|
|
503
515
|
createDrizzleSqliteUnitOfWork,
|
|
@@ -557,6 +569,11 @@ retry-safe commands, and rebuild it from `tx` when the idempotency reservation,
|
|
|
557
569
|
business write, audit row, outbox records, and replay result must commit
|
|
558
570
|
together.
|
|
559
571
|
|
|
572
|
+
Use `createDrizzleSqliteOutboxAdminPort(...)` as a root operational port for
|
|
573
|
+
maintenance contexts. It powers `beignet outbox list`, `show`, `requeue`,
|
|
574
|
+
`purge`, and `prune`; keep transaction-scoped writes on
|
|
575
|
+
`createDrizzleSqliteOutboxPort(...)`.
|
|
576
|
+
|
|
560
577
|
## Durable audit log
|
|
561
578
|
|
|
562
579
|
Use `createDrizzleSqliteAuditLogPort(...)` when `AuditLogPort` should write
|
|
@@ -796,6 +813,7 @@ import {
|
|
|
796
813
|
createDrizzlePostgresAuditLogSetupStatements,
|
|
797
814
|
createDrizzlePostgresIdempotencyPort,
|
|
798
815
|
createDrizzlePostgresIdempotencySetupStatements,
|
|
816
|
+
createDrizzlePostgresOutboxAdminPort,
|
|
799
817
|
createDrizzlePostgresOutboxPort,
|
|
800
818
|
createDrizzlePostgresOutboxSetupStatements,
|
|
801
819
|
} from "@beignet/provider-db-drizzle/postgres";
|
|
@@ -840,6 +858,9 @@ transaction client plus the same options as the SQLite ports. The idempotency
|
|
|
840
858
|
port throws `DrizzlePostgresIdempotencyMutationError` when `complete(...)` or
|
|
841
859
|
`fail(...)` does not match an in-progress reservation.
|
|
842
860
|
|
|
861
|
+
Use `createDrizzlePostgresOutboxAdminPort(...)` from a root maintenance context
|
|
862
|
+
when CLI/admin tooling needs to inspect, requeue, purge, or prune outbox rows.
|
|
863
|
+
|
|
843
864
|
## MySQL
|
|
844
865
|
|
|
845
866
|
`@beignet/provider-db-drizzle/mysql` mirrors the same surface on top of
|
|
@@ -925,6 +946,7 @@ import {
|
|
|
925
946
|
createDrizzleMysqlAuditLogSetupStatements,
|
|
926
947
|
createDrizzleMysqlIdempotencyPort,
|
|
927
948
|
createDrizzleMysqlIdempotencySetupStatements,
|
|
949
|
+
createDrizzleMysqlOutboxAdminPort,
|
|
928
950
|
createDrizzleMysqlOutboxPort,
|
|
929
951
|
createDrizzleMysqlOutboxSetupStatements,
|
|
930
952
|
createDrizzleMysqlUnitOfWork,
|
|
@@ -952,6 +974,9 @@ Postgres examples. The idempotency port throws
|
|
|
952
974
|
`DrizzleMysqlIdempotencyMutationError` on unmatched `complete(...)` or
|
|
953
975
|
`fail(...)` mutations.
|
|
954
976
|
|
|
977
|
+
Use `createDrizzleMysqlOutboxAdminPort(...)` from a root maintenance context
|
|
978
|
+
when CLI/admin tooling needs to inspect, requeue, purge, or prune outbox rows.
|
|
979
|
+
|
|
955
980
|
MySQL enforces length limits on idempotency keys: `storage_key` is
|
|
956
981
|
`varchar(512)` and `namespace`, `key`, and `scope` are `varchar(255)`.
|
|
957
982
|
Over-length keys fail loudly instead of being truncated, so keep idempotency
|
|
@@ -971,8 +996,10 @@ These choices are deliberate and shared across the three backends:
|
|
|
971
996
|
index, so over-length keys fail loudly rather than truncating silently.
|
|
972
997
|
- **Shared conformance suite.** One conformance suite runs the same Unit of
|
|
973
998
|
Work, outbox, and idempotency behavior tests against SQLite (libSQL),
|
|
974
|
-
Postgres, and MySQL
|
|
975
|
-
|
|
999
|
+
Postgres, and MySQL. It races independent worker ports to prove that outbox
|
|
1000
|
+
messages are claimed once, stale lease owners cannot complete re-claimed
|
|
1001
|
+
work, and concurrent matching idempotency requests execute one protected
|
|
1002
|
+
operation, so durable workflow semantics do not drift between backends.
|
|
976
1003
|
|
|
977
1004
|
## Advanced usage
|
|
978
1005
|
|
|
@@ -1129,14 +1156,12 @@ The port interface exposed on `ctx.ports.db`:
|
|
|
1129
1156
|
```ts
|
|
1130
1157
|
interface DbPort<TSchema extends Record<string, any> = any> {
|
|
1131
1158
|
drizzle: LibSQLDatabase<TSchema>;
|
|
1132
|
-
db: LibSQLDatabase<TSchema>;
|
|
1133
1159
|
client: Client;
|
|
1134
1160
|
checkHealth(): Promise<DbHealth>;
|
|
1135
1161
|
}
|
|
1136
1162
|
```
|
|
1137
1163
|
|
|
1138
1164
|
- `drizzle`: The typed Drizzle database instance for ORM operations
|
|
1139
|
-
- `db`: Backwards-compatible alias for `drizzle`
|
|
1140
1165
|
- `client`: The underlying libSQL client for advanced operations not covered by Drizzle
|
|
1141
1166
|
- `checkHealth`: A cheap `select 1` dependency check for app-owned readiness
|
|
1142
1167
|
endpoints
|
|
@@ -1182,6 +1207,21 @@ database or transaction client.
|
|
|
1182
1207
|
- `options.tableName` (optional): Outbox table name, defaults to `"outbox_messages"`
|
|
1183
1208
|
- `options.now` (optional): Test clock
|
|
1184
1209
|
|
|
1210
|
+
### `createDrizzleSqliteOutboxAdminPort<TSchema>(db, options?)`
|
|
1211
|
+
|
|
1212
|
+
Factory function to create a SQL-backed `OutboxAdminPort` for operational
|
|
1213
|
+
outbox maintenance. Use it from root app or CLI contexts, not transaction
|
|
1214
|
+
ports.
|
|
1215
|
+
|
|
1216
|
+
**Parameters:**
|
|
1217
|
+
- `db` (required): A `DrizzleSqliteDatabase<TSchema>` root database or transaction
|
|
1218
|
+
- `options.tableName` (optional): Outbox table name, defaults to `"outbox_messages"`
|
|
1219
|
+
- `options.now` (optional): Test clock
|
|
1220
|
+
|
|
1221
|
+
**Supports:** listing and counting outbox messages, showing one message,
|
|
1222
|
+
requeueing `deadLettered` messages, purging `deadLettered` rows, and pruning
|
|
1223
|
+
old delivered rows.
|
|
1224
|
+
|
|
1185
1225
|
### `createDrizzleSqliteOutboxSetupStatements(options?)`
|
|
1186
1226
|
|
|
1187
1227
|
Returns SQL setup statements for the app-owned outbox table and indexes. Run
|
package/dist/mysql/index.d.ts
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
29
|
import type { IdempotencyPort } from "@beignet/core/idempotency";
|
|
30
|
-
import type { OutboxPort } from "@beignet/core/outbox";
|
|
30
|
+
import type { OutboxAdminPort, OutboxPort } from "@beignet/core/outbox";
|
|
31
31
|
import { type AuditLogPort, type BufferedDomainEventRecorder, type EventBusPort, type UnitOfWorkPort } from "@beignet/core/ports";
|
|
32
32
|
import { type ExtractTablesWithRelations } from "drizzle-orm";
|
|
33
33
|
import type { MySqlDatabase, MySqlQueryResultHKT, MySqlTransaction, MySqlTransactionConfig, PreparedQueryHKTBase } from "drizzle-orm/mysql-core";
|
|
@@ -48,12 +48,6 @@ export interface DbPort<TSchema extends Record<string, unknown> = Record<string,
|
|
|
48
48
|
* Use this to query your database with full type safety.
|
|
49
49
|
*/
|
|
50
50
|
drizzle: MySql2Database<TSchema>;
|
|
51
|
-
/**
|
|
52
|
-
* Backwards-compatible alias for `drizzle`.
|
|
53
|
-
*
|
|
54
|
-
* @deprecated Use `drizzle` for the Drizzle ORM instance.
|
|
55
|
-
*/
|
|
56
|
-
db: MySql2Database<TSchema>;
|
|
57
51
|
/**
|
|
58
52
|
* The underlying mysql2 connection pool.
|
|
59
53
|
* Use this for advanced operations not covered by Drizzle ORM.
|
|
@@ -176,6 +170,13 @@ export declare function createDrizzleMysqlOutboxSetupStatements(options?: Drizzl
|
|
|
176
170
|
* for eligible messages, combined with `for update skip locked` row locking.
|
|
177
171
|
*/
|
|
178
172
|
export declare function createDrizzleMysqlOutboxPort<TSchema extends Record<string, unknown>>(db: DrizzleMysqlDatabase<TSchema>, adapterOptions?: DrizzleMysqlOutboxOptions): OutboxPort;
|
|
173
|
+
/**
|
|
174
|
+
* Create a Beignet outbox admin port backed by a Drizzle MySQL database.
|
|
175
|
+
*
|
|
176
|
+
* Wire this only into operational contexts that need to inspect, requeue,
|
|
177
|
+
* purge, or prune outbox messages.
|
|
178
|
+
*/
|
|
179
|
+
export declare function createDrizzleMysqlOutboxAdminPort<TSchema extends Record<string, unknown>>(db: DrizzleMysqlDatabase<TSchema>, adapterOptions?: DrizzleMysqlOutboxOptions): OutboxAdminPort;
|
|
179
180
|
/**
|
|
180
181
|
* Options for a Drizzle MySQL-backed idempotency port.
|
|
181
182
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mysql/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mysql/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mysql/index.js
CHANGED
|
@@ -37,7 +37,7 @@ import { dbHealthError, dbHealthOk } from "../shared/health.js";
|
|
|
37
37
|
import { createIdempotencyPortCore, formatIdempotencyMutationErrorMessage, } from "../shared/idempotency-core.js";
|
|
38
38
|
import { quoteIdentifier } from "../shared/identifiers.js";
|
|
39
39
|
import { createDbQueryLogger } from "../shared/instrumentation.js";
|
|
40
|
-
import { createOutboxPortCore, } from "../shared/outbox-core.js";
|
|
40
|
+
import { createOutboxAdminPortCore, createOutboxPortCore, } from "../shared/outbox-core.js";
|
|
41
41
|
async function checkMysqlHealth(pool) {
|
|
42
42
|
try {
|
|
43
43
|
await pool.query("select 1");
|
|
@@ -104,6 +104,32 @@ function isDuplicateKeyError(error) {
|
|
|
104
104
|
}
|
|
105
105
|
return false;
|
|
106
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Detect an InnoDB deadlock victim through Drizzle's error cause chain.
|
|
109
|
+
*/
|
|
110
|
+
function isMysqlDeadlockError(error) {
|
|
111
|
+
for (let current = error; current !== null && typeof current === "object"; current = current.cause) {
|
|
112
|
+
const candidate = current;
|
|
113
|
+
if (candidate.errno === 1213 || candidate.code === "ER_LOCK_DEADLOCK") {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
async function runMysqlInternalTransaction(transaction) {
|
|
120
|
+
const maxAttempts = 8;
|
|
121
|
+
for (let attempt = 1;; attempt += 1) {
|
|
122
|
+
try {
|
|
123
|
+
return await transaction();
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
if (!isMysqlDeadlockError(error) || attempt >= maxAttempts) {
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
await new Promise((resolve) => setTimeout(resolve, attempt));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
107
133
|
function createMysqlExecutor(db, table) {
|
|
108
134
|
return {
|
|
109
135
|
table,
|
|
@@ -150,7 +176,10 @@ function createMysqlExecutor(db, table) {
|
|
|
150
176
|
},
|
|
151
177
|
withTransaction(fn) {
|
|
152
178
|
if ("transaction" in db && typeof db.transaction === "function") {
|
|
153
|
-
|
|
179
|
+
// Outbox claims and idempotency reservations are small Beignet-owned
|
|
180
|
+
// transactions with no app callbacks. Retrying a deadlock victim is
|
|
181
|
+
// therefore safe and lets contenders classify against the winner.
|
|
182
|
+
return runMysqlInternalTransaction(() => db.transaction((tx) => fn(createMysqlExecutor(tx, table))));
|
|
154
183
|
}
|
|
155
184
|
return undefined;
|
|
156
185
|
},
|
|
@@ -264,6 +293,17 @@ export function createDrizzleMysqlOutboxPort(db, adapterOptions = {}) {
|
|
|
264
293
|
const executor = createMysqlExecutor(db, table);
|
|
265
294
|
return createOutboxPortCore(executor, { now: adapterOptions.now });
|
|
266
295
|
}
|
|
296
|
+
/**
|
|
297
|
+
* Create a Beignet outbox admin port backed by a Drizzle MySQL database.
|
|
298
|
+
*
|
|
299
|
+
* Wire this only into operational contexts that need to inspect, requeue,
|
|
300
|
+
* purge, or prune outbox messages.
|
|
301
|
+
*/
|
|
302
|
+
export function createDrizzleMysqlOutboxAdminPort(db, adapterOptions = {}) {
|
|
303
|
+
const table = sql.raw(quoteIdentifier(adapterOptions.tableName ?? "outbox_messages", "`"));
|
|
304
|
+
const executor = createMysqlExecutor(db, table);
|
|
305
|
+
return createOutboxAdminPortCore(executor, { now: adapterOptions.now });
|
|
306
|
+
}
|
|
267
307
|
/**
|
|
268
308
|
* Error thrown when `complete(...)` or `fail(...)` does not match an
|
|
269
309
|
* in-progress idempotency reservation with the provided fingerprint.
|
|
@@ -399,7 +439,6 @@ export function createDrizzleMysqlProvider(options) {
|
|
|
399
439
|
// 3. Build a typed DbPort
|
|
400
440
|
const dbPort = {
|
|
401
441
|
drizzle: db,
|
|
402
|
-
db,
|
|
403
442
|
pool,
|
|
404
443
|
checkHealth: () => checkMysqlHealth(pool),
|
|
405
444
|
};
|
package/dist/mysql/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mysql/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAGL,yBAAyB,GAI1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAA6C,GAAG,EAAE,MAAM,aAAa,CAAC;AAQ7E,OAAO,EAAE,OAAO,EAAuB,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAiB,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,yBAAyB,EACzB,qCAAqC,GAEtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,oBAAoB,GAGrB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mysql/index.ts"],"names":[],"mappings":"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"}
|
package/dist/postgres/index.d.ts
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
29
|
import type { IdempotencyPort } from "@beignet/core/idempotency";
|
|
30
|
-
import type { OutboxPort } from "@beignet/core/outbox";
|
|
30
|
+
import type { OutboxAdminPort, OutboxPort } from "@beignet/core/outbox";
|
|
31
31
|
import { type AuditLogPort, type BufferedDomainEventRecorder, type EventBusPort, type UnitOfWorkPort } from "@beignet/core/ports";
|
|
32
32
|
import { type ExtractTablesWithRelations } from "drizzle-orm";
|
|
33
33
|
import { type NodePgDatabase } from "drizzle-orm/node-postgres";
|
|
@@ -48,12 +48,6 @@ export interface DbPort<TSchema extends Record<string, unknown> = Record<string,
|
|
|
48
48
|
* Use this to query your database with full type safety.
|
|
49
49
|
*/
|
|
50
50
|
drizzle: NodePgDatabase<TSchema>;
|
|
51
|
-
/**
|
|
52
|
-
* Backwards-compatible alias for `drizzle`.
|
|
53
|
-
*
|
|
54
|
-
* @deprecated Use `drizzle` for the Drizzle ORM instance.
|
|
55
|
-
*/
|
|
56
|
-
db: NodePgDatabase<TSchema>;
|
|
57
51
|
/**
|
|
58
52
|
* The underlying node-postgres connection pool.
|
|
59
53
|
* Use this for advanced operations not covered by Drizzle ORM.
|
|
@@ -167,6 +161,13 @@ export declare function createDrizzlePostgresOutboxSetupStatements(options?: Dri
|
|
|
167
161
|
* claim transaction.
|
|
168
162
|
*/
|
|
169
163
|
export declare function createDrizzlePostgresOutboxPort<TSchema extends Record<string, unknown>>(db: DrizzlePostgresDatabase<TSchema>, adapterOptions?: DrizzlePostgresOutboxOptions): OutboxPort;
|
|
164
|
+
/**
|
|
165
|
+
* Create a Beignet outbox admin port backed by a Drizzle Postgres database.
|
|
166
|
+
*
|
|
167
|
+
* Wire this only into operational contexts that need to inspect, requeue,
|
|
168
|
+
* purge, or prune outbox messages.
|
|
169
|
+
*/
|
|
170
|
+
export declare function createDrizzlePostgresOutboxAdminPort<TSchema extends Record<string, unknown>>(db: DrizzlePostgresDatabase<TSchema>, adapterOptions?: DrizzlePostgresOutboxOptions): OutboxAdminPort;
|
|
170
171
|
/**
|
|
171
172
|
* Options for a Drizzle Postgres-backed idempotency port.
|
|
172
173
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"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"}
|
package/dist/postgres/index.js
CHANGED
|
@@ -38,7 +38,7 @@ import { dbHealthError, dbHealthOk } from "../shared/health.js";
|
|
|
38
38
|
import { createIdempotencyPortCore, formatIdempotencyMutationErrorMessage, } from "../shared/idempotency-core.js";
|
|
39
39
|
import { quoteIdentifier } from "../shared/identifiers.js";
|
|
40
40
|
import { createDbQueryLogger } from "../shared/instrumentation.js";
|
|
41
|
-
import { createOutboxPortCore, } from "../shared/outbox-core.js";
|
|
41
|
+
import { createOutboxAdminPortCore, createOutboxPortCore, } from "../shared/outbox-core.js";
|
|
42
42
|
async function checkPostgresHealth(pool) {
|
|
43
43
|
try {
|
|
44
44
|
await pool.query("select 1");
|
|
@@ -212,6 +212,17 @@ export function createDrizzlePostgresOutboxPort(db, adapterOptions = {}) {
|
|
|
212
212
|
const executor = createPostgresExecutor(db, table);
|
|
213
213
|
return createOutboxPortCore(executor, { now: adapterOptions.now });
|
|
214
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* Create a Beignet outbox admin port backed by a Drizzle Postgres database.
|
|
217
|
+
*
|
|
218
|
+
* Wire this only into operational contexts that need to inspect, requeue,
|
|
219
|
+
* purge, or prune outbox messages.
|
|
220
|
+
*/
|
|
221
|
+
export function createDrizzlePostgresOutboxAdminPort(db, adapterOptions = {}) {
|
|
222
|
+
const table = sql.raw(quoteIdentifier(adapterOptions.tableName ?? "outbox_messages", '"'));
|
|
223
|
+
const executor = createPostgresExecutor(db, table);
|
|
224
|
+
return createOutboxAdminPortCore(executor, { now: adapterOptions.now });
|
|
225
|
+
}
|
|
215
226
|
/**
|
|
216
227
|
* Error thrown when `complete(...)` or `fail(...)` does not match an
|
|
217
228
|
* in-progress idempotency reservation with the provided fingerprint.
|
|
@@ -343,7 +354,6 @@ export function createDrizzlePostgresProvider(options) {
|
|
|
343
354
|
// 3. Build a typed DbPort
|
|
344
355
|
const dbPort = {
|
|
345
356
|
drizzle: db,
|
|
346
|
-
db,
|
|
347
357
|
pool,
|
|
348
358
|
checkHealth: () => checkPostgresHealth(pool),
|
|
349
359
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAGL,yBAAyB,GAI1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAA6C,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAuB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAGL,aAAa,GAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAkC,MAAM,IAAI,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAiB,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,yBAAyB,EACzB,qCAAqC,GAEtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,oBAAoB,GAGrB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAGL,yBAAyB,GAI1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAA6C,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAuB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAGL,aAAa,GAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAkC,MAAM,IAAI,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAiB,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,yBAAyB,EACzB,qCAAqC,GAEtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GAGrB,MAAM,0BAA0B,CAAC;AAwDlC,KAAK,UAAU,mBAAmB,CAAC,IAAU;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7B,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAoCD;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAI7C,OAA2D;IAE3D,OAAO;QACL,KAAK,CAAC,WAAW,CACf,IAAyC;YAEzC,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;YAE3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBACvD,MAAM,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAE9B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAeD;;;;;GAKG;AACH,MAAM,UAAU,4CAA4C,CAC1D,UAA0C,EAAE;IAE5C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,WAAW,CAAC;IACnD,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAEhE,OAAO;QACL,8BAA8B,KAAK;;;;;;;;;;;;;;;;;;;;MAoBjC;QACF,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,WAAW;QACtG,8BAA8B,eAAe,CAAC,GAAG,WAAW,YAAY,EAAE,GAAG,CAAC,OAAO,KAAK,yBAAyB;QACnH,8BAA8B,eAAe,CAAC,GAAG,WAAW,kBAAkB,EAAE,GAAG,CAAC,OAAO,KAAK,gBAAgB;QAChH,8BAA8B,eAAe,CAAC,GAAG,WAAW,cAAc,EAAE,GAAG,CAAC,OAAO,KAAK,eAAe;QAC3G,8BAA8B,eAAe,CAAC,GAAG,WAAW,eAAe,EAAE,GAAG,CAAC,OAAO,KAAK,+BAA+B;QAC5H,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,cAAc;KAC1G,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAG/C,EAAoC,EACpC,iBAAiD,EAAE;IAEnD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CACnB,eAAe,CAAC,cAAc,CAAC,SAAS,IAAI,WAAW,EAAE,GAAG,CAAC,CAC9D,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,MAAM,EAAE,CAAC,OAAO,CACd,yBAAyB,CACvB,KAAK,EACL,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC,CAC5C,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAmBD,SAAS,gBAAgB,CAAC,MAAe;IACvC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAGlC,CAAC;IACF,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,MAAe;IAC/B,MAAM,IAAI,GAAI,MAA+C,CAAC,IAAI,CAAC;IACnE,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC;AAaD,SAAS,sBAAsB,CAC7B,EAAoC,EACpC,KAAU;IAEV,OAAO;QACL,KAAK;QACL,sEAAsE;QACtE,sCAAsC;QACtC,eAAe,EAAE,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC;QACnD,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;QACpC,oBAAoB,EAAE,GAAG,CAAC,GAAG,CAAC,uCAAuC,CAAC;QAEtE,KAAK,CAAC,IAAI,CAAC,KAAK;YACd,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,KAAK;YACb,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,KAAK;YACb,OAAO,gBAAgB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,eAAe,CAAC,EAAE;YAChB,sEAAsE;YACtE,yCAAyC;YACzC,IAAI,EAAE,YAAY,aAAa,EAAE,CAAC;gBAChC,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,aAAa,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBAChE,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAC3B,EAAE,CACA,sBAAsB,CACpB,EAAsC,EACtC,KAAK,CACN,CACF,CACF,CAAC;YACJ,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0CAA0C,CACxD,UAAwC,EAAE;IAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,iBAAiB,CAAC;IACzD,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAEhE,OAAO;QACL,8BAA8B,KAAK;;;;;;;;;;;;;;;;MAgBjC;QACF,8BAA8B,eAAe,CAAC,GAAG,WAAW,gBAAgB,EAAE,GAAG,CAAC,OAAO,KAAK,yBAAyB;QACvH,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,yBAAyB;KACrH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAG7C,EAAoC,EACpC,iBAA+C,EAAE;IAEjD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CACnB,eAAe,CAAC,cAAc,CAAC,SAAS,IAAI,iBAAiB,EAAE,GAAG,CAAC,CACpE,CAAC;IACF,MAAM,QAAQ,GAAsB,sBAAsB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEtE,OAAO,oBAAoB,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oCAAoC,CAGlD,EAAoC,EACpC,iBAA+C,EAAE;IAEjD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CACnB,eAAe,CAAC,cAAc,CAAC,SAAS,IAAI,iBAAiB,EAAE,GAAG,CAAC,CACpE,CAAC;IACF,MAAM,QAAQ,GAAsB,sBAAsB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEtE,OAAO,yBAAyB,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1E,CAAC;AAmBD;;;;;;;GAOG;AACH,MAAM,OAAO,uCAAwC,SAAQ,KAAK;IACvD,MAAM,CAAsB;IAC5B,SAAS,CAAS;IAClB,GAAG,CAAS;IACZ,QAAQ,CAAS;IAE1B,YAAY,IAKX;QACC,KAAK,CAAC,qCAAqC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,yCAAyC,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,+CAA+C,CAC7D,UAA6C,EAAE;IAE/C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,qBAAqB,CAAC;IAC7D,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAEhE,OAAO;QACL,8BAA8B,KAAK;;;;;;;;;;;;MAYjC;QACF,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,0CAA0C;QACrI,8BAA8B,eAAe,CAAC,GAAG,WAAW,cAAc,EAAE,GAAG,CAAC,OAAO,KAAK,eAAe;KAC5G,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oCAAoC,CAGlD,EAAoC,EACpC,iBAAoD,EAAE;IAEtD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CACnB,eAAe,CAAC,cAAc,CAAC,SAAS,IAAI,qBAAqB,EAAE,GAAG,CAAC,CACxE,CAAC;IACF,MAAM,QAAQ,GAA2B,sBAAsB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAE3E,OAAO,yBAAyB,CAC9B,QAAQ,EACR,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,EAC3B,uCAAuC,CACxC,CAAC;AACJ,CAAC;AAED,MAAM,wBAAwB,GAAG,CAAC,aAAa,EAAE,eAAe,CAAU,CAAC;AAE3E;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C;;;OAGG;IACH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CACN,wBAAwB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EACnE;QACE,OAAO,EACL,+GAA+G;KAClH,CACF;CACJ,CAAC,CAAC;AAqCH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,6BAA6B,CAG3C,OAA0D;IAC1D,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE5C,OAAO,cAAc,CAAC;QACpB,IAAI,EAAE,kBAAkB;QAExB,MAAM,EAAE;YACN,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,WAAW;SACvB;QAED,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;YACJ,CAAC;YAED,mEAAmE;YACnE,MAAM,IAAI,GAAS,IAAI,EAAE,CAAC,IAAI,CAAC;gBAC7B,gBAAgB,EAAE,MAAM,CAAC,MAAM;gBAC/B,GAAG,OAAO,CAAC,IAAI;aAChB,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,6BAA6B,CAAC,KAAK,EAAE;gBAC3D,YAAY,EAAE,kBAAkB;gBAChC,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAE9D,mCAAmC;YACnC,MAAM,EAAE,GAA4B,MAAM;gBACxC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACnC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAE9B,0BAA0B;YAC1B,MAAM,MAAM,GAAoB;gBAC9B,OAAO,EAAE,EAAE;gBACX,IAAI;gBACJ,WAAW,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;aAC7C,CAAC;YAEF,OAAO;gBACL,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAuC;gBAClE,KAAK,CAAC,IAAI;oBACR,uCAAuC;oBACvC,IAAI,CAAC;wBACH,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC1B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,yDAAyD;wBACzD,OAAO,CAAC,KAAK,CACX,8DAA8D,EAC9D,KAAK,CACN,CAAC;oBACJ,CAAC;gBACH,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idempotency-core.d.ts","sourceRoot":"","sources":["../../src/shared/idempotency-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAIL,KAAK,eAAe,EAIrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,GAAG,EAAO,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOxD;;GAEG;AACH,MAAM,WAAW,sBACf,SAAQ,eAAe,CAAC,sBAAsB,CAAC;IAC/C;;;;OAIG;IACH,YAAY,EAAE,GAAG,CAAC;IAElB;;;;;OAKG;IACH,oBAAoB,EAAE,GAAG,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,mCAAmC,GAAG,KAChD,IAAI,EAAE,4BAA4B,KAC/B,KAAK,CAAC;AAEX;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,4BAA4B,GACjC,MAAM,CAER;AA0CD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,0BAA0B,EACnC,kBAAkB,EAAE,mCAAmC,GACtD,eAAe,
|
|
1
|
+
{"version":3,"file":"idempotency-core.d.ts","sourceRoot":"","sources":["../../src/shared/idempotency-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAIL,KAAK,eAAe,EAIrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,GAAG,EAAO,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOxD;;GAEG;AACH,MAAM,WAAW,sBACf,SAAQ,eAAe,CAAC,sBAAsB,CAAC;IAC/C;;;;OAIG;IACH,YAAY,EAAE,GAAG,CAAC;IAElB;;;;;OAKG;IACH,oBAAoB,EAAE,GAAG,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,mCAAmC,GAAG,KAChD,IAAI,EAAE,4BAA4B,KAC/B,KAAK,CAAC;AAEX;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,4BAA4B,GACjC,MAAM,CAER;AA0CD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,0BAA0B,EACnC,kBAAkB,EAAE,mCAAmC,GACtD,eAAe,CA6JjB"}
|
|
@@ -84,10 +84,15 @@ export function createIdempotencyPortCore(executor, options, MutationErrorClass)
|
|
|
84
84
|
const expiresAt = resolveIdempotencyExpiresAt(input.ttlSec, now);
|
|
85
85
|
const storageKey = createIdempotencyStorageKey(input);
|
|
86
86
|
const scopeKey = normalizeIdempotencyScope(input.scope);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
const reserved = () => ({
|
|
88
|
+
status: "reserved",
|
|
89
|
+
namespace: input.namespace,
|
|
90
|
+
key: input.key,
|
|
91
|
+
scopeKey,
|
|
92
|
+
fingerprint: input.fingerprint,
|
|
93
|
+
reservedAt: now,
|
|
94
|
+
expiresAt,
|
|
95
|
+
});
|
|
91
96
|
const rowsAffected = await tx.run(sql `${tx.insertPrefix} ${tx.table} (
|
|
92
97
|
storage_key,
|
|
93
98
|
namespace,
|
|
@@ -114,15 +119,28 @@ export function createIdempotencyPortCore(executor, options, MutationErrorClass)
|
|
|
114
119
|
${nowIso}
|
|
115
120
|
)${tx.insertConflictSuffix}`);
|
|
116
121
|
if (rowsAffected === undefined || rowsAffected > 0) {
|
|
117
|
-
return
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
122
|
+
return reserved();
|
|
123
|
+
}
|
|
124
|
+
// Reset an expired reservation in place after the insert conflict. Doing
|
|
125
|
+
// this after the insert avoids MySQL gap-lock deadlocks when several
|
|
126
|
+
// transactions reserve the same previously missing storage key.
|
|
127
|
+
const expiredRowsAffected = await tx.run(sql `update ${tx.table}
|
|
128
|
+
set
|
|
129
|
+
namespace = ${input.namespace},
|
|
130
|
+
idempotency_key = ${input.key},
|
|
131
|
+
scope_key = ${scopeKey},
|
|
132
|
+
fingerprint = ${input.fingerprint},
|
|
133
|
+
status = 'in-progress',
|
|
134
|
+
result_json = null,
|
|
135
|
+
reserved_at = ${nowIso},
|
|
136
|
+
completed_at = null,
|
|
137
|
+
expires_at = ${expiresAt ? encodeTimestamp(expiresAt) : null},
|
|
138
|
+
updated_at = ${nowIso}
|
|
139
|
+
where storage_key = ${storageKey}
|
|
140
|
+
and expires_at is not null
|
|
141
|
+
and expires_at <= ${nowIso}`);
|
|
142
|
+
if (expiredRowsAffected !== undefined && expiredRowsAffected > 0) {
|
|
143
|
+
return reserved();
|
|
126
144
|
}
|
|
127
145
|
const row = (await tx.row(sql `select * from ${tx.table} where storage_key = ${storageKey}`));
|
|
128
146
|
if (!row) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idempotency-core.js","sourceRoot":"","sources":["../../src/shared/idempotency-core.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"idempotency-core.js","sourceRoot":"","sources":["../../src/shared/idempotency-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* This module must never import dialect database types — only `SQL` from
|
|
9
9
|
* drizzle-orm and core ports from `@beignet/core`.
|
|
10
10
|
*/
|
|
11
|
-
import { type OutboxPort } from "@beignet/core/outbox";
|
|
11
|
+
import { type OutboxAdminPort, type OutboxPort } from "@beignet/core/outbox";
|
|
12
12
|
import { type SQL } from "drizzle-orm";
|
|
13
13
|
/**
|
|
14
14
|
* Minimal SQL execution seam a dialect implements to back the shared
|
|
@@ -73,4 +73,9 @@ export interface OutboxPortCoreOptions {
|
|
|
73
73
|
* for eligible messages.
|
|
74
74
|
*/
|
|
75
75
|
export declare function createOutboxPortCore(executor: OutboxSqlExecutor, options?: OutboxPortCoreOptions): OutboxPort;
|
|
76
|
+
/**
|
|
77
|
+
* Create the dialect-independent outbox admin port orchestration on top of a
|
|
78
|
+
* dialect's `OutboxSqlExecutor`.
|
|
79
|
+
*/
|
|
80
|
+
export declare function createOutboxAdminPortCore(executor: OutboxSqlExecutor, options?: OutboxPortCoreOptions): OutboxAdminPort;
|
|
76
81
|
//# sourceMappingURL=outbox-core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox-core.d.ts","sourceRoot":"","sources":["../../src/shared/outbox-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"outbox-core.d.ts","sourceRoot":"","sources":["../../src/shared/outbox-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAKL,KAAK,eAAe,EASpB,KAAK,UAAU,EAKhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,GAAG,EAAO,MAAM,aAAa,CAAC;AAQ5C;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAAC,KAAK;IACpC;;;OAGG;IACH,KAAK,EAAE,GAAG,CAAC;IAEX;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAErD;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IAE9D;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE7C;;;;;OAKG;IACH,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CAC3E;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,eAAe,CAAC,iBAAiB,CAAC;IAC3E;;;;OAIG;IACH,eAAe,EAAE,GAAG,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAmMD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE,qBAA0B,GAClC,UAAU,CAmKZ;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE,qBAA0B,GAClC,eAAe,CA2HjB"}
|