@dbos-inc/node-pg-datasource 4.4.4-preview.gc90a14c7ef → 4.4.6-preview.g878192fef4
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/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -15
- package/dist/index.js.map +1 -1
- package/index.ts +19 -12
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -10,8 +10,8 @@ export declare class NodePostgresDataSource implements DBOSDataSource<NodePostgr
|
|
|
10
10
|
readonly name: string;
|
|
11
11
|
static get client(): ClientBase;
|
|
12
12
|
get client(): ClientBase;
|
|
13
|
-
static initializeDBOSSchema(config: ClientConfig): Promise<void>;
|
|
14
|
-
constructor(name: string, config: PoolConfig);
|
|
13
|
+
static initializeDBOSSchema(config: ClientConfig, schemaName?: string): Promise<void>;
|
|
14
|
+
constructor(name: string, config: PoolConfig, schemaName?: string);
|
|
15
15
|
runTransaction<T>(func: () => Promise<T>, config?: NodePostgresTransactionOptions): Promise<T>;
|
|
16
16
|
registerTransaction<This, Args extends unknown[], Return>(func: (this: This, ...args: Args) => Promise<Return>, config?: NodePostgresTransactionOptions & FunctionName): (this: This, ...args: Args) => Promise<Return>;
|
|
17
17
|
transaction(config?: NodePostgresTransactionOptions): <This, Args extends unknown[], Return>(target: object, propertyKey: PropertyKey, descriptor: TypedPropertyDescriptor<(this: This, ...args: Args) => Promise<Return>>) => TypedPropertyDescriptor<(this: This, ...args: Args) => Promise<Return>>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAQL,mBAAmB,EACnB,cAAc,EAIf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAU,KAAK,UAAU,EAAE,KAAK,YAAY,EAAQ,KAAK,UAAU,EAAE,MAAM,IAAI,CAAC;AASvF,UAAU,8BAA+B,SAAQ,mBAAmB;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,OAAO,EAAE,8BAA8B,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAQL,mBAAmB,EACnB,cAAc,EAIf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAU,KAAK,UAAU,EAAE,KAAK,YAAY,EAAQ,KAAK,UAAU,EAAE,MAAM,IAAI,CAAC;AASvF,UAAU,8BAA+B,SAAQ,mBAAmB;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,OAAO,EAAE,8BAA8B,EAAE,CAAC;AA2N1C,qBAAa,sBAAuB,YAAW,cAAc,CAAC,8BAA8B,CAAC;;IAqCzF,QAAQ,CAAC,IAAI,EAAE,MAAM;IAtBvB,MAAM,KAAK,MAAM,eAEhB;IAED,IAAI,MAAM,eAET;WAEY,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC;gBAcxF,IAAI,EAAE,MAAM,EACrB,MAAM,EAAE,UAAU,EAClB,UAAU,GAAE,MAAe;IAMvB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,8BAA8B;IAIvF,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,8BAA8B,GAAG,YAAY,GACrD,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;IAIjD,WAAW,CAAC,MAAM,CAAC,EAAE,8BAA8B,kDAIvC,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
|
@@ -13,9 +13,11 @@ class NodePostgresTransactionHandler {
|
|
|
13
13
|
config;
|
|
14
14
|
dsType = 'NodePostgresDataSource';
|
|
15
15
|
#poolField;
|
|
16
|
-
|
|
16
|
+
schemaName;
|
|
17
|
+
constructor(name, config, schemaName = 'dbos') {
|
|
17
18
|
this.name = name;
|
|
18
19
|
this.config = config;
|
|
20
|
+
this.schemaName = schemaName;
|
|
19
21
|
}
|
|
20
22
|
async initialize() {
|
|
21
23
|
const pool = this.#poolField;
|
|
@@ -25,7 +27,7 @@ class NodePostgresTransactionHandler {
|
|
|
25
27
|
try {
|
|
26
28
|
let installed = false;
|
|
27
29
|
try {
|
|
28
|
-
const res =
|
|
30
|
+
const res = await client.query((0, datasource_1.checkSchemaInstallationPG)(this.schemaName));
|
|
29
31
|
installed = !!res.rows[0].schema_exists && !!res.rows[0].table_exists;
|
|
30
32
|
}
|
|
31
33
|
catch (e) {
|
|
@@ -34,11 +36,11 @@ class NodePostgresTransactionHandler {
|
|
|
34
36
|
// Install
|
|
35
37
|
if (!installed) {
|
|
36
38
|
try {
|
|
37
|
-
await client.query(datasource_1.createTransactionCompletionSchemaPG);
|
|
38
|
-
await client.query(datasource_1.createTransactionCompletionTablePG);
|
|
39
|
+
await client.query((0, datasource_1.createTransactionCompletionSchemaPG)(this.schemaName));
|
|
40
|
+
await client.query((0, datasource_1.createTransactionCompletionTablePG)(this.schemaName));
|
|
39
41
|
}
|
|
40
42
|
catch (err) {
|
|
41
|
-
throw new Error(`In initialization of 'NodePostgresDataSource' ${this.name}: The '
|
|
43
|
+
throw new Error(`In initialization of 'NodePostgresDataSource' ${this.name}: The '${this.schemaName}.transaction_completion' table does not exist, and could not be created. This should be added to your database migrations.
|
|
42
44
|
See: https://docs.dbos.dev/typescript/tutorials/transaction-tutorial#installing-the-dbos-schema`);
|
|
43
45
|
}
|
|
44
46
|
}
|
|
@@ -61,7 +63,7 @@ class NodePostgresTransactionHandler {
|
|
|
61
63
|
async #checkExecution(workflowID, stepID) {
|
|
62
64
|
const { rows } = await this.#pool.query(
|
|
63
65
|
/*sql*/
|
|
64
|
-
`SELECT output, error FROM
|
|
66
|
+
`SELECT output, error FROM "${this.schemaName}".transaction_completion
|
|
65
67
|
WHERE workflow_id = $1 AND function_num = $2`, [workflowID, stepID]);
|
|
66
68
|
if (rows.length === 0) {
|
|
67
69
|
return undefined;
|
|
@@ -69,11 +71,11 @@ class NodePostgresTransactionHandler {
|
|
|
69
71
|
const { output, error } = rows[0];
|
|
70
72
|
return error !== null ? { error } : { output };
|
|
71
73
|
}
|
|
72
|
-
static async #recordOutput(client, workflowID, stepID, output) {
|
|
74
|
+
static async #recordOutput(client, workflowID, stepID, output, schemaName) {
|
|
73
75
|
try {
|
|
74
76
|
await client.query(
|
|
75
77
|
/*sql*/
|
|
76
|
-
`INSERT INTO
|
|
78
|
+
`INSERT INTO "${schemaName}".transaction_completion (workflow_id, function_num, output)
|
|
77
79
|
VALUES ($1, $2, $3)`, [workflowID, stepID, output]);
|
|
78
80
|
}
|
|
79
81
|
catch (error) {
|
|
@@ -89,7 +91,7 @@ class NodePostgresTransactionHandler {
|
|
|
89
91
|
try {
|
|
90
92
|
await this.#pool.query(
|
|
91
93
|
/*sql*/
|
|
92
|
-
`INSERT INTO
|
|
94
|
+
`INSERT INTO "${this.schemaName}".transaction_completion (workflow_id, function_num, error)
|
|
93
95
|
VALUES ($1, $2, $3)`, [workflowID, stepID, error]);
|
|
94
96
|
}
|
|
95
97
|
catch (error) {
|
|
@@ -150,7 +152,7 @@ class NodePostgresTransactionHandler {
|
|
|
150
152
|
});
|
|
151
153
|
// save the output of read/write transactions
|
|
152
154
|
if (saveResults) {
|
|
153
|
-
await NodePostgresTransactionHandler.#recordOutput(client, workflowID, stepID, superjson_1.SuperJSON.stringify(result));
|
|
155
|
+
await NodePostgresTransactionHandler.#recordOutput(client, workflowID, stepID, superjson_1.SuperJSON.stringify(result), this.schemaName);
|
|
154
156
|
}
|
|
155
157
|
return result;
|
|
156
158
|
}, config);
|
|
@@ -195,21 +197,21 @@ class NodePostgresDataSource {
|
|
|
195
197
|
get client() {
|
|
196
198
|
return NodePostgresDataSource.#getClient(this.#provider);
|
|
197
199
|
}
|
|
198
|
-
static async initializeDBOSSchema(config) {
|
|
200
|
+
static async initializeDBOSSchema(config, schemaName = 'dbos') {
|
|
199
201
|
const client = new pg_1.Client(config);
|
|
200
202
|
try {
|
|
201
203
|
await client.connect();
|
|
202
|
-
await client.query(datasource_1.createTransactionCompletionSchemaPG);
|
|
203
|
-
await client.query(datasource_1.createTransactionCompletionTablePG);
|
|
204
|
+
await client.query((0, datasource_1.createTransactionCompletionSchemaPG)(schemaName));
|
|
205
|
+
await client.query((0, datasource_1.createTransactionCompletionTablePG)(schemaName));
|
|
204
206
|
}
|
|
205
207
|
finally {
|
|
206
208
|
await client.end();
|
|
207
209
|
}
|
|
208
210
|
}
|
|
209
211
|
#provider;
|
|
210
|
-
constructor(name, config) {
|
|
212
|
+
constructor(name, config, schemaName = 'dbos') {
|
|
211
213
|
this.name = name;
|
|
212
|
-
this.#provider = new NodePostgresTransactionHandler(name, config);
|
|
214
|
+
this.#provider = new NodePostgresTransactionHandler(name, config, schemaName);
|
|
213
215
|
(0, datasource_1.registerDataSource)(this.#provider);
|
|
214
216
|
}
|
|
215
217
|
async runTransaction(func, config) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA,gDAAgD;;;AAEhD,iDAAmF;AACnF,8DAauC;AACvC,2BAAuF;AACvF,uDAAqD;AACrD,yCAAsC;AAatC,MAAM,aAAa,GAAG,IAAI,oCAAiB,EAAiC,CAAC;AAE7E,MAAM,8BAA8B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/index.ts
CHANGED
|
@@ -35,11 +35,15 @@ const asyncLocalCtx = new AsyncLocalStorage<NodePostgresDataSourceContext>();
|
|
|
35
35
|
class NodePostgresTransactionHandler implements DataSourceTransactionHandler {
|
|
36
36
|
readonly dsType = 'NodePostgresDataSource';
|
|
37
37
|
#poolField: Pool | undefined;
|
|
38
|
+
readonly schemaName: string;
|
|
38
39
|
|
|
39
40
|
constructor(
|
|
40
41
|
readonly name: string,
|
|
41
42
|
private readonly config: PoolConfig,
|
|
42
|
-
|
|
43
|
+
schemaName: string = 'dbos',
|
|
44
|
+
) {
|
|
45
|
+
this.schemaName = schemaName;
|
|
46
|
+
}
|
|
43
47
|
|
|
44
48
|
async initialize(): Promise<void> {
|
|
45
49
|
const pool = this.#poolField;
|
|
@@ -51,7 +55,7 @@ class NodePostgresTransactionHandler implements DataSourceTransactionHandler {
|
|
|
51
55
|
try {
|
|
52
56
|
let installed = false;
|
|
53
57
|
try {
|
|
54
|
-
const res =
|
|
58
|
+
const res = await client.query<CheckSchemaInstallationReturn>(checkSchemaInstallationPG(this.schemaName));
|
|
55
59
|
installed = !!res.rows[0].schema_exists && !!res.rows[0].table_exists;
|
|
56
60
|
} catch (e) {
|
|
57
61
|
throw new Error(
|
|
@@ -62,11 +66,11 @@ class NodePostgresTransactionHandler implements DataSourceTransactionHandler {
|
|
|
62
66
|
// Install
|
|
63
67
|
if (!installed) {
|
|
64
68
|
try {
|
|
65
|
-
await client.query(createTransactionCompletionSchemaPG);
|
|
66
|
-
await client.query(createTransactionCompletionTablePG);
|
|
69
|
+
await client.query(createTransactionCompletionSchemaPG(this.schemaName));
|
|
70
|
+
await client.query(createTransactionCompletionTablePG(this.schemaName));
|
|
67
71
|
} catch (err) {
|
|
68
72
|
throw new Error(
|
|
69
|
-
`In initialization of 'NodePostgresDataSource' ${this.name}: The '
|
|
73
|
+
`In initialization of 'NodePostgresDataSource' ${this.name}: The '${this.schemaName}.transaction_completion' table does not exist, and could not be created. This should be added to your database migrations.
|
|
70
74
|
See: https://docs.dbos.dev/typescript/tutorials/transaction-tutorial#installing-the-dbos-schema`,
|
|
71
75
|
);
|
|
72
76
|
}
|
|
@@ -96,7 +100,7 @@ class NodePostgresTransactionHandler implements DataSourceTransactionHandler {
|
|
|
96
100
|
type Result = { output: string | null; error: string | null };
|
|
97
101
|
const { rows } = await this.#pool.query<Result>(
|
|
98
102
|
/*sql*/
|
|
99
|
-
`SELECT output, error FROM
|
|
103
|
+
`SELECT output, error FROM "${this.schemaName}".transaction_completion
|
|
100
104
|
WHERE workflow_id = $1 AND function_num = $2`,
|
|
101
105
|
[workflowID, stepID],
|
|
102
106
|
);
|
|
@@ -112,11 +116,12 @@ class NodePostgresTransactionHandler implements DataSourceTransactionHandler {
|
|
|
112
116
|
workflowID: string,
|
|
113
117
|
stepID: number,
|
|
114
118
|
output: string | null,
|
|
119
|
+
schemaName: string,
|
|
115
120
|
): Promise<void> {
|
|
116
121
|
try {
|
|
117
122
|
await client.query(
|
|
118
123
|
/*sql*/
|
|
119
|
-
`INSERT INTO
|
|
124
|
+
`INSERT INTO "${schemaName}".transaction_completion (workflow_id, function_num, output)
|
|
120
125
|
VALUES ($1, $2, $3)`,
|
|
121
126
|
[workflowID, stepID, output],
|
|
122
127
|
);
|
|
@@ -133,7 +138,7 @@ class NodePostgresTransactionHandler implements DataSourceTransactionHandler {
|
|
|
133
138
|
try {
|
|
134
139
|
await this.#pool.query(
|
|
135
140
|
/*sql*/
|
|
136
|
-
`INSERT INTO
|
|
141
|
+
`INSERT INTO "${this.schemaName}".transaction_completion (workflow_id, function_num, error)
|
|
137
142
|
VALUES ($1, $2, $3)`,
|
|
138
143
|
[workflowID, stepID, error],
|
|
139
144
|
);
|
|
@@ -215,6 +220,7 @@ class NodePostgresTransactionHandler implements DataSourceTransactionHandler {
|
|
|
215
220
|
workflowID,
|
|
216
221
|
stepID!,
|
|
217
222
|
SuperJSON.stringify(result),
|
|
223
|
+
this.schemaName,
|
|
218
224
|
);
|
|
219
225
|
}
|
|
220
226
|
|
|
@@ -264,12 +270,12 @@ export class NodePostgresDataSource implements DBOSDataSource<NodePostgresTransa
|
|
|
264
270
|
return NodePostgresDataSource.#getClient(this.#provider);
|
|
265
271
|
}
|
|
266
272
|
|
|
267
|
-
static async initializeDBOSSchema(config: ClientConfig): Promise<void> {
|
|
273
|
+
static async initializeDBOSSchema(config: ClientConfig, schemaName: string = 'dbos'): Promise<void> {
|
|
268
274
|
const client = new Client(config);
|
|
269
275
|
try {
|
|
270
276
|
await client.connect();
|
|
271
|
-
await client.query(createTransactionCompletionSchemaPG);
|
|
272
|
-
await client.query(createTransactionCompletionTablePG);
|
|
277
|
+
await client.query(createTransactionCompletionSchemaPG(schemaName));
|
|
278
|
+
await client.query(createTransactionCompletionTablePG(schemaName));
|
|
273
279
|
} finally {
|
|
274
280
|
await client.end();
|
|
275
281
|
}
|
|
@@ -280,8 +286,9 @@ export class NodePostgresDataSource implements DBOSDataSource<NodePostgresTransa
|
|
|
280
286
|
constructor(
|
|
281
287
|
readonly name: string,
|
|
282
288
|
config: PoolConfig,
|
|
289
|
+
schemaName: string = 'dbos',
|
|
283
290
|
) {
|
|
284
|
-
this.#provider = new NodePostgresTransactionHandler(name, config);
|
|
291
|
+
this.#provider = new NodePostgresTransactionHandler(name, config, schemaName);
|
|
285
292
|
registerDataSource(this.#provider);
|
|
286
293
|
}
|
|
287
294
|
|
package/package.json
CHANGED