@beignet/provider-db-drizzle 0.0.32 → 0.0.33

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.
@@ -8,12 +8,27 @@
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 { createOutboxMessage, DEFAULT_OUTBOX_LEASE_MS, OutboxClaimError, serializeOutboxError, } from "@beignet/core/outbox";
11
+ import { createOutboxMessage, DEFAULT_OUTBOX_LEASE_MS, OutboxAdminError, OutboxClaimError, serializeOutboxError, } from "@beignet/core/outbox";
12
12
  import { sql } from "drizzle-orm";
13
- import { encodeTimestamp, rowToClaimedMessage, } from "./rows.js";
13
+ import { encodeTimestamp, rowToClaimedMessage, rowToMessage, } from "./rows.js";
14
14
  function nowFrom(options) {
15
15
  return options.now?.() ?? new Date();
16
16
  }
17
+ function assertNonEmptyString(name, value) {
18
+ if (typeof value !== "string" || value.trim().length === 0) {
19
+ throw new Error(`${name} must be a non-empty string`);
20
+ }
21
+ }
22
+ function assertPositiveInteger(name, value) {
23
+ if (!Number.isInteger(value) || value <= 0) {
24
+ throw new Error(`${name} must be a positive integer`);
25
+ }
26
+ }
27
+ function assertValidDate(name, value) {
28
+ if (!(value instanceof Date) || Number.isNaN(value.getTime())) {
29
+ throw new Error(`${name} must be a valid Date`);
30
+ }
31
+ }
17
32
  function createClaimToken() {
18
33
  return crypto.randomUUID();
19
34
  }
@@ -21,6 +36,98 @@ async function getOutboxRow(executor, id) {
21
36
  const row = await executor.row(sql `select * from ${executor.table} where id = ${id}`);
22
37
  return row;
23
38
  }
