@m2k-5f/pgtx 2.5.2 → 2.6.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.
- package/dist/batch.d.ts +14 -0
- package/dist/batch.d.ts.map +1 -0
- package/dist/batch.js +35 -0
- package/dist/clauses/array.clause.js +2 -2
- package/dist/clauses/exclude.clause.d.ts.map +1 -1
- package/dist/clauses/exclude.clause.js +2 -2
- package/dist/clauses/fragment.clause.d.ts.map +1 -1
- package/dist/clauses/fragment.clause.js +2 -5
- package/dist/clauses/iden.caluse.js +1 -1
- package/dist/clauses/insert.clause.d.ts.map +1 -1
- package/dist/clauses/insert.clause.js +10 -9
- package/dist/clauses/literal.clause.js +1 -1
- package/dist/clauses/update.clause.js +2 -2
- package/dist/clauses/where.clause.js +2 -2
- package/dist/connection.d.ts +14 -14
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +151 -204
- package/dist/error.d.ts +3 -0
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +3 -0
- package/dist/pool.d.ts.map +1 -1
- package/dist/pool.js +2 -2
- package/dist/protocol/connection-request-writer.d.ts.map +1 -1
- package/dist/protocol/connection-request-writer.js +1 -0
- package/dist/query.d.ts +29 -22
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +41 -32
- package/dist/queue.d.ts +17 -0
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +44 -4
- package/dist/transaction.d.ts +3 -3
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +2 -4
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/template-compiler.d.ts +2 -2
- package/dist/utils/template-compiler.d.ts.map +1 -1
- package/dist/utils/template-compiler.js +14 -9
- package/package.json +8 -6
package/dist/batch.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PostgresError } from "./error";
|
|
2
|
+
import { ConnectionRequestWriter } from "./protocol/connection-request-writer";
|
|
3
|
+
import { PostgresQuery } from "./query";
|
|
4
|
+
export declare class Batch {
|
|
5
|
+
private _queryQueue;
|
|
6
|
+
private _buffer;
|
|
7
|
+
constructor(buffer: ConnectionRequestWriter);
|
|
8
|
+
registerQuery(query: PostgresQuery, timeout: number): void;
|
|
9
|
+
end(): ConnectionRequestWriter;
|
|
10
|
+
get current(): PostgresQuery;
|
|
11
|
+
next(): void;
|
|
12
|
+
reject(cause: PostgresError): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../src/batch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAc,aAAa,EAAsB,MAAM,SAAS,CAAC;AAGxE,qBAAa,KAAK;IACd,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,OAAO,CAAyB;gBAE5B,MAAM,EAAE,uBAAuB;IAK3C,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM;IAgBnD,GAAG;IAIH,IAAI,OAAO,kBAEV;IAED,IAAI;IAIJ,MAAM,CAAC,KAAK,EAAE,aAAa;CAK9B"}
|
package/dist/batch.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ParseQuery } from "./query";
|
|
2
|
+
import { Queue } from "./queue";
|
|
3
|
+
export class Batch {
|
|
4
|
+
constructor(buffer) {
|
|
5
|
+
this._queryQueue = new Queue();
|
|
6
|
+
this._buffer = buffer;
|
|
7
|
+
}
|
|
8
|
+
registerQuery(query, timeout) {
|
|
9
|
+
this._queryQueue.push(query);
|
|
10
|
+
query.startTimeout(timeout);
|
|
11
|
+
if (query instanceof ParseQuery) {
|
|
12
|
+
this._buffer
|
|
13
|
+
.writeParse(query.statement, query.text)
|
|
14
|
+
.writeDescribe(query.statement);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
this._buffer
|
|
18
|
+
.writeBind("", query.statement, query.args)
|
|
19
|
+
.writeExecute("");
|
|
20
|
+
}
|
|
21
|
+
end() {
|
|
22
|
+
return this._buffer.writeSync();
|
|
23
|
+
}
|
|
24
|
+
get current() {
|
|
25
|
+
return this._queryQueue.current;
|
|
26
|
+
}
|
|
27
|
+
next() {
|
|
28
|
+
this._queryQueue.next();
|
|
29
|
+
}
|
|
30
|
+
reject(cause) {
|
|
31
|
+
while (this._queryQueue.hasMore) {
|
|
32
|
+
this._queryQueue.shift.reject(cause);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -16,13 +16,13 @@ export class ArrayClause extends Clause {
|
|
|
16
16
|
throw new TypeError(`Array item at index ${index} is undefined`);
|
|
17
17
|
}
|
|
18
18
|
if (index)
|
|
19
|
-
params.text
|
|
19
|
+
params.text += this.separator;
|
|
20
20
|
if (value instanceof Clause) {
|
|
21
21
|
value.mapIntoQuery(params);
|
|
22
22
|
}
|
|
23
23
|
else {
|
|
24
24
|
params.args.push(value);
|
|
25
|
-
params.text
|
|
25
|
+
params.text += `$${params.args.length}`;
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exclude.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/exclude.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,qBAAa,mBAAoB,SAAQ,MAAM;IAEvC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE;IAD7B,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB;IAI7C,YAAY,CAAC,MAAM,EAAE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"exclude.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/exclude.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,qBAAa,mBAAoB,SAAQ,MAAM;IAEvC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE;IAD7B,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB;IAI7C,YAAY,CAAC,MAAM,EAAE,oBAAoB;CAInD"}
|
|
@@ -8,7 +8,7 @@ export class ExcludeUpdateClause extends Clause {
|
|
|
8
8
|
return new ExcludeUpdateClause(fields);
|
|
9
9
|
}
|
|
10
10
|
mapIntoQuery(params) {
|
|
11
|
-
params.text
|
|
12
|
-
.join(', ')
|
|
11
|
+
params.text += this.fields.map(f => `${f} = EXCLUDED.${f}`)
|
|
12
|
+
.join(', ');
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/fragment.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAI,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAoB,MAAM,UAAU,CAAC;AAElE,qBAAa,cAAe,SAAQ,MAAM;IAElC,QAAQ,CAAC,SAAS,EAAE,oBAAoB;IACxC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;IAFxB,OAAO;IAKP,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;IAIpD,YAAY,CAAC,MAAM,EAAE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"fragment.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/fragment.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAI,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAoB,MAAM,UAAU,CAAC;AAElE,qBAAa,cAAe,SAAQ,MAAM;IAElC,QAAQ,CAAC,SAAS,EAAE,oBAAoB;IACxC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;IAFxB,OAAO;IAKP,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;IAIpD,YAAY,CAAC,MAAM,EAAE,oBAAoB;CAMrD"}
|
|
@@ -10,11 +10,8 @@ export class FragmentClause extends Clause {
|
|
|
10
10
|
return new FragmentClause(strings, values);
|
|
11
11
|
}
|
|
12
12
|
mapIntoQuery(params) {
|
|
13
|
-
const compiled = compileSqlTemplate(
|
|
14
|
-
args: this.args,
|
|
15
|
-
templates: this.templates
|
|
16
|
-
}, params.args.length);
|
|
13
|
+
const compiled = compileSqlTemplate(this.templates, this.args, params.args.length);
|
|
17
14
|
params.args.push(...compiled.args);
|
|
18
|
-
params.text
|
|
15
|
+
params.text += compiled.text;
|
|
19
16
|
}
|
|
20
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/insert.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,SAAQ,MAAM;IAE/D,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE;IADzB,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;IAO5D,YAAY,CAAC,MAAM,EAAE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"insert.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/insert.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,SAAQ,MAAM;IAE/D,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE;IADzB,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;IAO5D,YAAY,CAAC,MAAM,EAAE,oBAAoB;CAwBrD"}
|
|
@@ -13,20 +13,21 @@ export class InsertClause extends Clause {
|
|
|
13
13
|
mapIntoQuery(params) {
|
|
14
14
|
const columns = Object.keys(this.inserts[0]);
|
|
15
15
|
const columnsCount = columns.length;
|
|
16
|
-
params.text
|
|
16
|
+
params.text += `(${columns.join(', ')}) VALUES `;
|
|
17
17
|
this.inserts.forEach((object, index) => {
|
|
18
18
|
if (Object.keys(object).length !== columnsCount) {
|
|
19
19
|
throw new Error(`all rows must have the same columns`);
|
|
20
20
|
}
|
|
21
21
|
if (index)
|
|
22
|
-
params.text
|
|
23
|
-
params.text
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
params.text += ', ';
|
|
23
|
+
params.text +=
|
|
24
|
+
`(${Object.values(object).map(value => {
|
|
25
|
+
if (value === undefined)
|
|
26
|
+
return "DEFAULT";
|
|
27
|
+
params.args.push(value);
|
|
28
|
+
return `$${params.args.length}`;
|
|
29
|
+
})
|
|
30
|
+
.join(", ")})`;
|
|
30
31
|
});
|
|
31
32
|
}
|
|
32
33
|
}
|
|
@@ -13,9 +13,9 @@ export class UpdateClause extends Clause {
|
|
|
13
13
|
throw new Error('Update clause has no data to update. All values are `undefined`');
|
|
14
14
|
entries.forEach(([key, value], index) => {
|
|
15
15
|
if (index)
|
|
16
|
-
params.text
|
|
16
|
+
params.text += ', ';
|
|
17
17
|
params.args.push(value);
|
|
18
|
-
params.text
|
|
18
|
+
params.text += `${key} = $${params.args.length}`;
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -13,9 +13,9 @@ export class WhereClause extends Clause {
|
|
|
13
13
|
throw new Error('Where clause has no data to update. All values are `undefined`');
|
|
14
14
|
entries.forEach(([key, value], index) => {
|
|
15
15
|
if (index)
|
|
16
|
-
params.text
|
|
16
|
+
params.text += ' AND ';
|
|
17
17
|
params.args.push(value);
|
|
18
|
-
params.text
|
|
18
|
+
params.text += `"${key}" = $${params.args.length}`;
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
}
|
package/dist/connection.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Branded } from "./types";
|
|
1
|
+
import { Branded, ColumnDescription } from "./types";
|
|
2
2
|
import { Transaction } from "./transaction";
|
|
3
3
|
import { Future } from 'fluent-future';
|
|
4
4
|
import { PostgresError } from "./error";
|
|
@@ -12,10 +12,16 @@ export type ConnectionParams = {
|
|
|
12
12
|
logLevel?: LogLevel;
|
|
13
13
|
int8toBigint?: boolean;
|
|
14
14
|
queryTimeout?: number;
|
|
15
|
+
batchCapacity?: number;
|
|
16
|
+
flushShedule?: "nextTick" | "Immediate";
|
|
15
17
|
};
|
|
16
18
|
export type StatementName = Branded<string, 'StatementName'>;
|
|
17
19
|
export type QueryText = Branded<string, 'QueryText'>;
|
|
18
20
|
export type ChannelName = Branded<string, "ChannelName">;
|
|
21
|
+
export type QueryMeta = {
|
|
22
|
+
statement: StatementName;
|
|
23
|
+
columns: ColumnDescription[];
|
|
24
|
+
};
|
|
19
25
|
/**
|
|
20
26
|
* Represents a single dedicated connection to the PostgreSQL database.
|
|
21
27
|
*
|
|
@@ -48,21 +54,18 @@ export type ChannelName = Branded<string, "ChannelName">;
|
|
|
48
54
|
*/
|
|
49
55
|
export declare class Connection {
|
|
50
56
|
private readonly params;
|
|
51
|
-
private
|
|
57
|
+
private _activeBatch;
|
|
52
58
|
private _isOpened;
|
|
53
59
|
private _isReconnecting;
|
|
60
|
+
private _cachedBuffer;
|
|
54
61
|
private _socket;
|
|
55
|
-
private
|
|
56
|
-
private _pipelinesQueue;
|
|
57
|
-
private _described;
|
|
58
|
-
private _describingPending;
|
|
62
|
+
private _batchQueue;
|
|
59
63
|
private _parsed;
|
|
60
|
-
private
|
|
64
|
+
private _parsing;
|
|
61
65
|
private _listeningCallbacks;
|
|
62
66
|
private _stmtCounter;
|
|
63
67
|
private _logLevel;
|
|
64
68
|
private _nextStatement;
|
|
65
|
-
private _checkOpened;
|
|
66
69
|
private constructor();
|
|
67
70
|
/**
|
|
68
71
|
* Creates a new database connection.
|
|
@@ -83,6 +86,8 @@ export declare class Connection {
|
|
|
83
86
|
* ```
|
|
84
87
|
*/
|
|
85
88
|
static new(params: ConnectionParams): Future<Connection, PostgresError>;
|
|
89
|
+
private _registerBatch;
|
|
90
|
+
private _sync;
|
|
86
91
|
/**
|
|
87
92
|
* Executes a query using tagged template literals.
|
|
88
93
|
*
|
|
@@ -193,17 +198,12 @@ export declare class Connection {
|
|
|
193
198
|
*/
|
|
194
199
|
stream<T extends Record<string, any>>(templates: TemplateStringsArray, ...params: any[]): ReadableStream<T>;
|
|
195
200
|
private _streamWithController;
|
|
196
|
-
private _createQuery;
|
|
197
|
-
private _createStream;
|
|
198
|
-
private _writeQuery;
|
|
199
|
-
private _registerFlush;
|
|
200
|
-
private _flush;
|
|
201
201
|
private _registerReconnect;
|
|
202
202
|
private _resetConnectionState;
|
|
203
203
|
private _reconnect;
|
|
204
204
|
private _restoreSubscriptions;
|
|
205
205
|
private _getCurrentQuery;
|
|
206
|
-
private
|
|
206
|
+
private _rejectAllBatches;
|
|
207
207
|
private _handlePacket;
|
|
208
208
|
/**
|
|
209
209
|
* Checks if the connection is still alive and usable.
|
package/dist/connection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|