@beignet/provider-db-drizzle 0.0.56 → 0.0.57
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 +10 -0
- package/README.md +15 -1
- package/dist/postgres/index.d.ts.map +1 -1
- package/dist/postgres/index.js +32 -3
- package/dist/postgres/index.js.map +1 -1
- package/dist/sqlite/index.d.ts +1 -1
- package/dist/sqlite/index.d.ts.map +1 -1
- package/dist/sqlite/index.js +36 -6
- package/dist/sqlite/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/database-provider/SKILL.md +8 -1
- package/src/postgres/index.ts +36 -2
- package/src/sqlite/index.ts +42 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @beignet/provider-db-drizzle
|
|
2
2
|
|
|
3
|
+
## 0.0.57
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 868c18e: Keep undeclared query parameters out of route binder input and declare the
|
|
8
|
+
starter's pagination query transport. Align client examples with its query arguments. Preserve app-owned test helpers during
|
|
9
|
+
generation after formatting or customization. Reject SQLite root transaction
|
|
10
|
+
reentry without hanging, keep transaction-scoped operations atomic, and handle
|
|
11
|
+
Postgres idle pool errors through provider observability with lifecycle cleanup.
|
|
12
|
+
|
|
3
13
|
## 0.0.56
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -470,11 +470,25 @@ non-idempotent work. Use the outbox for durable follow-up work.
|
|
|
470
470
|
|
|
471
471
|
SQLite permits one writer at a time. The SQLite adapter therefore queues
|
|
472
472
|
Beignet-owned Unit of Work, root outbox-claim, and root idempotency-reservation
|
|
473
|
-
transactions per
|
|
473
|
+
transactions per libSQL client instead of leaking local `SQLITE_BUSY` errors
|
|
474
474
|
under concurrent requests. This is process-local coordination for SQLite's
|
|
475
475
|
single-writer model, not a multi-host worker strategy; use Postgres or MySQL for
|
|
476
476
|
distributed worker fleets.
|
|
477
477
|
|
|
478
|
+
Inside a SQLite Unit of Work, use the transaction-scoped ports created from
|
|
479
|
+
the callback's Drizzle transaction. They execute in the existing transaction.
|
|
480
|
+
Calling a root-bound reservation, outbox claim, or another root Unit of Work
|
|
481
|
+
on the same client from inside that transaction rejects immediately with a
|
|
482
|
+
message directing you to the transaction-scoped ports. It cannot wait for
|
|
483
|
+
the outer transaction to finish while that transaction is awaiting it.
|
|
484
|
+
|
|
485
|
+
The Postgres provider handles idle pool `error` events while installed. It
|
|
486
|
+
records `db.pool.error` instrumentation, reports the exception through an
|
|
487
|
+
available `errorReporter`, and logs through an available `logger` (or the
|
|
488
|
+
console). Stopping the provider removes its listener after an owned pool has
|
|
489
|
+
drained; existing app listeners remain. Apps retain responsibility for error
|
|
490
|
+
handling on injected pools outside the provider's installed lifetime.
|
|
491
|
+
|
|
478
492
|
MySQL can choose a transaction as an InnoDB deadlock victim during heavy
|
|
479
493
|
contention. The MySQL adapter retries only Beignet-owned outbox-claim and
|
|
480
494
|
idempotency-reservation transactions, up to eight attempts with exponential
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;
|
|
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
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
* const todos = createDrizzleTodoRepository(ctx.ports.db.drizzle);
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
+
import { tryReportException, } from "@beignet/core/error-reporting";
|
|
29
30
|
import { createDomainEventRecorder, } from "@beignet/core/ports";
|
|
30
31
|
import { createProvider, createProviderInstrumentation, } from "@beignet/core/providers";
|
|
31
32
|
import { sql } from "drizzle-orm";
|
|
@@ -322,12 +323,40 @@ function createDrizzlePostgresProviderImplementation(options) {
|
|
|
322
323
|
pool,
|
|
323
324
|
checkHealth: () => checkPostgresHealth(pool),
|
|
324
325
|
};
|
|
326
|
+
const observability = ports;
|
|
327
|
+
const onPoolError = (error) => {
|
|
328
|
+
const message = "Postgres pool lost an idle connection";
|
|
329
|
+
const details = { providerName: "drizzle-postgres", portName };
|
|
330
|
+
instrumentation.custom({
|
|
331
|
+
name: "db.pool.error",
|
|
332
|
+
label: "Database pool error",
|
|
333
|
+
summary: message,
|
|
334
|
+
details,
|
|
335
|
+
});
|
|
336
|
+
void tryReportException({
|
|
337
|
+
reporter: observability.errorReporter,
|
|
338
|
+
error,
|
|
339
|
+
reportOptions: { tags: details },
|
|
340
|
+
});
|
|
341
|
+
try {
|
|
342
|
+
if (observability.logger) {
|
|
343
|
+
observability.logger.error(message, { ...details, error });
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
console.error(message, error);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
// An observability failure must not turn a pool error into a crash.
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
pool.on("error", onPoolError);
|
|
325
354
|
return {
|
|
326
355
|
ports: { [portName]: dbPort },
|
|
327
356
|
async stop() {
|
|
328
|
-
if (
|
|
329
|
-
|
|
330
|
-
|
|
357
|
+
if (closeOnStop)
|
|
358
|
+
await pool.end();
|
|
359
|
+
pool.off("error", onPoolError);
|
|
331
360
|
},
|
|
332
361
|
};
|
|
333
362
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"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"}
|
package/dist/sqlite/index.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ import { type AnyProviderConfigSchema, type ServiceProvider } from "@beignet/cor
|
|
|
35
35
|
import { type Client } from "@libsql/client";
|
|
36
36
|
import { type ExtractTablesWithRelations } from "drizzle-orm";
|
|
37
37
|
import { type LibSQLDatabase } from "drizzle-orm/libsql";
|
|
38
|
-
import
|
|
38
|
+
import { LibSQLTransaction } from "drizzle-orm/libsql/session";
|
|
39
39
|
import type { SQLiteTransactionConfig } from "drizzle-orm/sqlite-core";
|
|
40
40
|
import { type DrizzleAuditLogCoreOptions } from "../shared/audit-core.js";
|
|
41
41
|
import { type DbHealth } from "../shared/health.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"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"}
|
package/dist/sqlite/index.js
CHANGED
|
@@ -28,11 +28,13 @@
|
|
|
28
28
|
* const todos = createDrizzleTodoRepository(ctx.ports.db.drizzle);
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
31
32
|
import { createDomainEventRecorder, } from "@beignet/core/ports";
|
|
32
33
|
import { createProvider, createProviderInstrumentation, } from "@beignet/core/providers";
|
|
33
34
|
import { createClient } from "@libsql/client";
|
|
34
35
|
import { sql } from "drizzle-orm";
|
|
35
36
|
import { drizzle } from "drizzle-orm/libsql";
|
|
37
|
+
import { LibSQLTransaction } from "drizzle-orm/libsql/session";
|
|
36
38
|
import { z } from "zod";
|
|
37
39
|
import { createAuditLogInsertQuery, createAuditLogSqlRow, } from "../shared/audit-core.js";
|
|
38
40
|
import { dbHealthError, dbHealthOk } from "../shared/health.js";
|
|
@@ -41,19 +43,44 @@ import { quoteIdentifier } from "../shared/identifiers.js";
|
|
|
41
43
|
import { createDbQueryLogger } from "../shared/instrumentation.js";
|
|
42
44
|
import { createOutboxAdminPortCore, createOutboxPortCore, } from "../shared/outbox-core.js";
|
|
43
45
|
const sqliteTransactionTails = new WeakMap();
|
|
46
|
+
const sqliteTransactions = new AsyncLocalStorage();
|
|
47
|
+
function sqliteTransactionKey(db) {
|
|
48
|
+
return "$client" in db &&
|
|
49
|
+
typeof db.$client === "object" &&
|
|
50
|
+
db.$client !== null
|
|
51
|
+
? db.$client
|
|
52
|
+
: db;
|
|
53
|
+
}
|
|
44
54
|
/**
|
|
45
|
-
* Queue Beignet-owned transactions per
|
|
55
|
+
* Queue Beignet-owned transactions per libSQL client. SQLite only permits one
|
|
46
56
|
* writer at a time, while the local libSQL driver otherwise exposes concurrent
|
|
47
57
|
* transaction attempts as SQLITE_BUSY instead of waiting for the active write.
|
|
48
58
|
*/
|
|
49
59
|
function runSerializedSqliteTransaction(db, transaction) {
|
|
50
|
-
const
|
|
51
|
-
const
|
|
60
|
+
const key = sqliteTransactionKey(db);
|
|
61
|
+
const parents = sqliteTransactions.getStore();
|
|
62
|
+
if (parents?.get(key)?.active) {
|
|
63
|
+
return Promise.reject(new Error("Cannot start a root SQLite transaction inside an active transaction on the same client. Use the transaction-scoped ports passed to the Unit of Work callback."));
|
|
64
|
+
}
|
|
65
|
+
const previous = sqliteTransactionTails.get(key) ?? Promise.resolve();
|
|
66
|
+
const result = previous.then(() => {
|
|
67
|
+
const scope = { active: true };
|
|
68
|
+
const transactions = new Map(parents);
|
|
69
|
+
transactions.set(key, scope);
|
|
70
|
+
return sqliteTransactions.run(transactions, async () => {
|
|
71
|
+
try {
|
|
72
|
+
return await transaction();
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
scope.active = false;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
52
79
|
const tail = result.then(() => undefined, () => undefined);
|
|
53
|
-
sqliteTransactionTails.set(
|
|
80
|
+
sqliteTransactionTails.set(key, tail);
|
|
54
81
|
return result.finally(() => {
|
|
55
|
-
if (sqliteTransactionTails.get(
|
|
56
|
-
sqliteTransactionTails.delete(
|
|
82
|
+
if (sqliteTransactionTails.get(key) === tail) {
|
|
83
|
+
sqliteTransactionTails.delete(key);
|
|
57
84
|
}
|
|
58
85
|
});
|
|
59
86
|
}
|
|
@@ -167,6 +194,9 @@ function createSqliteExecutor(db, table) {
|
|
|
167
194
|
return readRowsAffected(await db.run(query));
|
|
168
195
|
},
|
|
169
196
|
withTransaction(fn) {
|
|
197
|
+
if (db instanceof LibSQLTransaction) {
|
|
198
|
+
return fn(createSqliteExecutor(db, table));
|
|
199
|
+
}
|
|
170
200
|
if ("transaction" in db && typeof db.transaction === "function") {
|
|
171
201
|
return runSerializedSqliteTransaction(db, () => db.transaction((tx) => fn(createSqliteExecutor(tx, table))));
|
|
172
202
|
}
|
package/dist/sqlite/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;
|
|
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.
|
|
3
|
+
"version": "0.0.57",
|
|
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": {
|
|
@@ -198,9 +198,16 @@ the current transaction unless rebuilt from `tx`.
|
|
|
198
198
|
- Operational ports must be rebuilt from `tx` when they need to commit with
|
|
199
199
|
the business write.
|
|
200
200
|
- SQLite is a single-writer backend. Beignet queues its own Unit of Work,
|
|
201
|
-
outbox-claim, and idempotency-reservation transactions per
|
|
201
|
+
outbox-claim, and idempotency-reservation transactions per libSQL client,
|
|
202
202
|
but that coordination is process-local. Use Postgres or MySQL for outbox
|
|
203
203
|
workers distributed across multiple hosts.
|
|
204
|
+
- Inside a SQLite Unit of Work, use ports built from `tx`. Root-bound
|
|
205
|
+
reservations, claims, and nested root transactions on that client reject
|
|
206
|
+
immediately; transaction-scoped ports use the existing transaction.
|
|
207
|
+
- Postgres providers handle idle pool errors while installed, emitting
|
|
208
|
+
`db.pool.error` and using available logger/error-reporter ports. Stopping
|
|
209
|
+
removes only the provider's listener, after draining owned pools. Shared
|
|
210
|
+
pools need app-owned error handling outside that lifetime.
|
|
204
211
|
- MySQL retries deadlock victims only for Beignet-owned outbox-claim and
|
|
205
212
|
idempotency-reservation transactions, with eight bounded attempts. It does
|
|
206
213
|
not retry app-owned Unit of Work callbacks.
|
package/src/postgres/index.ts
CHANGED
|
@@ -27,6 +27,10 @@
|
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
+
import {
|
|
31
|
+
type ErrorReporterPort,
|
|
32
|
+
tryReportException,
|
|
33
|
+
} from "@beignet/core/error-reporting";
|
|
30
34
|
import type { IdempotencyPort } from "@beignet/core/idempotency";
|
|
31
35
|
import type { OutboxAdminPort, OutboxPort } from "@beignet/core/outbox";
|
|
32
36
|
import {
|
|
@@ -34,6 +38,7 @@ import {
|
|
|
34
38
|
type BufferedDomainEventRecorder,
|
|
35
39
|
createDomainEventRecorder,
|
|
36
40
|
type EventBusPort,
|
|
41
|
+
type LoggerPort,
|
|
37
42
|
type UnitOfWorkCallback,
|
|
38
43
|
type UnitOfWorkPort,
|
|
39
44
|
} from "@beignet/core/ports";
|
|
@@ -746,12 +751,41 @@ function createDrizzlePostgresProviderImplementation<
|
|
|
746
751
|
pool,
|
|
747
752
|
checkHealth: () => checkPostgresHealth(pool),
|
|
748
753
|
};
|
|
754
|
+
const observability = ports as {
|
|
755
|
+
logger?: LoggerPort;
|
|
756
|
+
errorReporter?: ErrorReporterPort;
|
|
757
|
+
};
|
|
758
|
+
const onPoolError = (error: Error) => {
|
|
759
|
+
const message = "Postgres pool lost an idle connection";
|
|
760
|
+
const details = { providerName: "drizzle-postgres", portName };
|
|
761
|
+
instrumentation.custom({
|
|
762
|
+
name: "db.pool.error",
|
|
763
|
+
label: "Database pool error",
|
|
764
|
+
summary: message,
|
|
765
|
+
details,
|
|
766
|
+
});
|
|
767
|
+
void tryReportException({
|
|
768
|
+
reporter: observability.errorReporter,
|
|
769
|
+
error,
|
|
770
|
+
reportOptions: { tags: details },
|
|
771
|
+
});
|
|
772
|
+
try {
|
|
773
|
+
if (observability.logger) {
|
|
774
|
+
observability.logger.error(message, { ...details, error });
|
|
775
|
+
} else {
|
|
776
|
+
console.error(message, error);
|
|
777
|
+
}
|
|
778
|
+
} catch {
|
|
779
|
+
// An observability failure must not turn a pool error into a crash.
|
|
780
|
+
}
|
|
781
|
+
};
|
|
782
|
+
pool.on("error", onPoolError);
|
|
749
783
|
|
|
750
784
|
return {
|
|
751
785
|
ports: { [portName]: dbPort } as Record<PortName, DbPort<TSchema>>,
|
|
752
786
|
async stop() {
|
|
753
|
-
if (
|
|
754
|
-
|
|
787
|
+
if (closeOnStop) await pool.end();
|
|
788
|
+
pool.off("error", onPoolError);
|
|
755
789
|
},
|
|
756
790
|
};
|
|
757
791
|
};
|
package/src/sqlite/index.ts
CHANGED
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
31
|
|
|
32
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
32
33
|
import type { IdempotencyPort } from "@beignet/core/idempotency";
|
|
33
34
|
import type { OutboxAdminPort, OutboxPort } from "@beignet/core/outbox";
|
|
34
35
|
import {
|
|
@@ -49,7 +50,7 @@ import {
|
|
|
49
50
|
import { type Client, createClient } from "@libsql/client";
|
|
50
51
|
import { type ExtractTablesWithRelations, type SQL, sql } from "drizzle-orm";
|
|
51
52
|
import { drizzle, type LibSQLDatabase } from "drizzle-orm/libsql";
|
|
52
|
-
import
|
|
53
|
+
import { LibSQLTransaction } from "drizzle-orm/libsql/session";
|
|
53
54
|
import type { SQLiteTransactionConfig } from "drizzle-orm/sqlite-core";
|
|
54
55
|
import { z } from "zod";
|
|
55
56
|
import {
|
|
@@ -121,9 +122,20 @@ export type DrizzleSqliteTransaction<
|
|
|
121
122
|
> = LibSQLTransaction<TSchema, ExtractTablesWithRelations<TSchema>>;
|
|
122
123
|
|
|
123
124
|
const sqliteTransactionTails = new WeakMap<object, Promise<void>>();
|
|
125
|
+
const sqliteTransactions = new AsyncLocalStorage<
|
|
126
|
+
ReadonlyMap<object, { active: boolean }>
|
|
127
|
+
>();
|
|
128
|
+
|
|
129
|
+
function sqliteTransactionKey(db: object): object {
|
|
130
|
+
return "$client" in db &&
|
|
131
|
+
typeof db.$client === "object" &&
|
|
132
|
+
db.$client !== null
|
|
133
|
+
? db.$client
|
|
134
|
+
: db;
|
|
135
|
+
}
|
|
124
136
|
|
|
125
137
|
/**
|
|
126
|
-
* Queue Beignet-owned transactions per
|
|
138
|
+
* Queue Beignet-owned transactions per libSQL client. SQLite only permits one
|
|
127
139
|
* writer at a time, while the local libSQL driver otherwise exposes concurrent
|
|
128
140
|
* transaction attempts as SQLITE_BUSY instead of waiting for the active write.
|
|
129
141
|
*/
|
|
@@ -131,17 +143,37 @@ function runSerializedSqliteTransaction<Result>(
|
|
|
131
143
|
db: object,
|
|
132
144
|
transaction: () => Promise<Result>,
|
|
133
145
|
): Promise<Result> {
|
|
134
|
-
const
|
|
135
|
-
const
|
|
146
|
+
const key = sqliteTransactionKey(db);
|
|
147
|
+
const parents = sqliteTransactions.getStore();
|
|
148
|
+
if (parents?.get(key)?.active) {
|
|
149
|
+
return Promise.reject(
|
|
150
|
+
new Error(
|
|
151
|
+
"Cannot start a root SQLite transaction inside an active transaction on the same client. Use the transaction-scoped ports passed to the Unit of Work callback.",
|
|
152
|
+
),
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
const previous = sqliteTransactionTails.get(key) ?? Promise.resolve();
|
|
156
|
+
const result = previous.then(() => {
|
|
157
|
+
const scope = { active: true };
|
|
158
|
+
const transactions = new Map(parents);
|
|
159
|
+
transactions.set(key, scope);
|
|
160
|
+
return sqliteTransactions.run(transactions, async () => {
|
|
161
|
+
try {
|
|
162
|
+
return await transaction();
|
|
163
|
+
} finally {
|
|
164
|
+
scope.active = false;
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
});
|
|
136
168
|
const tail = result.then(
|
|
137
169
|
() => undefined,
|
|
138
170
|
() => undefined,
|
|
139
171
|
);
|
|
140
|
-
sqliteTransactionTails.set(
|
|
172
|
+
sqliteTransactionTails.set(key, tail);
|
|
141
173
|
|
|
142
174
|
return result.finally(() => {
|
|
143
|
-
if (sqliteTransactionTails.get(
|
|
144
|
-
sqliteTransactionTails.delete(
|
|
175
|
+
if (sqliteTransactionTails.get(key) === tail) {
|
|
176
|
+
sqliteTransactionTails.delete(key);
|
|
145
177
|
}
|
|
146
178
|
});
|
|
147
179
|
}
|
|
@@ -374,6 +406,9 @@ function createSqliteExecutor<TSchema extends Record<string, unknown>>(
|
|
|
374
406
|
},
|
|
375
407
|
|
|
376
408
|
withTransaction(fn) {
|
|
409
|
+
if (db instanceof LibSQLTransaction) {
|
|
410
|
+
return fn(createSqliteExecutor(db, table));
|
|
411
|
+
}
|
|
377
412
|
if ("transaction" in db && typeof db.transaction === "function") {
|
|
378
413
|
return runSerializedSqliteTransaction(db, () =>
|
|
379
414
|
db.transaction((tx) =>
|