@dbos-inc/prisma-datasource 3.1.11-preview → 3.2.5-preview

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,EAAmC,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAML,cAAc,EAIf,MAAM,+BAA+B,CAAC;AAIvC,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/E,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1E,CAAC;AAaF,KAAK,yBAAyB,GAAG,iBAAiB,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAEzG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,CAAC,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAoKF,qBAAa,gBAAgB,CAAC,YAAY,CAAE,YAAW,cAAc,CAAC,iBAAiB,CAAC;;IA8BpF,QAAQ,CAAC,IAAI,EAAE,MAAM;IAjBvB,IAAI,MAAM,IAAI,YAAY,CAEzB;WAEY,oBAAoB,CAAC,MAAM,EAAE,UAAU;WAKvC,sBAAsB,CAAC,MAAM,EAAE,UAAU;gBAQ3C,IAAI,EAAE,MAAM,EACrB,YAAY,EAAE,UAAU,GAAG,CAAC,MAAM,UAAU,CAAC;IAMzC,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;IAIjD,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,EAAmC,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAML,cAAc,EAMf,MAAM,+BAA+B,CAAC;AAIvC,KAAK,UAAU,GAAG;IAChB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/E,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1E,CAAC;AAaF,KAAK,yBAAyB,GAAG,iBAAiB,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAEzG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,CAAC,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAyLF,qBAAa,gBAAgB,CAAC,YAAY,CAAE,YAAW,cAAc,CAAC,iBAAiB,CAAC;;IA8BpF,QAAQ,CAAC,IAAI,EAAE,MAAM;IAjBvB,IAAI,MAAM,IAAI,YAAY,CAEzB;WAEY,oBAAoB,CAAC,MAAM,EAAE,UAAU;WAKvC,sBAAsB,CAAC,MAAM,EAAE,UAAU;gBAQ3C,IAAI,EAAE,MAAM,EACrB,YAAY,EAAE,UAAU,GAAG,CAAC,MAAM,UAAU,CAAC;IAMzC,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;IAIjD,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
@@ -27,8 +27,26 @@ class PrismaTransactionHandler {
27
27
  }
28
28
  return this.prismaAccess;
29
29
  }
