@dbos-inc/drizzle-datasource 5.2.10-preview → 5.3.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAQ,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAUL,cAAc,EAEd,0BAA0B,EAK3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAW,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ1D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,GAAG,YAAY,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAY/G,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAyND,qBAAa,iBAAiB,CAAC,EAAE,GAAG,cAAc,CAAC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAC3E,YAAW,cAAc,CAAC,iBAAiB,CAAC;;IA0D1C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAzCvB,MAAM,KAAK,MAAM;;OAEhB;IAED,IAAI,MAAM,OAET;IAED;;;;OAIG;WACU,oBAAoB,CAC/B,cAAc,EAAE,YAAY,GAAG,MAAM,GAAG,UAAU,EAClD,UAAU,GAAE,MAAe,EAC3B,OAAO,GAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAO,GACzC,OAAO,CAAC,IAAI,CAAC;gBAwBL,IAAI,EAAE,MAAM,EACrB,YAAY,EAAE,UAAU,GAAG,IAAI,EAC/B,QAAQ,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAO,EACxC,UAAU,GAAE,MAAe,EAC3B,OAAO,GAAE,0BAA+B;IAMpC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,iBAAiB;IAI1E,mBAAmB,CAAC,IAAI,EAAE,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM,EACtD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,EACpD,MAAM,CAAC,EAAE,iBAAiB,GAAG,YAAY,GACxC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;IAKjD,WAAW,CAAC,MAAM,CAAC,EAAE,iBAAiB,kDAI1B,MAAM,eACD,WAAW,cACZ,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,QAAQ,MAAM,CAAC,CAAC,oCAAxC,IAAI,WAAW,IAAI,KAAK,QAAQ,MAAM,CAAC;CAevF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAQ,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAUL,cAAc,EAEd,0BAA0B,EAM3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAW,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ1D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,GAAG,YAAY,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAY/G,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AA4ND,qBAAa,iBAAiB,CAAC,EAAE,GAAG,cAAc,CAAC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAC3E,YAAW,cAAc,CAAC,iBAAiB,CAAC;;IA0D1C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAzCvB,MAAM,KAAK,MAAM;;OAEhB;IAED,IAAI,MAAM,OAET;IAED;;;;OAIG;WACU,oBAAoB,CAC/B,cAAc,EAAE,YAAY,GAAG,MAAM,GAAG,UAAU,EAClD,UAAU,GAAE,MAAe,EAC3B,OAAO,GAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAO,GACzC,OAAO,CAAC,IAAI,CAAC;gBAwBL,IAAI,EAAE,MAAM,EACrB,YAAY,EAAE,UAAU,GAAG,IAAI,EAC/B,QAAQ,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAO,EACxC,UAAU,GAAE,MAAe,EAC3B,OAAO,GAAE,0BAA+B;IAMpC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,iBAAiB;IAI1E,mBAAmB,CAAC,IAAI,EAAE,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM,EACtD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,EACpD,MAAM,CAAC,EAAE,iBAAiB,GAAG,YAAY,GACxC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;IAKjD,WAAW,CAAC,MAAM,CAAC,EAAE,iBAAiB,kDAI1B,MAAM,eACD,WAAW,cACZ,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,QAAQ,MAAM,CAAC,CAAC,oCAAxC,IAAI,WAAW,IAAI,KAAK,QAAQ,MAAM,CAAC;CAevF"}
package/dist/index.js CHANGED
@@ -34,6 +34,9 @@ class DrizzleTransactionHandler {
34
34
  async initialize() {
35
35
  const conn = this.#connection;
36
36
  const driver = this.configOrPool instanceof pg_1.Pool ? this.configOrPool : new pg_1.Pool(this.configOrPool);
37
+ if (!this.#userProvidedPool) {
38
+ (0, datasource_1.guardDataSourcePoolPG)(driver, 'DrizzleDataSource');
39
+ }
37
40
  const db = (0, node_postgres_1.drizzle)({ client: driver, schema: this.entities });
38
41
  this.#connection = { db, end: this.#userProvidedPool ? async () => { } : () => driver.end() };
39
42
  await conn?.end();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dbos-inc/drizzle-datasource",
3
- "version": "5.2.10-preview",
3
+ "version": "5.3.0",
4
4
  "description": "DBOS DataSource library for Drizzle ORM with PostgreSQL support",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
package/index.ts DELETED
@@ -1,368 +0,0 @@
1
- import { Client, ClientConfig, Pool, PoolClient, PoolConfig } from 'pg';
2
- import { DBOS, FunctionName } from '@dbos-inc/dbos-sdk';
3
- import {
4
- type DataSourceTransactionHandler,
5
- isPGRetriableTransactionError,
6
- DBOSError,
7
- DBOSStepAlreadyRecordedError,
8
- DBOSWorkflowConflictError,
9
- assertStillOwnsWorkflow,
10
- replayRecordedStep,
11
- registerTransaction,
12
- runTransaction,
13
- DBOSDataSource,
14
- registerDataSource,
15
- DataSourceMigrationOptions,
16
- DataSourceSQLExecutor,
17
- initializeDataSourceSchemaPG,
18
- migrateDataSourcePG,
19
- verifyDataSourcePG,
20
- } from '@dbos-inc/dbos-sdk/datasource';
21
- import { drizzle, NodePgDatabase } from 'drizzle-orm/node-postgres';
22
- import { AsyncLocalStorage } from 'async_hooks';
23
- import { SuperJSON } from 'superjson';
24
- import { PgTransactionConfig } from 'drizzle-orm/pg-core';
25
- import { sql } from 'drizzle-orm';
26
-
27
- interface DrizzleLocalCtx {
28
- client: NodePgDatabase<{ [key: string]: object }>;
29
- owner: DrizzleTransactionHandler;
30
- }
31
-
32
- export type TransactionConfig = Pick<PgTransactionConfig, 'isolationLevel' | 'accessMode'> & { name?: string };
33
-
34
- const asyncLocalCtx = new AsyncLocalStorage<DrizzleLocalCtx>();
35
-
36
- function drizzleExecutor(db: Pick<NodePgDatabase<{ [key: string]: object }>, 'execute'>): DataSourceSQLExecutor {
37
- return async (text) => (await db.execute<Record<string, unknown>>(sql.raw(text))).rows;
38
- }
39
-
40
- function clientExecutor(client: Pick<Client, 'query'>): DataSourceSQLExecutor {
41
- return async (text) => (await client.query<Record<string, unknown>>(text)).rows;
42
- }
43
-
44
- export interface transaction_completion {
45
- workflow_id: string;
46
- function_num: number;
47
- output: string | null;
48
- error: string | null;
49
- }
50
-
51
- interface DrizzleConnection {
52
- readonly db: NodePgDatabase<{ [key: string]: object }>;
53
- end(): Promise<void>;
54
- }
55
-
56
- class DrizzleTransactionHandler implements DataSourceTransactionHandler {
57
- #connection: DrizzleConnection | undefined;
58
- readonly schemaName: string;
59
- readonly #userProvidedPool: boolean;
60
-
61
- constructor(
62
- readonly name: string,
63
- private readonly configOrPool: PoolConfig | Pool,
64
- private readonly entities: { [key: string]: object } = {},
65
- schemaName: string = 'dbos',
66
- private readonly options: DataSourceMigrationOptions = {},
67
- ) {
68
- this.schemaName = schemaName;
69
- this.#userProvidedPool = configOrPool instanceof Pool;
70
- }
71
-
72
- async initialize(): Promise<void> {
73
- const conn = this.#connection;
74
-
75
- const driver = this.configOrPool instanceof Pool ? this.configOrPool : new Pool(this.configOrPool);
76
- const db = drizzle({ client: driver, schema: this.entities });
77
- this.#connection = { db, end: this.#userProvidedPool ? async () => {} : () => driver.end() };
78
- await conn?.end();
79
-
80
- if (this.options.runMigrations === false) {
81
- await verifyDataSourcePG(drizzleExecutor(db), this.schemaName, this.name);
82
- return;
83
- }
84
-
85
- try {
86
- await db.transaction((tx) => migrateDataSourcePG(drizzleExecutor(tx), this.schemaName));
87
- } catch (err) {
88
- throw new Error(
89
- `In initialization of 'DrizzleDataSource' ${this.name}: The '${this.schemaName}' transaction schema could not be migrated: ${(err as Error).message}. This should be added to your database migrations.
90
- See: https://docs.dbos.dev/typescript/tutorials/transaction-tutorial#installing-the-dbos-schema`,
91
- );
92
- }
93
- }
94
-
95
- async destroy(): Promise<void> {
96
- const conn = this.#connection;
97
-
98
- this.#connection = undefined;
99
-
100
- await conn?.end();
101
- }
102
-
103
- get #drizzle(): NodePgDatabase<{ [key: string]: object }> {
104
- if (!this.#connection) {
105
- throw new Error(`DataSource ${this.name} is not initialized.`);
106
- }
107
- return this.#connection.db;
108
- }
109
-
110
- async deleteCheckpoints(workflowID: string, startStep: number, beforeCommit?: () => Promise<void>): Promise<void> {
111
- await this.#drizzle.transaction(async (client) => {
112
- await client.execute(sql`
113
- DELETE FROM ${sql.identifier(this.schemaName)}.transaction_completion
114
- WHERE workflow_id = ${workflowID} AND function_num >= ${startStep}`);
115
- await beforeCommit?.();
116
- });
117
- }
118
-
119
- async #checkExecution(
120
- workflowID: string,
121
- stepID: number,
122
- ): Promise<{ output: string | null } | { error: string } | undefined> {
123
- type Result = { output: string | null; error: string | null };
124
-
125
- const statement = sql`
126
- SELECT output, error FROM ${sql.identifier(this.schemaName)}.transaction_completion
127
- WHERE workflow_id = ${workflowID} AND function_num = ${stepID}`;
128
- const result = await this.#drizzle.execute<Result>(statement);
129
-
130
- if (result.rows.length !== 1) {
131
- return undefined;
132
- }
133
-
134
- const { output, error } = result.rows[0];
135
- return error !== null ? { error } : { output };
136
- }
137
-
138
- static async #recordOutput(
139
- client: NodePgDatabase<{ [key: string]: object }>,
140
- workflowID: string,
141
- stepID: number,
142
- output: string,
143
- schemaName: string,
144
- ): Promise<void> {
145
- const statement = sql`
146
- INSERT INTO ${sql.identifier(schemaName)}.transaction_completion (workflow_id, function_num, output)
147
- VALUES (${workflowID}, ${stepID}, ${output})
148
- ON CONFLICT (workflow_id, function_num) DO NOTHING
149
- RETURNING workflow_id`;
150
- const { rows } = await client.execute(statement);
151
- if (rows.length === 0) {
152
- throw new DBOSStepAlreadyRecordedError(workflowID, stepID);
153
- }
154
- // Holding this step's row, so a later owner's insert waits on our commit.
155
- await assertStillOwnsWorkflow(workflowID);
156
- }
157
-
158
- async #recordError(workflowID: string, stepID: number, error: string): Promise<void> {
159
- const statement = sql`
160
- INSERT INTO ${sql.identifier(this.schemaName)}.transaction_completion (workflow_id, function_num, error)
161
- VALUES (${workflowID}, ${stepID}, ${error})
162
- ON CONFLICT (workflow_id, function_num) DO NOTHING
163
- RETURNING workflow_id`;
164
- const { rows } = await this.#drizzle.execute(statement);
165
- if (rows.length === 0) {
166
- throw new DBOSStepAlreadyRecordedError(workflowID, stepID);
167
- }
168
- }
169
-
170
- // A duplicate execution won the race, so its recorded outcome is the durable one.
171
- async #replayConflictingStep<Return>(workflowID: string, stepID: number): Promise<Return> {
172
- const recorded = await this.#checkExecution(workflowID, stepID);
173
- if (recorded === undefined) {
174
- throw new DBOSError(
175
- `Step ${stepID} of workflow ${workflowID} conflicted with a concurrent execution, but no recorded outcome was found`,
176
- );
177
- }
178
- return replayRecordedStep<Return>(recorded);
179
- }
180
-
181
- /* Invoke a transaction function, called by the framework */
182
- async invokeTransactionFunction<This, Args extends unknown[], Return>(
183
- config: TransactionConfig | undefined,
184
- target: This,
185
- func: (this: This, ...args: Args) => Promise<Return>,
186
- ...args: Args
187
- ): Promise<Return> {
188
- const workflowID = DBOS.workflowID;
189
- const stepID = DBOS.stepID;
190
- if (workflowID !== undefined && stepID === undefined) {
191
- throw new Error('DBOS.stepID is undefined inside a workflow.');
192
- }
193
-
194
- const readOnly = config?.accessMode === 'read only' ? true : false;
195
- const saveResults = !readOnly && workflowID !== undefined;
196
-
197
- // Retry loop if appropriate
198
- let retryWaitMS = 1;
199
- const backoffFactor = 1.5;
200
- const maxRetryWaitMS = 2000; // Maximum wait 2 seconds.
201
-
202
- while (true) {
203
- // Check to see if this tx has already been executed
204
- const previousResult = saveResults ? await this.#checkExecution(workflowID, stepID!) : undefined;
205
- if (previousResult) {
206
- return replayRecordedStep<Return>(previousResult);
207
- }
208
-
209
- try {
210
- const result = await this.#drizzle.transaction(
211
- async (client) => {
212
- // execute user's transaction function
213
- const result = await asyncLocalCtx.run({ client, owner: this }, async () => {
214
- return await func.call(target, ...args);
215
- });
216
-
217
- // save the output of read/write transactions
218
- if (saveResults) {
219
- await DrizzleTransactionHandler.#recordOutput(
220
- client,
221
- workflowID,
222
- stepID!,
223
- SuperJSON.stringify(result),
224
- this.schemaName,
225
- );
226
- }
227
-
228
- return result;
229
- },
230
- { accessMode: config?.accessMode, isolationLevel: config?.isolationLevel },
231
- );
232
-
233
- return result;
234
- } catch (error) {
235
- if (saveResults && error instanceof DBOSStepAlreadyRecordedError) {
236
- return await this.#replayConflictingStep<Return>(workflowID, stepID!);
237
- }
238
- // The new owner wins; recording an error here would replay it as this step's outcome.
239
- if (error instanceof DBOSWorkflowConflictError) throw error;
240
- if (isPGRetriableTransactionError(error)) {
241
- DBOS.span?.addEvent('TXN SERIALIZATION FAILURE', { retryWaitMillis: retryWaitMS }, performance.now());
242
- // Retry serialization failures.
243
- await new Promise((resolve) => setTimeout(resolve, retryWaitMS));
244
- retryWaitMS = Math.min(retryWaitMS * backoffFactor, maxRetryWaitMS);
245
- continue;
246
- } else {
247
- if (saveResults) {
248
- const message = SuperJSON.stringify(error);
249
- try {
250
- await this.#recordError(workflowID, stepID!, message);
251
- } catch (recordError) {
252
- if (recordError instanceof DBOSStepAlreadyRecordedError) {
253
- return await this.#replayConflictingStep<Return>(workflowID, stepID!);
254
- }
255
- throw recordError;
256
- }
257
- }
258
-
259
- throw error;
260
- }
261
- }
262
- }
263
- }
264
- }
265
-
266
- export class DrizzleDataSource<CT = NodePgDatabase<{ [key: string]: object }>>
267
- implements DBOSDataSource<TransactionConfig>
268
- {
269
- // User calls this... DBOS not directly involved...
270
- static #getClient(p?: DrizzleTransactionHandler): NodePgDatabase<{ [key: string]: object }> {
271
- if (!DBOS.isInTransaction()) {
272
- throw new Error('Invalid use of DrizzleDataSource.client outside of a DBOS transaction');
273
- }
274
- const ctx = asyncLocalCtx.getStore();
275
- if (!ctx) {
276
- throw new Error('Invalid use of DrizzleDataSource.client outside of a DBOS transaction');
277
- }
278
- if (p && p !== ctx.owner) {
279
- throw new Error('Invalid retrieval of `DrizzleDataSource.client` from the incorrect object');
280
- }
281
- return ctx.client;
282
- }
283
-
284
- static get client() {
285
- return DrizzleDataSource.#getClient(undefined);
286
- }
287
-
288
- get client() {
289
- return DrizzleDataSource.#getClient(this.#provider) as CT;
290
- }
291
-
292
- /**
293
- * Create or migrate the DBOS transaction schema, typically with a privileged role,
294
- * optionally granting `applicationRole` the minimal permissions to use it.
295
- * A provided client runs the statements in its current transaction, if any; a config gets a fresh transaction.
296
- */
297
- static async initializeDBOSSchema(
298
- configOrClient: ClientConfig | Client | PoolClient,
299
- schemaName: string = 'dbos',
300
- options: { applicationRole?: string } = {},
301
- ): Promise<void> {
302
- if (typeof configOrClient === 'object' && 'query' in configOrClient) {
303
- await initializeDataSourceSchemaPG(clientExecutor(configOrClient), schemaName, options.applicationRole);
304
- } else {
305
- const client = new Client(configOrClient);
306
- try {
307
- await client.connect();
308
- await client.query('BEGIN');
309
- try {
310
- await initializeDataSourceSchemaPG(clientExecutor(client), schemaName, options.applicationRole);
311
- await client.query('COMMIT');
312
- } catch (err) {
313
- await client.query('ROLLBACK');
314
- throw err;
315
- }
316
- } finally {
317
- await client.end();
318
- }
319
- }
320
- }
321
-
322
- #provider: DrizzleTransactionHandler;
323
-
324
- constructor(
325
- readonly name: string,
326
- configOrPool: PoolConfig | Pool,
327
- entities: { [key: string]: object } = {},
328
- schemaName: string = 'dbos',
329
- options: DataSourceMigrationOptions = {},
330
- ) {
331
- this.#provider = new DrizzleTransactionHandler(name, configOrPool, entities, schemaName, options);
332
- registerDataSource(this.#provider);
333
- }
334
-
335
- async runTransaction<T>(func: () => Promise<T>, config?: TransactionConfig) {
336
- return await runTransaction(func, config?.name ?? func.name, { dsName: this.name, config });
337
- }
338
-
339
- registerTransaction<This, Args extends unknown[], Return>(
340
- func: (this: This, ...args: Args) => Promise<Return>,
341
- config?: TransactionConfig & FunctionName,
342
- ): (this: This, ...args: Args) => Promise<Return> {
343
- return registerTransaction(this.name, func, config);
344
- }
345
-
346
- // decorator
347
- transaction(config?: TransactionConfig) {
348
- // eslint-disable-next-line @typescript-eslint/no-this-alias
349
- const ds = this;
350
- return function decorator<This, Args extends unknown[], Return>(
351
- target: object,
352
- propertyKey: PropertyKey,
353
- descriptor: TypedPropertyDescriptor<(this: This, ...args: Args) => Promise<Return>>,
354
- ) {
355
- if (!descriptor.value) {
356
- throw new Error('Use of decorator when original method is undefined');
357
- }
358
-
359
- descriptor.value = ds.registerTransaction(descriptor.value, {
360
- ...config,
361
- ctorOrProto: target,
362
- name: config?.name ?? String(propertyKey),
363
- });
364
-
365
- return descriptor;
366
- };
367
- }
368
- }
package/jest.config.js DELETED
@@ -1,8 +0,0 @@
1
- /** @type {import('ts-jest').JestConfigWithTsJest} */
2
- module.exports = {
3
- preset: 'ts-jest',
4
- testEnvironment: 'node',
5
- testRegex: '((\\.|/)(test|spec))\\.ts?$',
6
- moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
7
- modulePaths: ['./'],
8
- };
@@ -1,31 +0,0 @@
1
- import { Client } from 'pg';
2
- import { DrizzleDataSource } from '../index';
3
- import { dropDB, ensureDB } from './test-helpers';
4
-
5
- describe('DrizzleDataSource.configure', () => {
6
- const config = { user: 'postgres', database: 'drizzle_ds_config_test' };
7
-
8
- beforeAll(async () => {
9
- const client = new Client({ ...config, database: 'postgres' });
10
- try {
11
- await client.connect();
12
- await dropDB(client, config.database, true);
13
- await ensureDB(client, config.database);
14
- } finally {
15
- await client.end();
16
- }
17
- });
18
-
19
- test('configure creates tx outputs table', async () => {
20
- await DrizzleDataSource.initializeDBOSSchema(config);
21
-
22
- const client = new Client(config);
23
- try {
24
- await client.connect();
25
- const result = await client.query('SELECT workflow_id, function_num, output FROM dbos.transaction_completion');
26
- expect(result.rows.length).toBe(0);
27
- } finally {
28
- await client.end();
29
- }
30
- });
31
- });
@@ -1,130 +0,0 @@
1
- import { DBOS } from '@dbos-inc/dbos-sdk';
2
- import { Client, Pool } from 'pg';
3
- import { DrizzleDataSource } from '..';
4
- import { dropDB, ensureDB } from './test-helpers';
5
- import { randomUUID } from 'crypto';
6
- import { pgTable, text, integer } from 'drizzle-orm/pg-core';
7
- import { sql } from 'drizzle-orm';
8
-
9
- const config = { user: 'postgres', database: 'drizzle_pool_test_userdb' };
10
-
11
- const greetingsTable = pgTable('greetings', {
12
- name: text('name').primaryKey().notNull(),
13
- greet_count: integer('greet_count').default(0),
14
- });
15
-
16
- const customPool = new Pool(config);
17
- const poolDataSource = new DrizzleDataSource('pool-db', customPool);
18
-
19
- async function insertFunction(user: string) {
20
- const result = await poolDataSource.client
21
- .insert(greetingsTable)
22
- .values({ name: user, greet_count: 1 })
23
- .onConflictDoUpdate({
24
- target: greetingsTable.name,
25
- set: {
26
- greet_count: sql`${greetingsTable.greet_count} + 1`,
27
- },
28
- })
29
- .returning({ greet_count: greetingsTable.greet_count });
30
- const row = result.length > 0 ? result[0] : undefined;
31
- return { user, greet_count: row?.greet_count };
32
- }
33
-
34
- const regInsertFunction = poolDataSource.registerTransaction(insertFunction);
35
-
36
- async function insertWorkflow(user: string) {
37
- return await regInsertFunction(user);
38
- }
39
-
40
- const regInsertWorkflow = DBOS.registerWorkflow(insertWorkflow);
41
-
42
- async function currentDatabaseFunction() {
43
- const result = await poolDataSource.client.execute<{ current_database: string }>(sql`SELECT current_database()`);
44
- return result.rows[0].current_database;
45
- }
46
-
47
- const regCurrentDatabaseFunction = poolDataSource.registerTransaction(currentDatabaseFunction);
48
-
49
- interface transaction_completion {
50
- workflow_id: string;
51
- function_num: number;
52
- output: string | null;
53
- error: string | null;
54
- }
55
-
56
- describe('DrizzleDataSource with custom Pool', () => {
57
- beforeAll(async () => {
58
- const client = new Client({ ...config, database: 'postgres' });
59
- try {
60
- await client.connect();
61
- await dropDB(client, 'drizzle_pool_test', true);
62
- await dropDB(client, 'drizzle_pool_test_dbos_sys', true);
63
- await dropDB(client, config.database, true);
64
- await ensureDB(client, config.database);
65
- } finally {
66
- await client.end();
67
- }
68
-
69
- const poolClient = await customPool.connect();
70
- try {
71
- await DrizzleDataSource.initializeDBOSSchema(poolClient);
72
- } finally {
73
- poolClient.release();
74
- }
75
-
76
- await customPool.query(
77
- `CREATE TABLE IF NOT EXISTS greetings (name TEXT PRIMARY KEY NOT NULL, greet_count INTEGER DEFAULT 0)`,
78
- );
79
- });
80
-
81
- afterAll(async () => {
82
- await customPool.end();
83
- });
84
-
85
- beforeEach(async () => {
86
- DBOS.setConfig({ name: 'drizzle-pool-test' });
87
- await DBOS.launch();
88
- });
89
-
90
- afterEach(async () => {
91
- await DBOS.shutdown();
92
- });
93
-
94
- test('insert with custom pool', async () => {
95
- const user = 'poolTest1';
96
- await customPool.query('DELETE FROM greetings WHERE name = $1', [user]);
97
- const workflowID = randomUUID();
98
-
99
- await expect(DBOS.withNextWorkflowID(workflowID, () => regInsertWorkflow(user))).resolves.toMatchObject({
100
- user,
101
- greet_count: 1,
102
- });
103
-
104
- const { rows } = await customPool.query<transaction_completion>(
105
- 'SELECT * FROM dbos.transaction_completion WHERE workflow_id = $1',
106
- [workflowID],
107
- );
108
- // Completion cleared the checkpoint the transaction wrote.
109
- expect(rows).toHaveLength(0);
110
- });
111
-
112
- test('transaction runs against the custom pool database', async () => {
113
- // Guards against the datasource creating its own connection to the default database
114
- // instead of using the caller's pool (drizzle-orm 1.0 positional-overload regression).
115
- const dbName = await regCurrentDatabaseFunction();
116
- expect(dbName).toBe(config.database);
117
- });
118
-
119
- test('custom pool is not closed after DBOS shutdown', async () => {
120
- // Explicitly shut down DBOS to trigger destroy() on all datasources
121
- await DBOS.shutdown();
122
- // The custom pool should still be usable after DBOS.shutdown()
123
- // because DrizzleDataSource should not close a user-provided pool
124
- const { rows } = await customPool.query<{ val: number }>('SELECT 1 as val');
125
- expect(rows[0].val).toBe(1);
126
- // Re-launch so the afterEach shutdown doesn't fail
127
- DBOS.setConfig({ name: 'drizzle-pool-test' });
128
- await DBOS.launch();
129
- });
130
- });