39
+ function normalizeStatusFilter(status) {
40
+ if (status === undefined)
41
+ return undefined;
42
+ if (typeof status === "string")
43
+ return [status];
44
+ return status;
45
+ }
46
+ function orConditions(conditions) {
47
+ if (conditions.length === 0)
48
+ return sql `1 = 0`;
49
+ let condition = conditions[0] ?? sql `1 = 0`;
50
+ for (const next of conditions.slice(1)) {
51
+ condition = sql `${condition} or ${next}`;
52
+ }
53
+ return sql `(${condition})`;
54
+ }
55
+ function andConditions(conditions) {
56
+ let condition = conditions[0] ?? sql `1 = 1`;
57
+ for (const next of conditions.slice(1)) {
58
+ condition = sql `${condition} and ${next}`;
59
+ }
60
+ return condition;
61
+ }
62
+ function whereClause(conditions) {
63
+ if (conditions.length === 0)
64
+ return sql.raw("");
65
+ return sql ` where ${andConditions(conditions)}`;
66
+ }
67
+ function messageQueryConditions(query = {}) {
68
+ const conditions = [];
69
+ const statuses = normalizeStatusFilter(query.status);
70
+ if (statuses !== undefined) {
71
+ conditions.push(orConditions(statuses.map((status) => sql `status = ${status}`)));
72
+ }
73
+ if (query.kind !== undefined)
74
+ conditions.push(sql `kind = ${query.kind}`);
75
+ if (query.name !== undefined) {
76
+ assertNonEmptyString("name", query.name);
77
+ conditions.push(sql `name = ${query.name}`);
78
+ }
79
+ if (query.updatedBefore !== undefined) {
80
+ assertValidDate("updatedBefore", query.updatedBefore);
81
+ conditions.push(sql `updated_at < ${encodeTimestamp(query.updatedBefore)}`);
82
+ }
83
+ if (query.deliveredBefore !== undefined) {
84
+ assertValidDate("deliveredBefore", query.deliveredBefore);
85
+ conditions.push(sql `delivered_at is not null`);
86
+ conditions.push(sql `delivered_at < ${encodeTimestamp(query.deliveredBefore)}`);
87
+ }
88
+ return conditions;
89
+ }
90
+ function readCount(row) {
91
+ const value = row?.count;
92
+ if (typeof value === "number")
93
+ return value;
94
+ if (typeof value === "bigint")
95
+ return Number(value);
96
+ if (typeof value === "string")
97
+ return Number(value);
98
+ return 0;
99
+ }
100
+ function adminListLimit(limit) {
101
+ const resolved = limit ?? 50;
102
+ assertPositiveInteger("limit", resolved);
103
+ return resolved;
104
+ }
105
+ async function countRows(executor, conditions) {
106
+ const row = await executor.row(sql `select count(*) as count from ${executor.table}${whereClause(conditions)}`);
107
+ return readCount(row);
108
+ }
109
+ function limitedDeleteQuery(executor, conditions, limit, orderBy) {
110
+ const where = whereClause(conditions);
111
+ if (limit === undefined) {
112
+ return sql `delete from ${executor.table}${where}`;
113
+ }
114
+ return sql `delete from ${executor.table}
115
+ where id in (
116
+ select id from (
117
+ select id from ${executor.table}${where}
118
+ order by ${orderBy}
119
+ limit ${limit}
120
+ ) as beignet_outbox_admin_delete
121
+ )`;
122
+ }
123
+ async function deleteRows(executor, conditions, limit, orderBy = sql `updated_at asc, created_at asc, id asc`) {
124
+ if (limit !== undefined)
125
+ assertPositiveInteger("limit", limit);
126
+ const expected = await countRows(executor, conditions);
127
+ const cappedExpected = limit === undefined ? expected : Math.min(expected, limit);
128
+ const rowsAffected = await executor.run(limitedDeleteQuery(executor, conditions, limit, orderBy));
129
+ return { deleted: rowsAffected ?? cappedExpected };
130
+ }
24
131
  function assertClaimedRowSucceeded(row, input) {
25
132
  if (!row || row.status !== input.expectedStatus || row.claim_token !== null) {
26
133
  throw new OutboxClaimError({
@@ -190,4 +297,101 @@ export function createOutboxPortCore(executor, options = {}) {
190
297
  },
191
298
  };
192
299
  }
300
+ /**
301
+ * Create the dialect-independent outbox admin port orchestration on top of a
302
+ * dialect's `OutboxSqlExecutor`.
303
+ */
304
+ export function createOutboxAdminPortCore(executor, options = {}) {
305
+ return {
306
+ async listMessages(input = {}) {
307
+ const limit = adminListLimit(input.limit);
308
+ const conditions = messageQueryConditions(input);
309
+ const rows = (await executor.rows(sql `select * from ${executor.table}${whereClause(conditions)}
310
+ order by updated_at desc, created_at desc, id desc
311
+ limit ${limit}`));
312
+ return rows.map(rowToMessage);
313
+ },
314
+ async countMessages(input = {}) {
315
+ return countRows(executor, messageQueryConditions(input));
316
+ },
317
+ async getMessage(id) {
318
+ assertNonEmptyString("id", id);
319
+ const row = await getOutboxRow(executor, id);
320
+ return row ? rowToMessage(row) : null;
321
+ },
322
+ async requeueMessage(input) {
323
+ assertNonEmptyString("id", input.id);
324
+ const existing = await getOutboxRow(executor, input.id);
325
+ if (!existing) {
326
+ throw new OutboxAdminError({
327
+ id: input.id,
328
+ message: `Outbox message "${input.id}" does not exist.`,
329
+ });
330
+ }
331
+ if (existing.status !== "deadLettered") {
332
+ throw new OutboxAdminError({
333
+ id: input.id,
334
+ message: `Outbox message "${input.id}" is not dead-lettered.`,
335
+ });
336
+ }
337
+ const now = input.now ?? nowFrom(options);
338
+ const availableAt = input.availableAt ?? now;
339
+ assertValidDate("now", now);
340
+ assertValidDate("availableAt", availableAt);
341
+ const nowIso = encodeTimestamp(now);
342
+ const availableAtIso = encodeTimestamp(availableAt);
343
+ const rowsAffected = input.resetAttempts
344
+ ? await executor.run(sql `update ${executor.table}
345
+ set
346
+ status = 'pending',
347
+ attempts = 0,
348
+ available_at = ${availableAtIso},
349
+ claimed_at = null,
350
+ locked_until = null,
351
+ claim_token = null,
352
+ updated_at = ${nowIso}
353
+ where id = ${input.id} and status = 'deadLettered'`)
354
+ : await executor.run(sql `update ${executor.table}
355
+ set
356
+ status = 'pending',
357
+ available_at = ${availableAtIso},
358
+ claimed_at = null,
359
+ locked_until = null,
360
+ claim_token = null,
361
+ updated_at = ${nowIso}
362
+ where id = ${input.id} and status = 'deadLettered'`);
363
+ if (rowsAffected !== undefined && rowsAffected <= 0) {
364
+ throw new OutboxAdminError({
365
+ id: input.id,
366
+ message: `Outbox message "${input.id}" could not be requeued because it changed state.`,
367
+ });
368
+ }
369
+ const requeued = await getOutboxRow(executor, input.id);
370
+ if (!requeued) {
371
+ throw new OutboxAdminError({
372
+ id: input.id,
373
+ message: `Outbox message "${input.id}" could not be requeued because it no longer exists.`,
374
+ });
375
+ }
376
+ return rowToMessage(requeued);
377
+ },
378
+ async purgeDeadLettered(input = {}) {
379
+ const conditions = [sql `status = 'deadLettered'`];
380
+ if (input.before !== undefined) {
381
+ assertValidDate("before", input.before);
382
+ conditions.push(sql `updated_at < ${encodeTimestamp(input.before)}`);
383
+ }
384
+ return deleteRows(executor, conditions, input.limit);
385
+ },
386
+ async pruneDelivered(input) {
387
+ assertValidDate("before", input.before);
388
+ const conditions = [
389
+ sql `status = 'delivered'`,
390
+ sql `delivered_at is not null`,
391
+ sql `delivered_at < ${encodeTimestamp(input.before)}`,
392
+ ];
393
+ return deleteRows(executor, conditions, input.limit, sql `delivered_at asc, updated_at asc, created_at asc, id asc`);
394
+ },
395
+ };
396
+ }
193
397
  //# sourceMappingURL=outbox-core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outbox-core.js","sourceRoot":"","sources":["../../src/shared/outbox-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAEL,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAKhB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAY,GAAG,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,eAAe,EAEf,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAgEnB,SAAS,OAAO,CAAC,OAA8B;IAC7C,OAAO,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,QAA2B,EAC3B,EAAU;IAEV,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,CAC5B,GAAG,CAAA,iBAAiB,QAAQ,CAAC,KAAK,eAAe,EAAE,EAAE,CACtD,CAAC;IACF,OAAO,GAA4B,CAAC;AACtC,CAAC;AAED,SAAS,yBAAyB,CAChC,GAA0B,EAC1B,KAA0D;IAE1D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,cAAc,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC5E,MAAM,IAAI,gBAAgB,CAAC;YACzB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,OAAO,EAAE,mBAAmB,KAAK,CAAC,EAAE,kCAAkC;SACvE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,6BAA6B,CAC1C,QAA2B,EAC3B,KAA0D,EAC1D,YAAgC;IAEhC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,gBAAgB,CAAC;gBACzB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,mBAAmB,KAAK,CAAC,EAAE,kCAAkC;aACvE,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IAED,yBAAyB,CAAC,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAA2B,EAC3B,UAAiC,EAAE;IAEnC,KAAK,UAAU,SAAS,CACtB,EAAqB,EACrB,KAAoD;QAEpD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,cAAc,GAAG,eAAe,CACpC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAC9C,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAA,iBAAiB,EAAE,CAAC,KAAK;;kDAEV,MAAM;kFAC0B,MAAM;;;cAG1E,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAA2B,CAAC;QACzE,MAAM,OAAO,GAA2B,EAAE,CAAC;QAE3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;YACtC,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAA,UAAU,EAAE,CAAC,KAAK;;;;yBAIpC,MAAM;2BACJ,cAAc;0BACf,UAAU;yBACX,MAAM;qBACV,GAAG,CAAC,EAAE;;sDAE2B,MAAM;sFAC0B,MAAM;YAChF,CAAC,CAAC;YACR,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;gBACpD,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAC9B,GAAG,CAAA,iBAAiB,EAAE,CAAC,KAAK,eAAe,GAAG,CAAC,EAAE,sBAAsB,UAAU,EAAE,CACpF,CAA0B,CAAC;YAC5B,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,KAAyB;YACrC,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE;gBACzC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;aACtB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAElD,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAA,eAAe,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;;;UAiB/C,OAAO,CAAC,EAAE;UACV,OAAO,CAAC,IAAI;UACZ,OAAO,CAAC,IAAI;UACZ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;UAC/B,OAAO,CAAC,MAAM;UACd,OAAO,CAAC,QAAQ;UAChB,OAAO,CAAC,WAAW;UACnB,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC;;;;;;UAMpC,MAAM;UACN,MAAM;QACR,CAAC,CAAC;YAEJ,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAK;YACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,uBAAuB,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;YAE3C,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CACpD,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAC1B,CAAC;YACF,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,aAAa,CAAC;YACvB,CAAC;YAED,OAAO,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACzC,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,KAAK;YACvB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9D,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAA,UAAU,QAAQ,CAAC,KAAK;;;2BAG9C,MAAM;;;;yBAIR,MAAM;qBACV,KAAK,CAAC,EAAE;;8BAEC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YAE5C,MAAM,6BAA6B,CACjC,QAAQ,EACR,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,EAC7C,YAAY,CACb,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAK;YACpB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,MAAM,GAAwB,KAAK,CAAC,UAAU;gBAClD,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC;YAEzC,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAA,UAAU,QAAQ,CAAC,KAAK;;qBAEpD,MAAM;2BACA,eAAe,CAAC,WAAW,CAAC;;;;8BAIzB,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;yBACtD,MAAM;qBACV,KAAK,CAAC,EAAE;;8BAEC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YAE5C,MAAM,6BAA6B,CACjC,QAAQ,EACR,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EACxC,YAAY,CACb,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"outbox-core.js","sourceRoot":"","sources":["../../src/shared/outbox-core.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@
29
29
  * ```
30
30
  */
31
31
  import type { IdempotencyPort } from "@beignet/core/idempotency";
32
- import type { OutboxPort } from "@beignet/core/outbox";
32
+ import type { OutboxAdminPort, OutboxPort } from "@beignet/core/outbox";
33
33
  import { type AuditLogPort, type BufferedDomainEventRecorder, type EventBusPort, type UnitOfWorkPort } from "@beignet/core/ports";
34
34
  import { type Client } from "@libsql/client";
35
35
  import { type ExtractTablesWithRelations } from "drizzle-orm";
@@ -165,6 +165,13 @@ export declare function createDrizzleSqliteOutboxSetupStatements(options?: Drizz
165
165
  * for eligible messages.
166
166
  */
167
167
  export declare function createDrizzleSqliteOutboxPort<TSchema extends Record<string, unknown>>(db: DrizzleSqliteDatabase<TSchema>, adapterOptions?: DrizzleSqliteOutboxOptions): OutboxPort;
168
+ /**
169
+ * Create a Beignet outbox admin port backed by a Drizzle SQLite database.
170
+ *
171
+ * Wire this only into operational contexts that need to inspect, requeue,
172
+ * purge, or prune outbox messages.
173
+ */
174
+ export declare function createDrizzleSqliteOutboxAdminPort<TSchema extends Record<string, unknown>>(db: DrizzleSqliteDatabase<TSchema>, adapterOptions?: DrizzleSqliteOutboxOptions): OutboxAdminPort;
168
175
  /**
169
176
  * Options for a Drizzle SQLite-backed idempotency port.
170
177
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,24 @@ import { dbHealthError, dbHealthOk } from "../shared/health.js";
39
39
  import { createIdempotencyPortCore, formatIdempotencyMutationErrorMessage, } from "../shared/idempotency-core.js";
40
40
  import { quoteIdentifier } from "../shared/identifiers.js";
41
41
  import { createDbQueryLogger } from "../shared/instrumentation.js";
42
- import { createOutboxPortCore, } from "../shared/outbox-core.js";
42
+ import { createOutboxAdminPortCore, createOutboxPortCore, } from "../shared/outbox-core.js";
43
+ const sqliteTransactionTails = new WeakMap();
44
+ /**
45
+ * Queue Beignet-owned transactions per Drizzle client. SQLite only permits one
46
+ * writer at a time, while the local libSQL driver otherwise exposes concurrent
47
+ * transaction attempts as SQLITE_BUSY instead of waiting for the active write.
48
+ */
49
+ function runSerializedSqliteTransaction(db, transaction) {
50
+ const previous = sqliteTransactionTails.get(db) ?? Promise.resolve();
51
+ const result = previous.then(transaction);
52
+ const tail = result.then(() => undefined, () => undefined);
53
+ sqliteTransactionTails.set(db, tail);
54
+ return result.finally(() => {
55
+ if (sqliteTransactionTails.get(db) === tail) {
56
+ sqliteTransactionTails.delete(db);
57
+ }
58
+ });
59
+ }
43
60
  async function checkSqliteHealth(client) {
44
61
  try {
45
62
  await client.execute("select 1");
@@ -60,10 +77,10 @@ export function createDrizzleSqliteUnitOfWork(options) {
60
77
  return {
61
78
  async transaction(work) {
62
79
  const events = createDomainEventRecorder();
63
- const result = await options.db.transaction(async (tx) => {
80
+ const result = await runSerializedSqliteTransaction(options.db, () => options.db.transaction(async (tx) => {
64
81
  const txPorts = options.createTransactionPorts(tx, events);
65
82
  return work(txPorts);
66
- }, options.transactionConfig);
83
+ }, options.transactionConfig));
67
84
  if (options.eventBus) {
68
85
  await events.flush(options.eventBus);
69
86
  }
@@ -140,6 +157,10 @@ function createSqliteExecutor(db, table) {
140
157
  return db.all(query);
141
158
  },
142
159
  async row(query) {
160
+ if ("all" in db && typeof db.all === "function") {
161
+ const rows = await db.all(query);
162
+ return rows[0];
163
+ }
143
164
  return db.get(query);
144
165
  },
145
166
  async run(query) {
@@ -147,7 +168,7 @@ function createSqliteExecutor(db, table) {
147
168
  },
148
169
  withTransaction(fn) {
149
170
  if ("transaction" in db && typeof db.transaction === "function") {
150
- return db.transaction((tx) => fn(createSqliteExecutor(tx, table)));
171
+ return runSerializedSqliteTransaction(db, () => db.transaction((tx) => fn(createSqliteExecutor(tx, table))));
151
172
  }
152
173
  return undefined;
153
174
  },
@@ -196,6 +217,17 @@ export function createDrizzleSqliteOutboxPort(db, adapterOptions = {}) {
196
217
  const executor = createSqliteExecutor(db, table);
197
218
  return createOutboxPortCore(executor, { now: adapterOptions.now });
198
219
  }
220
+ /**
221
+ * Create a Beignet outbox admin port backed by a Drizzle SQLite database.
222
+ *
223
+ * Wire this only into operational contexts that need to inspect, requeue,
224
+ * purge, or prune outbox messages.
225
+ */
226
+ export function createDrizzleSqliteOutboxAdminPort(db, adapterOptions = {}) {
227
+ const table = sql.raw(quoteIdentifier(adapterOptions.tableName ?? "outbox_messages", '"'));
228
+ const executor = createSqliteExecutor(db, table);
229
+ return createOutboxAdminPortCore(executor, { now: adapterOptions.now });
230
+ }
199
231
  /**
200
232
  * Error thrown when `complete(...)` or `fail(...)` does not match an
201
233
  * in-progress idempotency reservation with the provided fingerprint.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beignet/provider-db-drizzle",
3
- "version": "0.0.32",
3
+ "version": "0.0.33",
4
4
  "type": "module",
5
5
  "description": "Drizzle ORM database providers for Beignet — typed DbPort, unit of work, audit logs, outbox, and idempotency for SQLite (libSQL/Turso), Postgres, and MySQL.",
6
6
  "exports": {
@@ -160,6 +160,13 @@ the current transaction unless rebuilt from `tx`.
160
160
  `drizzle`.
161
161
  - Operational ports must be rebuilt from `tx` when they need to commit with
162
162
  the business write.
163
+ - SQLite is a single-writer backend. Beignet queues its own Unit of Work,
164
+ outbox-claim, and idempotency-reservation transactions per Drizzle client,
165
+ but that coordination is process-local. Use Postgres or MySQL for outbox
166
+ workers distributed across multiple hosts.
167
+ - MySQL retries deadlock victims only for Beignet-owned outbox-claim and
168
+ idempotency-reservation transactions, with eight bounded attempts. It does
169
+ not retry app-owned Unit of Work callbacks.
163
170
 
164
171
  ## Operational Ports
165
172
 
@@ -28,7 +28,7 @@
28
28
  */
29
29
 
30
30
  import type { IdempotencyPort } from "@beignet/core/idempotency";
31
- import type { OutboxPort } from "@beignet/core/outbox";
31
+ import type { OutboxAdminPort, OutboxPort } from "@beignet/core/outbox";
32
32
  import {
33
33
  type AuditLogPort,
34
34
  type BufferedDomainEventRecorder,
@@ -67,6 +67,7 @@ import {
67
67
  import { quoteIdentifier } from "../shared/identifiers.js";
68
68
  import { createDbQueryLogger } from "../shared/instrumentation.js";
69
69
  import {
70
+ createOutboxAdminPortCore,
70
71
  createOutboxPortCore,
71
72
  type OutboxSqlExecutor,
72
73
  type SqlExecutorBase,
@@ -285,6 +286,39 @@ function isDuplicateKeyError(error: unknown): boolean {
285
286
  return false;
286
287
  }
287
288
 
289
+ /**
290
+ * Detect an InnoDB deadlock victim through Drizzle's error cause chain.
291
+ */
292
+ function isMysqlDeadlockError(error: unknown): boolean {
293
+ for (
294
+ let current = error;
295
+ current !== null && typeof current === "object";
296
+ current = (current as { cause?: unknown }).cause
297
+ ) {
298
+ const candidate = current as { errno?: unknown; code?: unknown };
299
+ if (candidate.errno === 1213 || candidate.code === "ER_LOCK_DEADLOCK") {
300
+ return true;
301
+ }
302
+ }
303
+ return false;
304
+ }
305
+
306
+ async function runMysqlInternalTransaction<Result>(
307
+ transaction: () => Promise<Result>,
308
+ ): Promise<Result> {
309
+ const maxAttempts = 8;
310
+ for (let attempt = 1; ; attempt += 1) {
311
+ try {
312
+ return await transaction();
313
+ } catch (error) {
314
+ if (!isMysqlDeadlockError(error) || attempt >= maxAttempts) {
315
+ throw error;
316
+ }
317
+ await new Promise((resolve) => setTimeout(resolve, attempt));
318
+ }
319
+ }
320
+ }
321
+
288
322
  /**
289
323
  * MySQL executor implementing both the outbox and idempotency seams of the
290
324
  * shared database cores.
@@ -348,8 +382,13 @@ function createMysqlExecutor<TSchema extends Record<string, unknown>>(
348
382
 
349
383
  withTransaction(fn) {
350
384
  if ("transaction" in db && typeof db.transaction === "function") {
351
- return db.transaction((tx) =>
352
- fn(createMysqlExecutor(tx as DrizzleMysqlDatabase<TSchema>, table)),
385
+ // Outbox claims and idempotency reservations are small Beignet-owned
386
+ // transactions with no app callbacks. Retrying a deadlock victim is
387
+ // therefore safe and lets contenders classify against the winner.
388
+ return runMysqlInternalTransaction(() =>
389
+ db.transaction((tx) =>
390
+ fn(createMysqlExecutor(tx as DrizzleMysqlDatabase<TSchema>, table)),
391
+ ),
353
392
  );
354
393
  }
355
394
 
@@ -497,6 +536,26 @@ export function createDrizzleMysqlOutboxPort<
497
536
  return createOutboxPortCore(executor, { now: adapterOptions.now });
498
537
  }
499
538
 
539
+ /**
540
+ * Create a Beignet outbox admin port backed by a Drizzle MySQL database.
541
+ *
542
+ * Wire this only into operational contexts that need to inspect, requeue,
543
+ * purge, or prune outbox messages.
544
+ */
545
+ export function createDrizzleMysqlOutboxAdminPort<
546
+ TSchema extends Record<string, unknown>,
547
+ >(
548
+ db: DrizzleMysqlDatabase<TSchema>,
549
+ adapterOptions: DrizzleMysqlOutboxOptions = {},
550
+ ): OutboxAdminPort {
551
+ const table = sql.raw(
552
+ quoteIdentifier(adapterOptions.tableName ?? "outbox_messages", "`"),
553
+ );
554
+ const executor: OutboxSqlExecutor = createMysqlExecutor(db, table);
555
+
556
+ return createOutboxAdminPortCore(executor, { now: adapterOptions.now });
557
+ }
558
+
500
559
  /**
501
560
  * Options for a Drizzle MySQL-backed idempotency port.
502
561
  */