30
- initialize() {
31
- return Promise.resolve();
30
+ async initialize() {
31
+ let installed = false;
32
+ try {
33
+ const res = await this.#prismaDB.$queryRawUnsafe(datasource_1.checkSchemaInstallationPG);
34
+ installed = !!res[0]?.schema_exists && !!res[0]?.table_exists;
35
+ }
36
+ catch (e) {
37
+ throw new Error(`In initialization of 'PrismaDataSource' ${this.name}: Database could not be queried: ${e.message}`);
38
+ }
39
+ // Install
40
+ if (!installed) {
41
+ try {
42
+ await this.#prismaDB.$executeRawUnsafe(datasource_1.createTransactionCompletionSchemaPG);
43
+ await this.#prismaDB.$executeRawUnsafe(datasource_1.createTransactionCompletionTablePG);
44
+ }
45
+ catch (err) {
46
+ throw new Error(`In initialization of 'PrismaDataSource' ${this.name}: The 'dbos.transaction_completion' table does not exist, and could not be created. This should be added to your database migrations.
47
+ See: https://docs.dbos.dev/typescript/tutorials/transaction-tutorial#installing-the-dbos-schema`);
48
+ }
49
+ }
32
50
  }
33
51
  destroy() {
34
52
  return Promise.resolve();
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/index.ts CHANGED
@@ -9,6 +9,8 @@ import {
9
9
  registerDataSource,
10
10
  createTransactionCompletionSchemaPG,
11
11
  createTransactionCompletionTablePG,
12
+ CheckSchemaInstallationReturn,
13
+ checkSchemaInstallationPG,
12
14
  } from '@dbos-inc/dbos-sdk/datasource';
13
15
  import { AsyncLocalStorage } from 'async_hooks';
14
16
  import { SuperJSON } from 'superjson';
@@ -63,8 +65,29 @@ class PrismaTransactionHandler implements DataSourceTransactionHandler {
63
65
  return this.prismaAccess;
64
66
  }
65
67
 
66
- initialize(): Promise<void> {
67
- return Promise.resolve();
68
+ async initialize(): Promise<void> {
69
+ let installed = false;
70
+ try {
71
+ const res = await this.#prismaDB.$queryRawUnsafe<CheckSchemaInstallationReturn[]>(checkSchemaInstallationPG);
72
+ installed = !!res[0]?.schema_exists && !!res[0]?.table_exists;
73
+ } catch (e) {
74
+ throw new Error(
75
+ `In initialization of 'PrismaDataSource' ${this.name}: Database could not be queried: ${(e as Error).message}`,
76
+ );
77
+ }
78
+
79
+ // Install
80
+ if (!installed) {
81
+ try {
82
+ await this.#prismaDB.$executeRawUnsafe(createTransactionCompletionSchemaPG);
83
+ await this.#prismaDB.$executeRawUnsafe(createTransactionCompletionTablePG);
84
+ } catch (err) {
85
+ throw new Error(
86
+ `In initialization of 'PrismaDataSource' ${this.name}: The 'dbos.transaction_completion' table does not exist, and could not be created. This should be added to your database migrations.
87
+ See: https://docs.dbos.dev/typescript/tutorials/transaction-tutorial#installing-the-dbos-schema`,
88
+ );
89
+ }
90
+ }
68
91
  }
69
92
 
70
93
  destroy(): Promise<void> {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dbos-inc/prisma-datasource",
3
- "version": "3.1.11-preview",
3
+ "version": "3.2.5-preview",
4
4
  "description": "DBOS Data Source library for Prisma ORM with PostgreSQL support",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -27,31 +27,7 @@ describe('PrismaDataSource', () => {
27
27
  const userDB = new Pool(config);
28
28
 
29
29
  beforeAll(async () => {
30
- {
31
- const client = new Client({ ...config, database: 'postgres' });
32
- try {
33
- await client.connect();
34
- await dropDB(client, 'prisma_ds_test', true);
35
- await dropDB(client, 'prisma_ds_test_dbos_sys', true);
36
- await dropDB(client, config.database, true);
37
- await ensureDB(client, config.database);
38
- } finally {
39
- await client.end();
40
- }
41
- }
42
-
43
- {
44
- const client = await userDB.connect();
45
- try {
46
- await client.query(
47
- 'CREATE TABLE greetings(name text NOT NULL, greet_count integer DEFAULT 0, PRIMARY KEY(name))',
48
- );
49
- } finally {
50
- client.release();
51
- }
52
- }
53
-
54
- await PrismaDataSource.initializeDBOSSchema(prisma);
30
+ await createDatabases(userDB, true);
55
31
  });
56
32
 
57
33
  afterAll(async () => {
@@ -336,6 +312,44 @@ export interface greetings {
336
312
  greet_count: number;
337
313
  }
338
314
 
315
+ async function createDatabases(userDB: Pool, createTxCompletion: boolean) {
316
+ try {
317
+ await prisma.$disconnect();
318
+ } catch (e) {}
319
+
320
+ {
321
+ const client = new Client({ ...config, database: 'postgres' });
322
+ try {
323
+ await client.connect();
324
+ await dropDB(client, 'prisma_ds_test', true);
325
+ await dropDB(client, 'prisma_ds_test_dbos_sys', true);
326
+ await dropDB(client, config.database, true);
327
+ await ensureDB(client, config.database);
328
+ } finally {
329
+ await client.end();
330
+ }
331
+ }
332
+
333
+ {
334
+ const client = await userDB.connect();
335
+ try {
336
+ await client.query(
337
+ 'CREATE TABLE greetings(name text NOT NULL, greet_count integer DEFAULT 0, PRIMARY KEY(name))',
338
+ );
339
+ } finally {
340
+ client.release();
341
+ }
342
+ }
343
+
344
+ if (createTxCompletion) {
345
+ await PrismaDataSource.initializeDBOSSchema(prisma);
346
+ }
347
+
348
+ try {
349
+ await prisma.$connect();
350
+ } catch (e) {}
351
+ }
352
+
339
353
  async function insertFunction(user: string) {
340
354
  const existing = await dataSource.client.dbosHello.findUnique({
341
355
  where: { name: user },
@@ -462,3 +476,46 @@ const regReadWorkflowReg = DBOS.registerWorkflow(readWorkflowReg);
462
476
  const regReadWorkflowRunTx = DBOS.registerWorkflow(readWorkflowRunTx);
463
477
  const regStaticWorkflow = DBOS.registerWorkflow(staticWorkflow);
464
478
  const regInstanceWorkflow = DBOS.registerWorkflow(instanceWorkflow);
479
+
480
+ describe('PrismaDataSourceCreateTxC', () => {
481
+ const userDB = new Pool(config);
482
+
483
+ beforeAll(async () => {
484
+ await createDatabases(userDB, false);
485
+ });
486
+
487
+ afterAll(async () => {
488
+ await userDB.end();
489
+ });
490
+
491
+ beforeEach(async () => {
492
+ DBOS.setConfig({ name: 'prisma-ds-test' });
493
+ await DBOS.launch();
494
+ });
495
+
496
+ afterEach(async () => {
497
+ await DBOS.shutdown();
498
+ });
499
+
500
+ test('insert dataSource.register function', async () => {
501
+ const user = 'helloTest1';
502
+
503
+ await userDB.query('DELETE FROM greetings WHERE name = $1', [user]);
504
+ const workflowID = randomUUID();
505
+
506
+ await expect(DBOS.withNextWorkflowID(workflowID, () => regInsertWorkflowReg(user))).resolves.toMatchObject({
507
+ user,
508
+ greet_count: 1,
509
+ });
510
+
511
+ const { rows } = await userDB.query<transaction_completion>(
512
+ 'SELECT * FROM dbos.transaction_completion WHERE workflow_id = $1',
513
+ [workflowID],
514
+ );
515
+ expect(rows.length).toBe(1);
516
+ expect(rows[0].workflow_id).toBe(workflowID);
517
+ expect(rows[0].function_num).toBe(0);
518
+ expect(rows[0].output).not.toBeNull();
519
+ expect(SuperJSON.parse(rows[0].output!)).toMatchObject({ user, greet_count: 1 });
520
+ });
521
+ });