prostgles-server 4.1.124 → 4.1.126
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/DboBuilder/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +2 -3
- package/dist/DboBuilder/DboBuilder.js.map +1 -1
- package/dist/DboBuilder/QueryStreamer.d.ts +5 -2
- package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
- package/dist/DboBuilder/QueryStreamer.js +54 -12
- package/dist/DboBuilder/QueryStreamer.js.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts +2 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.js +8 -3
- package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
- package/dist/DboBuilder/runSQL.d.ts +17 -0
- package/dist/DboBuilder/runSQL.d.ts.map +1 -1
- package/dist/DboBuilder/runSQL.js +23 -15
- package/dist/DboBuilder/runSQL.js.map +1 -1
- package/lib/DboBuilder/DboBuilder.ts +2 -4
- package/lib/DboBuilder/QueryStreamer.ts +57 -15
- package/lib/DboBuilder/dboBuilderUtils.ts +6 -2
- package/lib/DboBuilder/runSQL.ts +27 -18
- package/package.json +2 -2
- package/tests/client/package-lock.json +15 -15
- package/tests/client/package.json +1 -1
- package/tests/client_only_queries.ts +104 -15
- package/tests/isomorphic_queries.ts +4 -4
- package/tests/server/package-lock.json +3 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DboBuilder.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/DboBuilder.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,uBAAuB,EACvB,UAAU,EAEX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,EAAE,EACF,IAAI,EAAE,SAAS,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EACL,aAAa,EACd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,eAAe,EAAqB,WAAW,EAAM,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,YAAY,EAA8B,MAAM,mBAAmB,CAAC;AAK7E,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAElC,KAAK,OAAO,GAAG;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,YAAY,GAAG,OAAO,GAAG;IAC5B,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,KAAK,kBAAkB,GAAG,OAAO,GAAG;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAGF,qBAAa,UAAU;IACrB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;IAE7B,EAAE,EAAE,EAAE,CAAC;IAEP,GAAG,EAAE,eAAe,CAAC;IACrB,cAAc,CAAC,EAAE,aAAa,CAAC;IAE/B;;OAEG;IACH,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,uBAAuB,CAAA;KAAE,EAAE,GAAG,SAAS,CAAC;IAC5E,WAAW,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IACxC,kBAAkB,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAErD,aAAa,EAAE,aAAa,CAAC;IAE7B,gBAAgB,QAAa,QAAQ,aAAa,CAAC,CA4BlD;IAED,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,OAAO,CAAC,iBAAiB,CAAiB;IAE1C,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAErE,OAAO;
|
|
1
|
+
{"version":3,"file":"DboBuilder.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/DboBuilder.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,uBAAuB,EACvB,UAAU,EAEX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,EAAE,EACF,IAAI,EAAE,SAAS,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EACL,aAAa,EACd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,eAAe,EAAqB,WAAW,EAAM,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,YAAY,EAA8B,MAAM,mBAAmB,CAAC;AAK7E,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAElC,KAAK,OAAO,GAAG;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,YAAY,GAAG,OAAO,GAAG;IAC5B,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,KAAK,kBAAkB,GAAG,OAAO,GAAG;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAGF,qBAAa,UAAU;IACrB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;IAE7B,EAAE,EAAE,EAAE,CAAC;IAEP,GAAG,EAAE,eAAe,CAAC;IACrB,cAAc,CAAC,EAAE,aAAa,CAAC;IAE/B;;OAEG;IACH,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,uBAAuB,CAAA;KAAE,EAAE,GAAG,SAAS,CAAC;IAC5E,WAAW,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IACxC,kBAAkB,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAErD,aAAa,EAAE,aAAa,CAAC;IAE7B,gBAAgB,QAAa,QAAQ,aAAa,CAAC,CA4BlD;IAED,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,OAAO,CAAC,iBAAiB,CAAiB;IAE1C,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAErE,OAAO;IAQP,OAAO,CAAC,IAAI,CAaX;IAED,OAAc,MAAM,cAAqB,SAAS,KAAG,QAAQ,UAAU,CAAC,CAGvE;IAGD,OAAO;IAIP,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;IAChB,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,EAElB;IAED,eAAe;IAIf,wBAAwB,sBAKvB;IAED,MAAM,UAAiB,MAAM,UAAU,GAAG,WAAW,UAAU,GAAG,SAAS,gBAAgB,WAAW,kBAErG;IACK,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IAsEvC,mBAAmB,gBAAiB,WAAW,UAAU,MAAM,KAAG,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAoB9F;IAED,KAAK,OAAQ,IAAI,kBAUhB;CACF"}
|
|
@@ -88,11 +88,10 @@ class DboBuilder {
|
|
|
88
88
|
throw "db missing";
|
|
89
89
|
this.db = this.prostgles.db;
|
|
90
90
|
this.dbo = {};
|
|
91
|
-
this.queryStreamer = new QueryStreamer_1.QueryStreamer(this
|
|
92
|
-
// this.queryStreamer.startQuery({ id: "1", query: "", onData: console.log as any });
|
|
91
|
+
this.queryStreamer = new QueryStreamer_1.QueryStreamer(this);
|
|
93
92
|
}
|
|
94
93
|
init = async () => {
|
|
95
|
-
/* If watchSchema then PubSubManager must be created (if possible) */
|
|
94
|
+
/* If watchSchema is enabled then PubSubManager must be created (if possible) */
|
|
96
95
|
await this.build();
|
|
97
96
|
if (this.prostgles.opts.watchSchema &&
|
|
98
97
|
(this.prostgles.opts.watchSchemaType === "DDL_trigger" || !this.prostgles.opts.watchSchemaType) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DboBuilder.js","sourceRoot":"","sources":["../../lib/DboBuilder/DboBuilder.ts"],"names":[],"mappings":";AACA;;;gGAGgG;;;;;;;;;;;;;;;;;AAEhG,qDAIyB;AACzB,wDAAiD;AAKjD,kEAA+D;AAK/D,oCAAiC;AAEjC,mDAAgD;AAChD,8DAA2D;AAC3D,2DAAmE;AACnE,+DAA4D;AAC5D,uDAA6E;AAC7E,mFAAgF;AAChF,yEAAsE;AACtE,qCAAkC;AAElC,oDAAkC;AAClC,oDAAkC;AAsBlC,MAAa,UAAU;IACrB,aAAa,CAAiB;IAC9B;;OAEG;IACH,WAAW,CAAkB;IAE7B,EAAE,CAAK;IAEP,GAAG,CAAkB;IACrB,cAAc,CAAiB;IAE/B;;OAEG;IACH,UAAU,CAAkE;IAC5E,WAAW,CAA6B;IACxC,kBAAkB,CAAmC;IAErD,aAAa,CAAgB;IAE7B,gBAAgB,GAAG,KAAK,IAA4B,EAAE;QACpD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,cAAc,CAAC;YAEnB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,6BAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,4BAAU;gBAAE,MAAM,kGAAkG,CAAC;YAE1H,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,KAAK,aAAa,EAAE;gBAC5F,IAAI,CAAC,SAAS,EAAE;oBACd,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,4GAA4G,CAAC,CAAA;iBAClL;qBAAM;oBACL,cAAc,GAAG,CAAC,KAAyC,EAAE,EAAE;wBAC7D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;oBACtC,CAAC,CAAA;iBACF;aACF;YAED,IAAI,CAAC,cAAc,GAAG,MAAM,6BAAa,CAAC,MAAM,CAAC;gBAC/C,UAAU,EAAE,IAAI;gBAChB,cAAc;aACf,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;YACrD,MAAM,sCAAsC,CAAC;SAC9C;QAED,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC,CAAA;IAED,iBAAiB,CAAU;IAC3B,SAAS,CAAS;IACV,iBAAiB,GAAc,EAAE,CAAC;IAE1C,SAAS,CAAY;IACrB,aAAa,CAAiB;IAE9B,cAAc,CAAuD;IAErE,YAAoB,SAAoB;QACtC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,MAAM,YAAY,CAAA;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,EAAgC,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"DboBuilder.js","sourceRoot":"","sources":["../../lib/DboBuilder/DboBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { DB } from "../initProstgles";
|
|
2
2
|
import { QueryIterablePool } from 'pg-iterator';
|
|
3
|
+
import { SQLOptions, SocketSQLStreamServer } from "prostgles-types";
|
|
3
4
|
import { PRGLIOSocket } from "./DboBuilderTypes";
|
|
4
|
-
import {
|
|
5
|
+
import { DboBuilder } from "./DboBuilder";
|
|
5
6
|
type ClientStreamedRequest = {
|
|
6
7
|
socket: PRGLIOSocket;
|
|
7
8
|
query: string;
|
|
9
|
+
options: SQLOptions | undefined;
|
|
8
10
|
persistConnection?: boolean;
|
|
9
11
|
};
|
|
10
12
|
type StreamedQuery = ClientStreamedRequest & {
|
|
@@ -12,8 +14,9 @@ type StreamedQuery = ClientStreamedRequest & {
|
|
|
12
14
|
};
|
|
13
15
|
export declare class QueryStreamer {
|
|
14
16
|
db: DB;
|
|
17
|
+
dboBuilder: DboBuilder;
|
|
15
18
|
socketQueries: Record<string, Record<string, StreamedQuery>>;
|
|
16
|
-
constructor(
|
|
19
|
+
constructor(dboBuilder: DboBuilder);
|
|
17
20
|
create: (query: ClientStreamedRequest) => Promise<SocketSQLStreamServer>;
|
|
18
21
|
}
|
|
19
22
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryStreamer.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/QueryStreamer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryStreamer.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/QueryStreamer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAY,UAAU,EAAyB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAE7B,CAAA;AACD,KAAK,aAAa,GAAG,qBAAqB,GAAG;IAC3C,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;CACtD,CAAA;AAWD,qBAAa,aAAa;IACxB,EAAE,EAAE,EAAE,CAAC;IACP,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAM;gBAEtD,UAAU,EAAE,UAAU;IAKlC,MAAM,UAAiB,qBAAqB,KAAG,QAAQ,qBAAqB,CAAC,CA2G5E;CACF"}
|
|
@@ -4,6 +4,8 @@ exports.QueryStreamer = void 0;
|
|
|
4
4
|
// import { Pool } from "pg";
|
|
5
5
|
const pg_iterator_1 = require("pg-iterator");
|
|
6
6
|
const prostgles_types_1 = require("prostgles-types");
|
|
7
|
+
const dboBuilderUtils_1 = require("./dboBuilderUtils");
|
|
8
|
+
const runSQL_1 = require("./runSQL");
|
|
7
9
|
const shortSocketIds = {};
|
|
8
10
|
const getSetShortSocketId = (socketId) => {
|
|
9
11
|
const shortId = socketId.slice(0, 3);
|
|
@@ -14,9 +16,11 @@ const getSetShortSocketId = (socketId) => {
|
|
|
14
16
|
};
|
|
15
17
|
class QueryStreamer {
|
|
16
18
|
db;
|
|
19
|
+
dboBuilder;
|
|
17
20
|
socketQueries = {};
|
|
18
|
-
constructor(
|
|
19
|
-
this.
|
|
21
|
+
constructor(dboBuilder) {
|
|
22
|
+
this.dboBuilder = dboBuilder;
|
|
23
|
+
this.db = dboBuilder.db;
|
|
20
24
|
}
|
|
21
25
|
create = async (query) => {
|
|
22
26
|
const { socket, persistConnection } = query;
|
|
@@ -27,31 +31,69 @@ class QueryStreamer {
|
|
|
27
31
|
if (this.socketQueries[id] && !persistConnection) {
|
|
28
32
|
throw `Must stop existing query ${id} first`;
|
|
29
33
|
}
|
|
30
|
-
// const pool = new Pool(this.db.$cn as any);
|
|
31
34
|
this.socketQueries[socketId] ??= {};
|
|
32
35
|
this.socketQueries[socketId][id] ??= {
|
|
33
36
|
...query,
|
|
34
37
|
iterablePool: undefined,
|
|
35
38
|
};
|
|
36
|
-
|
|
37
|
-
const batchSize = 1000;
|
|
39
|
+
const { options } = query;
|
|
38
40
|
const startStream = async () => {
|
|
39
41
|
const socketQuery = this.socketQueries[socketId]?.[id];
|
|
40
42
|
if (!socketQuery) {
|
|
41
43
|
throw "socket query not found";
|
|
42
44
|
}
|
|
43
|
-
|
|
45
|
+
// this.db.connect().then(client => { client.query({ rowMode: "array", text: "" }) }).catch(err => { console.log(err) });
|
|
46
|
+
const iterablePool = new pg_iterator_1.QueryIterablePool(this.db.$pool, { rowMode: "array" });
|
|
44
47
|
const iterable = iterablePool.query(query.query);
|
|
45
48
|
socketQuery.iterablePool = iterablePool;
|
|
49
|
+
// const connectionId = await iterablePool.query(`SELECT pg_backend_pid()`);
|
|
46
50
|
(async () => {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
let emittedPackets = 0;
|
|
52
|
+
let batchRows = [];
|
|
53
|
+
let finished = false;
|
|
54
|
+
const batchSize = 1000;
|
|
55
|
+
const emit = (type, rawError) => {
|
|
56
|
+
let packet;
|
|
57
|
+
const ended = type === "ended";
|
|
58
|
+
if (finished)
|
|
59
|
+
return;
|
|
60
|
+
finished = finished || ended;
|
|
61
|
+
if (type === "error") {
|
|
62
|
+
const error = (0, dboBuilderUtils_1.getSerializedClientErrorFromPGError)(rawError);
|
|
63
|
+
packet = { type: "error", error };
|
|
52
64
|
}
|
|
65
|
+
else if (!emittedPackets) {
|
|
66
|
+
const fields = runSQL_1.getDetailedFieldInfo.bind(this.dboBuilder)(iterablePool.fields);
|
|
67
|
+
packet = { type: "start", rows: batchRows, fields, ended };
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
packet = { type: "rows", rows: batchRows, ended };
|
|
71
|
+
}
|
|
72
|
+
socket.emit(channel, packet);
|
|
73
|
+
if (ended) {
|
|
74
|
+
iterablePool.release();
|
|
75
|
+
}
|
|
76
|
+
emittedPackets++;
|
|
77
|
+
};
|
|
78
|
+
try {
|
|
79
|
+
for await (const u of iterable) {
|
|
80
|
+
batchRows.push(u);
|
|
81
|
+
if (options?.streamLimit) {
|
|
82
|
+
if (batchRows.length >= options.streamLimit) {
|
|
83
|
+
emit("ended");
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (batchRows.length >= batchSize) {
|
|
88
|
+
emit("rows");
|
|
89
|
+
batchRows = [];
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
emit("ended");
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
emit("error", err);
|
|
53
96
|
}
|
|
54
|
-
socket.emit(channel, batchRows);
|
|
55
97
|
})();
|
|
56
98
|
};
|
|
57
99
|
const stop = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryStreamer.js","sourceRoot":"","sources":["../../lib/DboBuilder/QueryStreamer.ts"],"names":[],"mappings":";;;AACA,6BAA6B;AAC7B,6CAAgD;
|
|
1
|
+
{"version":3,"file":"QueryStreamer.js","sourceRoot":"","sources":["../../lib/DboBuilder/QueryStreamer.ts"],"names":[],"mappings":";;;AACA,6BAA6B;AAC7B,6CAAgD;AAChD,qDAAqG;AAErG,uDAAwE;AACxE,qCAAgD;AAchD,MAAM,cAAc,GAA2B,EAAE,CAAC;AAClD,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IACzB,cAAc,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IAChC,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAa,aAAa;IACxB,EAAE,CAAK;IACP,UAAU,CAAa;IACvB,aAAa,GAAkD,EAAE,CAAC;IAElE,YAAY,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,GAAG,KAAK,EAAE,KAA4B,EAAkC,EAAE;QAC9E,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,0BAAQ,CAAC,UAAU,KAAK,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC5D,MAAM,YAAY,GAAG,GAAG,OAAO,cAAc,CAAC;QAC9C,IAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAC;YAC9C,MAAM,4BAA4B,EAAE,QAAQ,CAAC;SAC9C;QAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACnC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAE,CAAC,EAAE,CAAC,KAAK;YACpC,GAAG,KAAK;YACR,YAAY,EAAE,SAAS;SACxB,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;QACzB,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvD,IAAG,CAAC,WAAW,EAAC;gBACd,MAAM,wBAAwB,CAAC;aAChC;YACD,0HAA0H;YAC1H,MAAM,YAAY,GAAG,IAAI,+BAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACvF,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjD,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;YACxC,4EAA4E;YAC5E,CAAC,KAAK,IAAI,EAAE;gBACV,IAAI,cAAc,GAAG,CAAC,CAAC;gBACvB,IAAI,SAAS,GAAU,EAAE,CAAC;gBAC1B,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,MAAM,SAAS,GAAG,IAAI,CAAC;gBAEvB,MAAM,IAAI,GAAG,CAAC,IAAgC,EAAE,QAAc,EAAE,EAAE;oBAChE,IAAI,MAAyC,CAAC;oBAC9C,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO,CAAC;oBAC/B,IAAG,QAAQ;wBAAE,OAAO;oBACpB,QAAQ,GAAG,QAAQ,IAAI,KAAK,CAAC;oBAC7B,IAAG,IAAI,KAAK,OAAO,EAAC;wBAClB,MAAM,KAAK,GAAG,IAAA,qDAAmC,EAAC,QAAQ,CAAC,CAAC;wBAC5D,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;qBACnC;yBAAM,IAAI,CAAC,cAAc,EAAE;wBAC1B,MAAM,MAAM,GAAG,6BAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,MAAa,CAAC,CAAC;wBACtF,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;qBAC5D;yBAAM;wBACL,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;qBACnD;oBACD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7B,IAAG,KAAK,EAAC;wBACP,YAAY,CAAC,OAAO,EAAE,CAAC;qBACxB;oBACD,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAA;gBAED,IAAI;oBACF,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ,EAAE;wBAC9B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAClB,IAAG,OAAO,EAAE,WAAW,EAAE;4BACvB,IAAG,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,WAAW,EAAC;gCACzC,IAAI,CAAC,OAAO,CAAC,CAAC;gCACd,MAAM;6BACP;yBACF;wBACD,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,EAAE;4BACjC,IAAI,CAAC,MAAM,CAAC,CAAC;4BACb,SAAS,GAAG,EAAE,CAAC;yBAChB;qBACF;oBACD,IAAI,CAAC,OAAO,CAAC,CAAC;iBAGf;gBAAC,OAAM,GAAG,EAAC;oBACV,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;iBACpB;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,CAAA;QAED,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QAC7D,CAAC,CAAA;QAED,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAEhC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACvC,OAAO,GAAG,IAAI,CAAC;YACf,IAAI;gBACF,MAAM,WAAW,EAAE,CAAC;gBACpB,EAAE,EAAE,CAAC;aACN;YAAC,OAAM,GAAG,EAAC;gBACV,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,sBAAsB,CAAC,CAAC;aACzC;QACH,CAAC,CAAC,CAAC;QAEH,qEAAqE;QACrE,UAAU,CAAC,GAAG,EAAE;YACd,IAAG,OAAO;gBAAE,OAAO;YACnB,IAAI,EAAE,CAAC;YACP,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACxC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO;YACL,OAAO;YACP,YAAY;SACb,CAAA;IACH,CAAC,CAAA;CACF;AAtHD,sCAsHC"}
|
|
@@ -3,7 +3,8 @@ import { DB, ProstglesInitOptions } from "../Prostgles";
|
|
|
3
3
|
import { LocalParams, SortItem } from "./DboBuilderTypes";
|
|
4
4
|
import { ViewHandler } from "./ViewHandler/ViewHandler";
|
|
5
5
|
export declare function escapeTSNames(str: string, capitalize?: boolean): string;
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function getSerializedClientErrorFromPGError(rawError: any, localParams?: LocalParams, view?: ViewHandler, allowedKeys?: string[]): any;
|
|
7
|
+
export declare function getClientErrorFromPGError(rawError: any, localParams?: LocalParams, view?: ViewHandler, allowedKeys?: string[]): Promise<never>;
|
|
7
8
|
/**
|
|
8
9
|
* Ensure the error is a serializable Object
|
|
9
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dboBuilderUtils.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/dboBuilderUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,WAAW,EAGZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,EAAE,EACF,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAO,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,CAKrE;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"dboBuilderUtils.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/dboBuilderUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,WAAW,EAGZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,EAAE,EACF,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAO,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,CAKrE;AAED,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,OA2BvI;AACD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,kBAE7H;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAejE;AAED,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,OAAO,EACL,GAAG,GACH,GAAG,GACH,GAAG,CAAA;IAEL;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,cAAc,mBAA0B,oBAAoB,CAAC,QAAQ,CAAC,KAAG,QAAQ,YAAY,EAAE,CAW3G,CAAA;AAGD,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAE9D;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,uBAAuB,GAAG,MAAM,OAAO,WAAW,CAKjG;AAED,eAAO,MAAM,mBAAmB,UAAW,QAAQ,EAAE,eAAe,MAAM,KAAG,MAAM,EAWlF,CAAA;AAED,eAAO,MAAM,UAAU,8BAUtB,CAAA;AAED,eAAO,MAAM,WAAW,gBAAiB,WAAW,GAAG,SAAS,SAAS,MAAM,WAU9E,CAAA"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.withUserRLS = exports.canEXECUTE = exports.prepareOrderByQuery = exports.postgresToTsType = exports.isPlainObject = exports.getConstraints = exports.parseError = exports.getClientErrorFromPGError = exports.escapeTSNames = void 0;
|
|
7
|
+
exports.withUserRLS = exports.canEXECUTE = exports.prepareOrderByQuery = exports.postgresToTsType = exports.isPlainObject = exports.getConstraints = exports.parseError = exports.getClientErrorFromPGError = exports.getSerializedClientErrorFromPGError = exports.escapeTSNames = void 0;
|
|
8
8
|
const prostgles_types_1 = require("prostgles-types");
|
|
9
9
|
const PubSubManager_1 = require("../PubSubManager/PubSubManager");
|
|
10
10
|
const DboBuilderTypes_1 = require("./DboBuilderTypes");
|
|
@@ -19,7 +19,8 @@ function escapeTSNames(str, capitalize = false) {
|
|
|
19
19
|
return JSON.stringify(res);
|
|
20
20
|
}
|
|
21
21
|
exports.escapeTSNames = escapeTSNames;
|
|
22
|
-
function
|
|
22
|
+
function getSerializedClientErrorFromPGError(rawError, localParams, view, allowedKeys) {
|
|
23
|
+
const err = rawError instanceof Error ? JSON.parse(JSON.stringify(rawError, Object.getOwnPropertyNames(rawError))) : rawError;
|
|
23
24
|
if (process.env.PRGL_DEBUG) {
|
|
24
25
|
console.trace(err);
|
|
25
26
|
}
|
|
@@ -42,7 +43,11 @@ function getClientErrorFromPGError(err, localParams, view, allowedKeys) {
|
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
|
-
return
|
|
46
|
+
return errObject;
|
|
47
|
+
}
|
|
48
|
+
exports.getSerializedClientErrorFromPGError = getSerializedClientErrorFromPGError;
|
|
49
|
+
function getClientErrorFromPGError(rawError, localParams, view, allowedKeys) {
|
|
50
|
+
return Promise.reject(getSerializedClientErrorFromPGError(rawError, localParams, view, allowedKeys));
|
|
46
51
|
}
|
|
47
52
|
exports.getClientErrorFromPGError = getClientErrorFromPGError;
|
|
48
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dboBuilderUtils.js","sourceRoot":"","sources":["../../lib/DboBuilder/dboBuilderUtils.ts"],"names":[],"mappings":";AACA;;;gGAGgG;;;AAEhG,qDAMyB;AAKzB,kEAA0D;AAC1D,uDAA+D;AAC/D,8DAA0D;AAE1D,mFAAkE;AAElE,uDAAoD;AACpD,SAAgB,aAAa,CAAC,GAAW,EAAE,UAAU,GAAG,KAAK;IAC3D,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,yBAAyB,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AALD,sCAKC;AAED,SAAgB,
|
|
1
|
+
{"version":3,"file":"dboBuilderUtils.js","sourceRoot":"","sources":["../../lib/DboBuilder/dboBuilderUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
import { AnyObject, SQLOptions } from "prostgles-types";
|
|
2
2
|
import { DboBuilder, LocalParams } from "./DboBuilder";
|
|
3
3
|
import { DB, Prostgles } from "../Prostgles";
|
|
4
|
+
import pg from "pg-promise/typescript/pg-subset";
|
|
4
5
|
export declare function runSQL(this: DboBuilder, queryWithoutRLS: string, args: undefined | AnyObject | any[], options: SQLOptions | undefined, localParams?: LocalParams): Promise<any>;
|
|
5
6
|
export declare function cacheDBTypes(this: DboBuilder): Promise<void>;
|
|
7
|
+
export declare function getDetailedFieldInfo(this: DboBuilder, fields: pg.IColumn[]): {
|
|
8
|
+
tsDataType: "string" | "number" | "boolean" | "number[]" | "boolean[]" | "string[]" | "any[]" | "any";
|
|
9
|
+
dataType: import("prostgles-types").PG_COLUMN_UDT_DATA_TYPE;
|
|
10
|
+
udt_name: import("prostgles-types").PG_COLUMN_UDT_DATA_TYPE;
|
|
11
|
+
tableName: string | undefined;
|
|
12
|
+
tableSchema: string | undefined;
|
|
13
|
+
columnName: string | undefined;
|
|
14
|
+
name: string;
|
|
15
|
+
oid: number;
|
|
16
|
+
dataTypeID: number;
|
|
17
|
+
tableID: number;
|
|
18
|
+
columnID: number;
|
|
19
|
+
dataTypeSize: number;
|
|
20
|
+
dataTypeModifier: number;
|
|
21
|
+
format: string;
|
|
22
|
+
}[];
|
|
6
23
|
export declare const canRunSQL: (prostgles: Prostgles, localParams?: LocalParams) => Promise<boolean>;
|
|
7
24
|
export declare const canCreateTables: (db: DB) => Promise<boolean>;
|
|
8
25
|
//# sourceMappingURL=runSQL.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runSQL.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/runSQL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAyB,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"runSQL.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/runSQL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAyB,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAGjD,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,gBA6FtK;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,iBAyBlD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;IAiB1E;AAED,eAAO,MAAM,SAAS,cAAqB,SAAS,gBAAgB,WAAW,KAAG,QAAQ,OAAO,CAQhG,CAAA;AAED,eAAO,MAAM,eAAe,cAAmB,QAAQ,OAAO,CAE7D,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.canCreateTables = exports.canRunSQL = exports.cacheDBTypes = exports.runSQL = void 0;
|
|
3
|
+
exports.canCreateTables = exports.canRunSQL = exports.getDetailedFieldInfo = exports.cacheDBTypes = exports.runSQL = void 0;
|
|
4
4
|
const DboBuilder_1 = require("./DboBuilder");
|
|
5
5
|
const PubSubManager_1 = require("../PubSubManager/PubSubManager");
|
|
6
6
|
const pg_promise_1 = require("pg-promise");
|
|
@@ -27,7 +27,7 @@ async function runSQL(queryWithoutRLS, args, options, localParams) {
|
|
|
27
27
|
if (returnType === "stream") {
|
|
28
28
|
if (!socket)
|
|
29
29
|
throw "Only allowed with client socket";
|
|
30
|
-
const streamInfo = await this.queryStreamer.create({ socket, query: DboBuilder_1.pgp.as.format(queryWithRLS, args) });
|
|
30
|
+
const streamInfo = await this.queryStreamer.create({ socket, query: DboBuilder_1.pgp.as.format(queryWithRLS, args), options });
|
|
31
31
|
return streamInfo;
|
|
32
32
|
}
|
|
33
33
|
else if (returnType === "noticeSubscription") {
|
|
@@ -86,18 +86,7 @@ async function runSQL(queryWithoutRLS, args, options, localParams) {
|
|
|
86
86
|
const qres = {
|
|
87
87
|
duration: 0,
|
|
88
88
|
..._qres,
|
|
89
|
-
fields: fields
|
|
90
|
-
const dataType = this.DATA_TYPES.find(dt => +dt.oid === +f.dataTypeID)?.typname ?? "text", table = this.USER_TABLES.find(t => +t.relid === +f.tableID), column = this.USER_TABLE_COLUMNS.find(c => +c.relid === +f.tableID && c.ordinal_position === f.columnID), tsDataType = (0, DboBuilder_1.postgresToTsType)(dataType);
|
|
91
|
-
return {
|
|
92
|
-
...f,
|
|
93
|
-
tsDataType,
|
|
94
|
-
dataType,
|
|
95
|
-
udt_name: dataType,
|
|
96
|
-
tableName: table?.relname,
|
|
97
|
-
tableSchema: table?.schemaname,
|
|
98
|
-
columnName: column?.column_name
|
|
99
|
-
};
|
|
100
|
-
}) ?? []
|
|
89
|
+
fields: getDetailedFieldInfo.bind(this)(fields),
|
|
101
90
|
};
|
|
102
91
|
return qres;
|
|
103
92
|
}
|
|
@@ -109,7 +98,11 @@ exports.runSQL = runSQL;
|
|
|
109
98
|
async function cacheDBTypes() {
|
|
110
99
|
this.DATA_TYPES ??= await this.db.any("SELECT oid, typname FROM pg_type") ?? [];
|
|
111
100
|
this.USER_TABLES ??= await this.db.any(`
|
|
112
|
-
SELECT
|
|
101
|
+
SELECT
|
|
102
|
+
relid,
|
|
103
|
+
relname,
|
|
104
|
+
schemaname,
|
|
105
|
+
array_to_json(array_agg(c.column_name) FILTER (WHERE c.column_name IS NOT NULL)) as pkey_columns
|
|
113
106
|
FROM pg_catalog.pg_statio_user_tables t
|
|
114
107
|
LEFT JOIN (
|
|
115
108
|
SELECT a.attname as column_name, i.indrelid as table_oid
|
|
@@ -129,6 +122,21 @@ async function cacheDBTypes() {
|
|
|
129
122
|
`);
|
|
130
123
|
}
|
|
131
124
|
exports.cacheDBTypes = cacheDBTypes;
|
|
125
|
+
function getDetailedFieldInfo(fields) {
|
|
126
|
+
return fields?.map(f => {
|
|
127
|
+
const dataType = this.DATA_TYPES.find(dt => +dt.oid === +f.dataTypeID)?.typname ?? "text", table = this.USER_TABLES.find(t => +t.relid === +f.tableID), column = this.USER_TABLE_COLUMNS.find(c => +c.relid === +f.tableID && c.ordinal_position === f.columnID), tsDataType = (0, DboBuilder_1.postgresToTsType)(dataType);
|
|
128
|
+
return {
|
|
129
|
+
...f,
|
|
130
|
+
tsDataType,
|
|
131
|
+
dataType,
|
|
132
|
+
udt_name: dataType,
|
|
133
|
+
tableName: table?.relname,
|
|
134
|
+
tableSchema: table?.schemaname,
|
|
135
|
+
columnName: column?.column_name
|
|
136
|
+
};
|
|
137
|
+
}) ?? [];
|
|
138
|
+
}
|
|
139
|
+
exports.getDetailedFieldInfo = getDetailedFieldInfo;
|
|
132
140
|
const canRunSQL = async (prostgles, localParams) => {
|
|
133
141
|
if (!localParams?.socket || !localParams?.httpReq)
|
|
134
142
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runSQL.js","sourceRoot":"","sources":["../../lib/DboBuilder/runSQL.ts"],"names":[],"mappings":";;;AACA,6CAA8E;AAE9E,kEAA+D;AAC/D,2CAAsD;
|
|
1
|
+
{"version":3,"file":"runSQL.js","sourceRoot":"","sources":["../../lib/DboBuilder/runSQL.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,14 +118,12 @@ export class DboBuilder {
|
|
|
118
118
|
if (!this.prostgles.db) throw "db missing"
|
|
119
119
|
this.db = this.prostgles.db;
|
|
120
120
|
this.dbo = {} as unknown as DBHandlerServer;
|
|
121
|
-
this.queryStreamer = new QueryStreamer(this
|
|
122
|
-
// this.queryStreamer.startQuery({ id: "1", query: "", onData: console.log as any });
|
|
121
|
+
this.queryStreamer = new QueryStreamer(this);
|
|
123
122
|
}
|
|
124
123
|
|
|
125
124
|
private init = async () => {
|
|
126
125
|
|
|
127
|
-
|
|
128
|
-
/* If watchSchema then PubSubManager must be created (if possible) */
|
|
126
|
+
/* If watchSchema is enabled then PubSubManager must be created (if possible) */
|
|
129
127
|
await this.build();
|
|
130
128
|
if (
|
|
131
129
|
this.prostgles.opts.watchSchema &&
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { DB } from "../initProstgles";
|
|
2
2
|
// import { Pool } from "pg";
|
|
3
3
|
import { QueryIterablePool } from 'pg-iterator';
|
|
4
|
+
import { CHANNELS, SQLOptions, SocketSQLStreamPacket, SocketSQLStreamServer } from "prostgles-types";
|
|
4
5
|
import { PRGLIOSocket } from "./DboBuilderTypes";
|
|
5
|
-
import {
|
|
6
|
+
import { getSerializedClientErrorFromPGError } from "./dboBuilderUtils";
|
|
7
|
+
import { getDetailedFieldInfo } from "./runSQL";
|
|
8
|
+
import { DboBuilder } from "./DboBuilder";
|
|
6
9
|
|
|
7
10
|
type ClientStreamedRequest = {
|
|
8
11
|
socket: PRGLIOSocket;
|
|
9
12
|
query: string;
|
|
13
|
+
options: SQLOptions | undefined;
|
|
10
14
|
persistConnection?: boolean;
|
|
11
15
|
|
|
12
16
|
}
|
|
@@ -25,10 +29,12 @@ const getSetShortSocketId = (socketId: string) => {
|
|
|
25
29
|
|
|
26
30
|
export class QueryStreamer {
|
|
27
31
|
db: DB;
|
|
32
|
+
dboBuilder: DboBuilder;
|
|
28
33
|
socketQueries: Record<string, Record<string, StreamedQuery>> = {};
|
|
29
34
|
|
|
30
|
-
constructor(
|
|
31
|
-
this.
|
|
35
|
+
constructor(dboBuilder: DboBuilder) {
|
|
36
|
+
this.dboBuilder = dboBuilder;
|
|
37
|
+
this.db = dboBuilder.db;
|
|
32
38
|
}
|
|
33
39
|
|
|
34
40
|
create = async (query: ClientStreamedRequest): Promise<SocketSQLStreamServer> => {
|
|
@@ -41,33 +47,69 @@ export class QueryStreamer {
|
|
|
41
47
|
throw `Must stop existing query ${id} first`;
|
|
42
48
|
}
|
|
43
49
|
|
|
44
|
-
// const pool = new Pool(this.db.$cn as any);
|
|
45
|
-
|
|
46
50
|
this.socketQueries[socketId] ??= {}
|
|
47
51
|
this.socketQueries[socketId]![id] ??= {
|
|
48
52
|
...query,
|
|
49
53
|
iterablePool: undefined,
|
|
50
54
|
};
|
|
51
|
-
|
|
52
|
-
let batchRows: any[] = [];
|
|
53
|
-
const batchSize = 1000;
|
|
55
|
+
const { options } = query
|
|
54
56
|
const startStream = async () => {
|
|
55
57
|
const socketQuery = this.socketQueries[socketId]?.[id];
|
|
56
58
|
if(!socketQuery){
|
|
57
59
|
throw "socket query not found";
|
|
58
60
|
}
|
|
59
|
-
|
|
61
|
+
// this.db.connect().then(client => { client.query({ rowMode: "array", text: "" }) }).catch(err => { console.log(err) });
|
|
62
|
+
const iterablePool = new QueryIterablePool(this.db.$pool as any, { rowMode: "array" });
|
|
60
63
|
const iterable = iterablePool.query(query.query);
|
|
61
64
|
socketQuery.iterablePool = iterablePool;
|
|
65
|
+
// const connectionId = await iterablePool.query(`SELECT pg_backend_pid()`);
|
|
62
66
|
(async () => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
let emittedPackets = 0;
|
|
68
|
+
let batchRows: any[] = [];
|
|
69
|
+
let finished = false;
|
|
70
|
+
const batchSize = 1000;
|
|
71
|
+
|
|
72
|
+
const emit = (type: "rows" | "error" | "ended", rawError?: any) => {
|
|
73
|
+
let packet: SocketSQLStreamPacket | undefined;
|
|
74
|
+
const ended = type === "ended";
|
|
75
|
+
if(finished) return;
|
|
76
|
+
finished = finished || ended;
|
|
77
|
+
if(type === "error"){
|
|
78
|
+
const error = getSerializedClientErrorFromPGError(rawError);
|
|
79
|
+
packet = { type: "error", error };
|
|
80
|
+
} else if (!emittedPackets) {
|
|
81
|
+
const fields = getDetailedFieldInfo.bind(this.dboBuilder)(iterablePool.fields as any);
|
|
82
|
+
packet = { type: "start", rows: batchRows, fields, ended };
|
|
83
|
+
} else {
|
|
84
|
+
packet = { type: "rows", rows: batchRows, ended };
|
|
85
|
+
}
|
|
86
|
+
socket.emit(channel, packet);
|
|
87
|
+
if(ended){
|
|
88
|
+
iterablePool.release();
|
|
89
|
+
}
|
|
90
|
+
emittedPackets++;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
try {
|
|
94
|
+
for await (const u of iterable) {
|
|
95
|
+
batchRows.push(u);
|
|
96
|
+
if(options?.streamLimit) {
|
|
97
|
+
if(batchRows.length >= options.streamLimit){
|
|
98
|
+
emit("ended");
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (batchRows.length >= batchSize) {
|
|
103
|
+
emit("rows");
|
|
104
|
+
batchRows = [];
|
|
105
|
+
}
|
|
68
106
|
}
|
|
107
|
+
emit("ended");
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
} catch(err){
|
|
111
|
+
emit("error", err);
|
|
69
112
|
}
|
|
70
|
-
socket.emit(channel, batchRows);
|
|
71
113
|
})();
|
|
72
114
|
}
|
|
73
115
|
|
|
@@ -29,7 +29,8 @@ export function escapeTSNames(str: string, capitalize = false): string {
|
|
|
29
29
|
return JSON.stringify(res);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export function
|
|
32
|
+
export function getSerializedClientErrorFromPGError(rawError: any, localParams?: LocalParams, view?: ViewHandler, allowedKeys?: string[]) {
|
|
33
|
+
const err = rawError instanceof Error ? JSON.parse(JSON.stringify(rawError, Object.getOwnPropertyNames(rawError))) : rawError
|
|
33
34
|
if (process.env.PRGL_DEBUG) {
|
|
34
35
|
console.trace(err)
|
|
35
36
|
}
|
|
@@ -54,7 +55,10 @@ export function getClientErrorFromPGError(err: any, localParams?: LocalParams, v
|
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
return
|
|
58
|
+
return errObject;
|
|
59
|
+
}
|
|
60
|
+
export function getClientErrorFromPGError(rawError: any, localParams?: LocalParams, view?: ViewHandler, allowedKeys?: string[]) {
|
|
61
|
+
return Promise.reject(getSerializedClientErrorFromPGError(rawError, localParams, view, allowedKeys));
|
|
58
62
|
}
|
|
59
63
|
|
|
60
64
|
/**
|
package/lib/DboBuilder/runSQL.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { DboBuilder, LocalParams, pgp, postgresToTsType } from "./DboBuilder";
|
|
|
3
3
|
import { DB, Prostgles } from "../Prostgles";
|
|
4
4
|
import { PubSubManager } from "../PubSubManager/PubSubManager";
|
|
5
5
|
import { ParameterizedQuery as PQ } from 'pg-promise';
|
|
6
|
+
import pg from "pg-promise/typescript/pg-subset";
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
export async function runSQL(this: DboBuilder, queryWithoutRLS: string, args: undefined | AnyObject | any[], options: SQLOptions | undefined, localParams?: LocalParams) {
|
|
@@ -31,7 +32,7 @@ export async function runSQL(this: DboBuilder, queryWithoutRLS: string, args: un
|
|
|
31
32
|
const db = localParams?.tx?.t || this.db;
|
|
32
33
|
if (returnType === "stream") {
|
|
33
34
|
if (!socket) throw "Only allowed with client socket";
|
|
34
|
-
const streamInfo = await this.queryStreamer.create({ socket, query: pgp.as.format(queryWithRLS, args) });
|
|
35
|
+
const streamInfo = await this.queryStreamer.create({ socket, query: pgp.as.format(queryWithRLS, args), options });
|
|
35
36
|
return streamInfo;
|
|
36
37
|
|
|
37
38
|
} else if (returnType === "noticeSubscription") {
|
|
@@ -92,22 +93,7 @@ export async function runSQL(this: DboBuilder, queryWithoutRLS: string, args: un
|
|
|
92
93
|
const qres: SQLResult<typeof returnType> = {
|
|
93
94
|
duration: 0,
|
|
94
95
|
..._qres,
|
|
95
|
-
fields: fields
|
|
96
|
-
const dataType = this.DATA_TYPES!.find(dt => +dt.oid === +f.dataTypeID)?.typname ?? "text",
|
|
97
|
-
table = this.USER_TABLES!.find(t => +t.relid === +f.tableID),
|
|
98
|
-
column = this.USER_TABLE_COLUMNS!.find(c => +c.relid === +f.tableID && c.ordinal_position === f.columnID),
|
|
99
|
-
tsDataType = postgresToTsType(dataType);
|
|
100
|
-
|
|
101
|
-
return {
|
|
102
|
-
...f,
|
|
103
|
-
tsDataType,
|
|
104
|
-
dataType,
|
|
105
|
-
udt_name: dataType,
|
|
106
|
-
tableName: table?.relname,
|
|
107
|
-
tableSchema: table?.schemaname,
|
|
108
|
-
columnName: column?.column_name
|
|
109
|
-
}
|
|
110
|
-
}) ?? []
|
|
96
|
+
fields: getDetailedFieldInfo.bind(this)(fields),
|
|
111
97
|
};
|
|
112
98
|
return qres;
|
|
113
99
|
}
|
|
@@ -118,7 +104,11 @@ export async function runSQL(this: DboBuilder, queryWithoutRLS: string, args: un
|
|
|
118
104
|
export async function cacheDBTypes(this: DboBuilder) {
|
|
119
105
|
this.DATA_TYPES ??= await this.db.any("SELECT oid, typname FROM pg_type") ?? [];
|
|
120
106
|
this.USER_TABLES ??= await this.db.any(`
|
|
121
|
-
SELECT
|
|
107
|
+
SELECT
|
|
108
|
+
relid,
|
|
109
|
+
relname,
|
|
110
|
+
schemaname,
|
|
111
|
+
array_to_json(array_agg(c.column_name) FILTER (WHERE c.column_name IS NOT NULL)) as pkey_columns
|
|
122
112
|
FROM pg_catalog.pg_statio_user_tables t
|
|
123
113
|
LEFT JOIN (
|
|
124
114
|
SELECT a.attname as column_name, i.indrelid as table_oid
|
|
@@ -138,6 +128,25 @@ export async function cacheDBTypes(this: DboBuilder) {
|
|
|
138
128
|
`);
|
|
139
129
|
}
|
|
140
130
|
|
|
131
|
+
export function getDetailedFieldInfo(this: DboBuilder, fields: pg.IColumn[]) {
|
|
132
|
+
return fields?.map(f => {
|
|
133
|
+
const dataType = this.DATA_TYPES!.find(dt => +dt.oid === +f.dataTypeID)?.typname ?? "text",
|
|
134
|
+
table = this.USER_TABLES!.find(t => +t.relid === +f.tableID),
|
|
135
|
+
column = this.USER_TABLE_COLUMNS!.find(c => +c.relid === +f.tableID && c.ordinal_position === f.columnID),
|
|
136
|
+
tsDataType = postgresToTsType(dataType);
|
|
137
|
+
|
|
138
|
+
return {
|
|
139
|
+
...f,
|
|
140
|
+
tsDataType,
|
|
141
|
+
dataType,
|
|
142
|
+
udt_name: dataType,
|
|
143
|
+
tableName: table?.relname,
|
|
144
|
+
tableSchema: table?.schemaname,
|
|
145
|
+
columnName: column?.column_name
|
|
146
|
+
}
|
|
147
|
+
}) ?? [];
|
|
148
|
+
}
|
|
149
|
+
|
|
141
150
|
export const canRunSQL = async (prostgles: Prostgles, localParams?: LocalParams): Promise<boolean> => {
|
|
142
151
|
if (!localParams?.socket || !localParams?.httpReq) return true;
|
|
143
152
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prostgles-server",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.126",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"pg-iterator": "^0.3.0",
|
|
46
46
|
"pg-promise": "^11.5.4",
|
|
47
47
|
"prostgles-client": "^4.0.53",
|
|
48
|
-
"prostgles-types": "^4.0.
|
|
48
|
+
"prostgles-types": "^4.0.61"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@types/bluebird": "^3.5.36",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@types/node": "^14.14.16",
|
|
13
|
-
"prostgles-client": "^4.0.
|
|
13
|
+
"prostgles-client": "^4.0.58",
|
|
14
14
|
"prostgles-types": "^4.0.51",
|
|
15
15
|
"socket.io-client": "^4.7.1"
|
|
16
16
|
},
|
|
@@ -75,11 +75,11 @@
|
|
|
75
75
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
|
76
76
|
},
|
|
77
77
|
"node_modules/prostgles-client": {
|
|
78
|
-
"version": "4.0.
|
|
79
|
-
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-4.0.
|
|
80
|
-
"integrity": "sha512-
|
|
78
|
+
"version": "4.0.58",
|
|
79
|
+
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-4.0.58.tgz",
|
|
80
|
+
"integrity": "sha512-VoO2+tjtLwZVwy2Ldod3y4D3rM0XYM1Lw1ft4mZ56F6LXLDtlqcJergzA93OHxk1ZFBoeeyH/+rFvOdjvThVfA==",
|
|
81
81
|
"dependencies": {
|
|
82
|
-
"prostgles-types": "^4.0.
|
|
82
|
+
"prostgles-types": "^4.0.61"
|
|
83
83
|
},
|
|
84
84
|
"peerDependencies": {
|
|
85
85
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
@@ -91,9 +91,9 @@
|
|
|
91
91
|
}
|
|
92
92
|
},
|
|
93
93
|
"node_modules/prostgles-types": {
|
|
94
|
-
"version": "4.0.
|
|
95
|
-
"resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-4.0.
|
|
96
|
-
"integrity": "sha512-
|
|
94
|
+
"version": "4.0.61",
|
|
95
|
+
"resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-4.0.61.tgz",
|
|
96
|
+
"integrity": "sha512-VMKbyrl1JxtJ+61GVQDuTn/6ZS/auVpymnt2Lol95Qz5xAocOQ0PHf/xmoxbtlc62I2JgLyYOomtpetucZBEpA==",
|
|
97
97
|
"dependencies": {
|
|
98
98
|
"json-schema": "^0.4.0"
|
|
99
99
|
}
|
|
@@ -213,17 +213,17 @@
|
|
|
213
213
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
|
214
214
|
},
|
|
215
215
|
"prostgles-client": {
|
|
216
|
-
"version": "4.0.
|
|
217
|
-
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-4.0.
|
|
218
|
-
"integrity": "sha512-
|
|
216
|
+
"version": "4.0.58",
|
|
217
|
+
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-4.0.58.tgz",
|
|
218
|
+
"integrity": "sha512-VoO2+tjtLwZVwy2Ldod3y4D3rM0XYM1Lw1ft4mZ56F6LXLDtlqcJergzA93OHxk1ZFBoeeyH/+rFvOdjvThVfA==",
|
|
219
219
|
"requires": {
|
|
220
|
-
"prostgles-types": "^4.0.
|
|
220
|
+
"prostgles-types": "^4.0.61"
|
|
221
221
|
}
|
|
222
222
|
},
|
|
223
223
|
"prostgles-types": {
|
|
224
|
-
"version": "4.0.
|
|
225
|
-
"resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-4.0.
|
|
226
|
-
"integrity": "sha512-
|
|
224
|
+
"version": "4.0.61",
|
|
225
|
+
"resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-4.0.61.tgz",
|
|
226
|
+
"integrity": "sha512-VMKbyrl1JxtJ+61GVQDuTn/6ZS/auVpymnt2Lol95Qz5xAocOQ0PHf/xmoxbtlc62I2JgLyYOomtpetucZBEpA==",
|
|
227
227
|
"requires": {
|
|
228
228
|
"json-schema": "^0.4.0"
|
|
229
229
|
}
|
|
@@ -1,41 +1,42 @@
|
|
|
1
1
|
import { strict as assert } from 'assert';
|
|
2
2
|
import type { DBHandlerClient, Auth } from "./client/index";
|
|
3
|
-
import { DBSchemaTable, isDefined } from "prostgles-types";
|
|
3
|
+
import { DBSchemaTable, SocketSQLStreamPacket, isDefined } from "prostgles-types";
|
|
4
4
|
import { tryRun, tryRunP } from './isomorphic_queries';
|
|
5
|
+
import { reject } from 'bluebird';
|
|
5
6
|
|
|
6
7
|
export default async function client_only(db: DBHandlerClient, auth: Auth, log: (...args: any[]) => any, methods, tableSchema: DBSchemaTable[], token: string){
|
|
7
8
|
await Promise.all([1e3, 1e2].map(async (numberOfRows) => {
|
|
8
9
|
await tryRunP("SQL Stream", async (resolve) => {
|
|
9
10
|
const res = await db.sql!(`SELECT v.* FROM generate_series(1, ${numberOfRows}) v`, {}, { returnType: "stream" });
|
|
10
11
|
let rows: any[] = [];
|
|
11
|
-
const listener = async (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
const listener = async (packet: SocketSQLStreamPacket) => {
|
|
13
|
+
if(packet.type === "error"){
|
|
14
|
+
reject(packet.error);
|
|
15
|
+
} else {
|
|
16
|
+
rows = rows.concat(packet.rows);
|
|
17
|
+
if(packet.ended){
|
|
18
|
+
assert.equal(rows.length, numberOfRows);
|
|
19
|
+
resolve("ok");
|
|
20
|
+
}
|
|
16
21
|
}
|
|
17
22
|
};
|
|
18
23
|
const startHandler = await res.start(listener);
|
|
19
|
-
const { stop } = startHandler;
|
|
20
24
|
});
|
|
21
25
|
}));
|
|
22
26
|
await tryRunP("SQL Stream parallel execution + parameters", async (resolve, reject) => {
|
|
23
27
|
const getExpected = (val: string) => new Promise(async (resolve, reject) => {
|
|
24
28
|
const res = await db.sql!("SELECT ${val} as val", { val }, { returnType: "stream" });
|
|
25
|
-
|
|
26
|
-
const listener = async (batchRows) => {
|
|
27
|
-
rows = rows.concat(batchRows);
|
|
29
|
+
const listener = async (packet: SocketSQLStreamPacket) => {
|
|
28
30
|
try {
|
|
29
|
-
assert.
|
|
30
|
-
assert.equal(
|
|
31
|
+
assert.equal(packet.type, "start");
|
|
32
|
+
assert.equal(packet.ended, true);
|
|
33
|
+
assert.deepStrictEqual(packet.rows, [[val]]);
|
|
31
34
|
resolve(1);
|
|
32
35
|
} catch(err){
|
|
33
36
|
reject(err);
|
|
34
|
-
stop();
|
|
35
37
|
}
|
|
36
38
|
};
|
|
37
39
|
const startHandler = await res.start(listener);
|
|
38
|
-
const { stop } = startHandler;
|
|
39
40
|
});
|
|
40
41
|
let resolved = 0;
|
|
41
42
|
const expected = ["a", "b", "c"];
|
|
@@ -48,6 +49,92 @@ export default async function client_only(db: DBHandlerClient, auth: Auth, log:
|
|
|
48
49
|
}).catch(reject);
|
|
49
50
|
})
|
|
50
51
|
});
|
|
52
|
+
await tryRunP("SQL Stream query error", async (resolve, reject) => {
|
|
53
|
+
const res = await db.sql!("SELECT * FROM not_existing_table", {}, { returnType: "stream" });
|
|
54
|
+
const listener = async (packet: SocketSQLStreamPacket) => {
|
|
55
|
+
try {
|
|
56
|
+
assert.equal(packet.type, "error");
|
|
57
|
+
assert.equal(packet.error.message, 'relation "not_existing_table" does not exist');
|
|
58
|
+
resolve("ok");
|
|
59
|
+
} catch(err){
|
|
60
|
+
reject(err);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const startHandler = await res.start(listener);
|
|
64
|
+
});
|
|
65
|
+
await tryRunP("SQL Stream streamLimit", async (resolve, reject) => {
|
|
66
|
+
const generate_series = "SELECT * FROM generate_series(1, 100)";
|
|
67
|
+
const res = await db.sql!(generate_series, {}, { returnType: "stream", streamLimit: 10 });
|
|
68
|
+
const listener = async (packet: SocketSQLStreamPacket) => {
|
|
69
|
+
if(packet.type === "error"){
|
|
70
|
+
reject(packet.error);
|
|
71
|
+
} else {
|
|
72
|
+
assert.equal(packet.type, "start");
|
|
73
|
+
assert.equal(packet.ended, true);
|
|
74
|
+
assert.equal(packet.rows.length, 10);
|
|
75
|
+
|
|
76
|
+
const normalSql = await db.sql!(generate_series, {});
|
|
77
|
+
|
|
78
|
+
/** fields the same as on normal sql request */
|
|
79
|
+
assert.deepStrictEqual(packet.fields, normalSql.fields);
|
|
80
|
+
|
|
81
|
+
/** result is rowMode=array */
|
|
82
|
+
assert.equal(Array.isArray(packet.rows), true);
|
|
83
|
+
assert.equal(Array.isArray(packet.rows[0]), true);
|
|
84
|
+
|
|
85
|
+
assert.deepStrictEqual(packet.rows.flat(), Array.from({ length: 10 }, (_, i) => i + 1).flat());
|
|
86
|
+
resolve("ok");
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const startHandler = await res.start(listener);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
await tryRunP("SQL Stream table fields are the same as on default request", async (resolve, reject) => {
|
|
93
|
+
await db.sql!("INSERT INTO planes (last_updated) VALUES (56789);", {});
|
|
94
|
+
const res = await db.sql!("SELECT * FROM planes", {}, { returnType: "stream" });
|
|
95
|
+
const listener = async (packet: SocketSQLStreamPacket) => {
|
|
96
|
+
if(packet.type === "error"){
|
|
97
|
+
reject(packet.error);
|
|
98
|
+
} else {
|
|
99
|
+
assert.equal(packet.type, "start");
|
|
100
|
+
assert.equal(packet.ended, true);
|
|
101
|
+
assert.equal(packet.rows.length, 1);
|
|
102
|
+
const normalSql = await db.sql!("SELECT * FROM planes LIMIT 1", {});
|
|
103
|
+
await db.sql!("DELETE FROM planes", {});
|
|
104
|
+
assert.deepStrictEqual(packet.fields, normalSql.fields);
|
|
105
|
+
assert.equal(packet.fields.length > 0, true);
|
|
106
|
+
resolve("ok");
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
const startHandler = await res.start(listener);
|
|
110
|
+
});
|
|
111
|
+
// await tryRunP("SQL Stream ensure the connection is never released (same pg_backend_pid is the same for subsequent) queries when using persistConnectionId", async (resolve, reject) => {
|
|
112
|
+
// const res = await db.sql!("SELECT pg_backend_pid()", {}, { returnType: "stream", persistConnectionId: true });
|
|
113
|
+
// const listener = async (packet: SocketSQLStreamPacket) => {
|
|
114
|
+
// if(packet.type === "error"){
|
|
115
|
+
// reject(packet.error);
|
|
116
|
+
// } else {
|
|
117
|
+
// assert.equal(packet.type, "start");
|
|
118
|
+
// assert.equal(packet.ended, true);
|
|
119
|
+
// assert.equal(packet.rows.length, 1);
|
|
120
|
+
// const pid = packet.rows[0].pg_backend_pid;
|
|
121
|
+
// const res2 = await db.sql!("SELECT pg_backend_pid()", {}, { returnType: "stream", persistConnectionId: true });
|
|
122
|
+
// const listener2 = async (packet: SocketSQLStreamPacket) => {
|
|
123
|
+
// if(packet.type === "error"){
|
|
124
|
+
// reject(packet.error);
|
|
125
|
+
// } else {
|
|
126
|
+
// assert.equal(packet.type, "start");
|
|
127
|
+
// assert.equal(packet.ended, true);
|
|
128
|
+
// assert.equal(packet.rows.length, 1);
|
|
129
|
+
// assert.equal(packet.rows[0].pg_backend_pid, pid);
|
|
130
|
+
// resolve("ok");
|
|
131
|
+
// }
|
|
132
|
+
// };
|
|
133
|
+
// const startHandler2 = await res2.start(listener2);
|
|
134
|
+
// }
|
|
135
|
+
// };
|
|
136
|
+
// const startHandler = await res.start(listener);
|
|
137
|
+
// });
|
|
51
138
|
|
|
52
139
|
|
|
53
140
|
/**
|
|
@@ -72,7 +159,6 @@ export default async function client_only(db: DBHandlerClient, auth: Auth, log:
|
|
|
72
159
|
});
|
|
73
160
|
|
|
74
161
|
const testRealtime = () => {
|
|
75
|
-
|
|
76
162
|
return new Promise(async (resolve, reject) => {
|
|
77
163
|
try {
|
|
78
164
|
|
|
@@ -82,6 +168,7 @@ export default async function client_only(db: DBHandlerClient, auth: Auth, log:
|
|
|
82
168
|
|
|
83
169
|
/* RAWSQL */
|
|
84
170
|
await tryRun("SQL Full result", async () => {
|
|
171
|
+
if(!db.sql) throw "db.sql missing";
|
|
85
172
|
const sqlStatement = await db.sql("SELECT $1", [1], { returnType: "statement" });
|
|
86
173
|
assert.equal(sqlStatement, "SELECT 1", "db.sql statement query failed");
|
|
87
174
|
|
|
@@ -113,6 +200,7 @@ export default async function client_only(db: DBHandlerClient, auth: Auth, log:
|
|
|
113
200
|
});
|
|
114
201
|
|
|
115
202
|
await tryRunP("sql LISTEN NOTIFY events", async (resolve, reject) => {
|
|
203
|
+
if(!db.sql) throw "db.sql missing";
|
|
116
204
|
|
|
117
205
|
try {
|
|
118
206
|
|
|
@@ -134,6 +222,7 @@ export default async function client_only(db: DBHandlerClient, auth: Auth, log:
|
|
|
134
222
|
});
|
|
135
223
|
|
|
136
224
|
await tryRunP("sql NOTICE events", async (resolve, reject) => {
|
|
225
|
+
if(!db.sql) throw "db.sql missing";
|
|
137
226
|
|
|
138
227
|
const sub = await db.sql("", {}, { returnType: "noticeSubscription" });
|
|
139
228
|
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { strict as assert } from 'assert';
|
|
2
|
-
|
|
2
|
+
import * as fs from "fs";
|
|
3
3
|
import type { DBHandlerServer } from "./server/dist/server/index";
|
|
4
4
|
import type { DBHandlerClient } from "./client/index";
|
|
5
|
-
import * as fs from "fs";
|
|
6
5
|
|
|
7
6
|
export async function tryRun(desc: string, func: () => any, log?: Function){
|
|
8
7
|
try {
|
|
@@ -27,6 +26,7 @@ export function tryRunP(desc: string, func: (resolve: any, reject: any) => any,
|
|
|
27
26
|
clearTimeout(testTimeout);
|
|
28
27
|
} catch(err: any){
|
|
29
28
|
opts?.log?.(`${desc} failed: ` + JSON.stringify(err));
|
|
29
|
+
rj(err);
|
|
30
30
|
await tout(50);
|
|
31
31
|
throw err;
|
|
32
32
|
}
|
|
@@ -48,10 +48,11 @@ export default async function isomorphic(db: Required<DBHandlerServer> | DBHandl
|
|
|
48
48
|
await db.items2.delete!({ });
|
|
49
49
|
await db.items.delete!({ });
|
|
50
50
|
}
|
|
51
|
-
await db.sql(`TRUNCATE items RESTART IDENTITY CASCADE;`)
|
|
51
|
+
await db.sql!(`TRUNCATE items RESTART IDENTITY CASCADE;`)
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
await tryRun("Prepare data", async () => {
|
|
55
|
+
if(!db.sql) throw "db.sql missing";
|
|
55
56
|
const res = await db.items.insert!([{ name: "a" }, { name: "a" }, { name: "b" }], { returning: "*" });
|
|
56
57
|
assert.equal(res.length, 3);
|
|
57
58
|
const added1 = '04 Dec 1995 00:12:00';
|
|
@@ -445,7 +446,6 @@ export default async function isomorphic(db: Required<DBHandlerServer> | DBHandl
|
|
|
445
446
|
|
|
446
447
|
await tryRunP("subscribe", async (resolve, reject) => {
|
|
447
448
|
await db.various.insert!({ id: 99 });
|
|
448
|
-
console.log("subscribing")
|
|
449
449
|
const sub = await db.various.subscribe!({ id: 99 }, { }, async items => {
|
|
450
450
|
const item = items[0];
|
|
451
451
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"../..": {
|
|
23
23
|
"name": "prostgles-server",
|
|
24
|
-
"version": "4.1.
|
|
24
|
+
"version": "4.1.125",
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@types/express": "^4.17.13",
|
|
@@ -31,11 +31,10 @@
|
|
|
31
31
|
"body-parser": "^1.20.2",
|
|
32
32
|
"check-disk-space": "^3.3.1",
|
|
33
33
|
"file-type": "^18.5.0",
|
|
34
|
-
"pg": "^8.11.3",
|
|
35
34
|
"pg-iterator": "^0.3.0",
|
|
36
35
|
"pg-promise": "^11.5.4",
|
|
37
36
|
"prostgles-client": "^4.0.53",
|
|
38
|
-
"prostgles-types": "^4.0.
|
|
37
|
+
"prostgles-types": "^4.0.61"
|
|
39
38
|
},
|
|
40
39
|
"devDependencies": {
|
|
41
40
|
"@types/bluebird": "^3.5.36",
|
|
@@ -1542,11 +1541,10 @@
|
|
|
1542
1541
|
"check-disk-space": "^3.3.1",
|
|
1543
1542
|
"eslint": "^8.51.0",
|
|
1544
1543
|
"file-type": "^18.5.0",
|
|
1545
|
-
"pg": "^8.11.3",
|
|
1546
1544
|
"pg-iterator": "^0.3.0",
|
|
1547
1545
|
"pg-promise": "^11.5.4",
|
|
1548
1546
|
"prostgles-client": "^4.0.53",
|
|
1549
|
-
"prostgles-types": "^4.0.
|
|
1547
|
+
"prostgles-types": "^4.0.61",
|
|
1550
1548
|
"typescript": "^5.2.2"
|
|
1551
1549
|
}
|
|
1552
1550
|
},
|