@@ -28,7 +28,7 @@
28
28
  */
29
29
 
30
30
  import type { IdempotencyPort } from "@beignet/core/idempotency";
31
- import type { OutboxPort } from "@beignet/core/outbox";
31
+ import type { OutboxAdminPort, OutboxPort } from "@beignet/core/outbox";
32
32
  import {
33
33
  type AuditLogPort,
34
34
  type BufferedDomainEventRecorder,
@@ -65,6 +65,7 @@ import {
65
65
  import { quoteIdentifier } from "../shared/identifiers.js";
66
66
  import { createDbQueryLogger } from "../shared/instrumentation.js";
67
67
  import {
68
+ createOutboxAdminPortCore,
68
69
  createOutboxPortCore,
69
70
  type OutboxSqlExecutor,
70
71
  type SqlExecutorBase,
@@ -443,6 +444,26 @@ export function createDrizzlePostgresOutboxPort<
443
444
  return createOutboxPortCore(executor, { now: adapterOptions.now });
444
445
  }
445
446
 
447
+ /**
448
+ * Create a Beignet outbox admin port backed by a Drizzle Postgres database.
449
+ *
450
+ * Wire this only into operational contexts that need to inspect, requeue,
451
+ * purge, or prune outbox messages.
452
+ */
453
+ export function createDrizzlePostgresOutboxAdminPort<
454
+ TSchema extends Record<string, unknown>,
455
+ >(
456
+ db: DrizzlePostgresDatabase<TSchema>,
457
+ adapterOptions: DrizzlePostgresOutboxOptions = {},
458
+ ): OutboxAdminPort {
459
+ const table = sql.raw(
460
+ quoteIdentifier(adapterOptions.tableName ?? "outbox_messages", '"'),
461
+ );
462
+ const executor: OutboxSqlExecutor = createPostgresExecutor(db, table);
463
+
464
+ return createOutboxAdminPortCore(executor, { now: adapterOptions.now });
465
+ }
466
+
446
467
  /**
447
468
  * Options for a Drizzle Postgres-backed idempotency port.
448
469
  */
@@ -175,11 +175,15 @@ export function createIdempotencyPortCore(
175
175
  const expiresAt = resolveIdempotencyExpiresAt(input.ttlSec, now);
176
176
  const storageKey = createIdempotencyStorageKey(input);
177
177
  const scopeKey = normalizeIdempotencyScope(input.scope);
178
-
179
- await tx.run(sql`delete from ${tx.table}
180
- where storage_key = ${storageKey}
181
- and expires_at is not null
182
- and expires_at <= ${nowIso}`);
178
+ const reserved = (): IdempotencyReservation => ({
179
+ status: "reserved",
180
+ namespace: input.namespace,
181
+ key: input.key,
182
+ scopeKey,
183
+ fingerprint: input.fingerprint,
184
+ reservedAt: now,
185
+ expiresAt,
186
+ });
183
187
 
184
188
  const rowsAffected = await tx.run(sql`${tx.insertPrefix} ${tx.table} (
185
189
  storage_key,
@@ -208,15 +212,30 @@ export function createIdempotencyPortCore(
208
212
  )${tx.insertConflictSuffix}`);
209
213
 
210
214
  if (rowsAffected === undefined || rowsAffected > 0) {
211
- return {
212
- status: "reserved",
213
- namespace: input.namespace,
214
- key: input.key,
215
- scopeKey,
216
- fingerprint: input.fingerprint,
217
- reservedAt: now,
218
- expiresAt,
219
- };
215
+ return reserved();
216
+ }
217
+
218
+ // Reset an expired reservation in place after the insert conflict. Doing
219
+ // this after the insert avoids MySQL gap-lock deadlocks when several
220
+ // transactions reserve the same previously missing storage key.
221
+ const expiredRowsAffected = await tx.run(sql`update ${tx.table}
222
+ set
223
+ namespace = ${input.namespace},
224
+ idempotency_key = ${input.key},
225
+ scope_key = ${scopeKey},
226
+ fingerprint = ${input.fingerprint},
227
+ status = 'in-progress',
228
+ result_json = null,
229
+ reserved_at = ${nowIso},
230
+ completed_at = null,
231
+ expires_at = ${expiresAt ? encodeTimestamp(expiresAt) : null},
232
+ updated_at = ${nowIso}
233
+ where storage_key = ${storageKey}
234
+ and expires_at is not null
235
+ and expires_at <= ${nowIso}`);
236
+
237
+ if (expiredRowsAffected !== undefined && expiredRowsAffected > 0) {
238
+ return reserved();
220
239
  }
221
240
 
222
241
  const row = (await tx.row(