prostgles-server 4.2.558 → 4.2.560
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 +4 -4
- package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +18 -29
- package/dist/DboBuilder/DboBuilder.js.map +1 -1
- package/dist/DboBuilder/TableHandler/DataValidator.js +18 -12
- package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +17 -4
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +16 -2
- package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.d.ts +2 -1
- package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.js +5 -2
- package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.d.ts +4 -1
- package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.js +9 -5
- package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.d.ts +9 -0
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.d.ts.map +1 -0
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.js +73 -0
- package/dist/DboBuilder/ViewHandler/getDbHandlerWithAbort.js.map +1 -0
- package/dist/DboBuilder/ViewHandler/size.d.ts +2 -1
- package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.js +7 -5
- package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts +1 -0
- package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.js +4 -2
- package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
- package/dist/DboBuilder/{QueryStreamer.d.ts → runSql/QueryStreamer.d.ts} +4 -6
- package/dist/DboBuilder/runSql/QueryStreamer.d.ts.map +1 -0
- package/dist/DboBuilder/{QueryStreamer.js → runSql/QueryStreamer.js} +5 -22
- package/dist/DboBuilder/runSql/QueryStreamer.js.map +1 -0
- package/dist/DboBuilder/runSql/getAdminClient.d.ts +26 -0
- package/dist/DboBuilder/runSql/getAdminClient.d.ts.map +1 -0
- package/dist/DboBuilder/runSql/getAdminClient.js +32 -0
- package/dist/DboBuilder/runSql/getAdminClient.js.map +1 -0
- package/dist/DboBuilder/runSql/runSqlUtils.d.ts +1 -1
- package/dist/Prostgles.d.ts +2 -0
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/Prostgles.js +3 -1
- package/dist/Prostgles.js.map +1 -1
- package/dist/PublishParser/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser/PublishParser.js +2 -1
- package/dist/PublishParser/PublishParser.js.map +1 -1
- package/dist/WebsocketAPI/onSocketConnected.d.ts.map +1 -1
- package/dist/WebsocketAPI/onSocketConnected.js +14 -6
- package/dist/WebsocketAPI/onSocketConnected.js.map +1 -1
- package/dist/initProstgles.d.ts.map +1 -1
- package/dist/initProstgles.js +2 -0
- package/dist/initProstgles.js.map +1 -1
- package/dist/runClientRequest.d.ts +1 -1
- package/dist/runClientRequest.d.ts.map +1 -1
- package/dist/runClientRequest.js +28 -6
- package/dist/runClientRequest.js.map +1 -1
- package/lib/DboBuilder/DboBuilder.ts +20 -31
- package/lib/DboBuilder/TableHandler/DataValidator.ts +19 -14
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +27 -3
- package/lib/DboBuilder/ViewHandler/count.ts +6 -2
- package/lib/DboBuilder/ViewHandler/find.ts +16 -7
- package/lib/DboBuilder/ViewHandler/getDbHandlerWithAbort.ts +98 -0
- package/lib/DboBuilder/ViewHandler/size.ts +8 -5
- package/lib/DboBuilder/dboBuilderUtils.ts +4 -1
- package/lib/DboBuilder/{QueryStreamer.ts → runSql/QueryStreamer.ts} +10 -32
- package/lib/DboBuilder/runSql/getAdminClient.ts +31 -0
- package/lib/Prostgles.ts +4 -1
- package/lib/PublishParser/PublishParser.ts +3 -1
- package/lib/WebsocketAPI/onSocketConnected.ts +15 -7
- package/lib/initProstgles.ts +3 -0
- package/lib/runClientRequest.ts +49 -10
- package/package.json +2 -2
- package/dist/DboBuilder/QueryStreamer.d.ts.map +0 -1
- package/dist/DboBuilder/QueryStreamer.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onSocketConnected.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/onSocketConnected.ts"],"names":[],"mappings":";;AASA,
|
|
1
|
+
{"version":3,"file":"onSocketConnected.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/onSocketConnected.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initProstgles.d.ts","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGpF,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"initProstgles.d.ts","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"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"}
|
package/dist/initProstgles.js
CHANGED
|
@@ -11,6 +11,7 @@ const runSQLFile_1 = require("./TableConfig/runSQLFile");
|
|
|
11
11
|
const updateConfiguration_1 = require("./updateConfiguration");
|
|
12
12
|
const utils_1 = require("./utils/utils");
|
|
13
13
|
const getClientHandlers_1 = require("./WebsocketAPI/getClientHandlers");
|
|
14
|
+
const getAdminClient_1 = require("./DboBuilder/runSql/getAdminClient");
|
|
14
15
|
const initProstgles = async function (onReady, reason) {
|
|
15
16
|
this.loaded = false;
|
|
16
17
|
const expressApp = this.opts.fileTable?.expressApp ??
|
|
@@ -58,6 +59,7 @@ const initProstgles = async function (onReady, reason) {
|
|
|
58
59
|
}
|
|
59
60
|
},
|
|
60
61
|
});
|
|
62
|
+
this.adminClient = await (0, getAdminClient_1.getAdminClient)(db);
|
|
61
63
|
/** Drop stale triggers */
|
|
62
64
|
await db
|
|
63
65
|
.any(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initProstgles.js","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":";;;AAIA,wEAA0E;AAC1E,uDAAoD;AAGpD,uDAAoD;AAEpD,2CAA6C;AAE7C,iEAAoF;AACpF,2DAAwD;AACxD,yDAAsD;AACtD,+DAAuF;AACvF,yCAAsC;AACtC,wEAAqE;
|
|
1
|
+
{"version":3,"file":"initProstgles.js","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ type Args = {
|
|
|
10
10
|
param2: unknown;
|
|
11
11
|
param3: unknown;
|
|
12
12
|
};
|
|
13
|
-
export declare const runClientRequest: (this: Prostgles, nonValidatedArgs: Args, clientReq: AuthClientRequest, scope: PermissionScope | undefined) => Promise<
|
|
13
|
+
export declare const runClientRequest: (this: Prostgles, nonValidatedArgs: Args, clientReq: AuthClientRequest, scope: PermissionScope | undefined) => Promise<void | AnyObject>;
|
|
14
14
|
export declare const clientCanRunSqlRequest: (this: Prostgles, clientReq: AuthClientRequest) => Promise<{
|
|
15
15
|
allowed: boolean;
|
|
16
16
|
clientReq: AuthClientRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runClientRequest.d.ts","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AAC1E,OAAO,
|
|
1
|
+
{"version":3,"file":"runClientRequest.d.ts","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAML,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAK1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AA8B5E,KAAK,IAAI,GAAG;IACV,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAUF,eAAO,MAAM,gBAAgB,GAC3B,MAAM,SAAS,EACf,kBAAkB,IAAI,EACtB,WAAW,iBAAiB,EAC5B,OAAO,eAAe,GAAG,SAAS,8BA+HnC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,SAAS,EACf,WAAW,iBAAiB;;;;;;;;EAa7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,MAAM,SAAS,EACf,iBAAiB,UAAU,EAC3B,WAAW,iBAAiB,iBAqB7B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AACF,eAAO,MAAM,eAAe,GAC1B,MAAM,SAAS,EACf,iBAAiB,UAAU,EAC3B,WAAW,iBAAiB,qBAuC7B,CAAC"}
|
package/dist/runClientRequest.js
CHANGED
|
@@ -20,12 +20,14 @@ const TABLE_METHODS = {
|
|
|
20
20
|
getInfo: 1,
|
|
21
21
|
sync: 1,
|
|
22
22
|
insertMany: 1,
|
|
23
|
+
abort: 1,
|
|
23
24
|
};
|
|
24
25
|
const TABLE_METHODS_KEYS = (0, prostgles_types_1.getKeys)(TABLE_METHODS);
|
|
25
26
|
const SOCKET_ONLY_COMMANDS = [
|
|
26
27
|
"subscribe",
|
|
27
28
|
"subscribeOne",
|
|
28
29
|
"sync",
|
|
30
|
+
"abort",
|
|
29
31
|
];
|
|
30
32
|
const runClientRequest = async function (nonValidatedArgs, clientReq, scope) {
|
|
31
33
|
/* Channel name will only include client-sent params so we ignore table_rules enforced params */
|
|
@@ -37,7 +39,15 @@ const runClientRequest = async function (nonValidatedArgs, clientReq, scope) {
|
|
|
37
39
|
command: { enum: TABLE_METHODS_KEYS },
|
|
38
40
|
param1: { type: "any", optional: true },
|
|
39
41
|
param2: { type: "any", optional: true },
|
|
40
|
-
param3: {
|
|
42
|
+
param3: {
|
|
43
|
+
type: {
|
|
44
|
+
abortSignalId: { type: "string", optional: true },
|
|
45
|
+
returning: { type: "any", optional: true },
|
|
46
|
+
returnQuery: { type: "boolean", optional: true },
|
|
47
|
+
returnType: { type: "string", optional: true },
|
|
48
|
+
},
|
|
49
|
+
optional: true,
|
|
50
|
+
},
|
|
41
51
|
}, nonValidatedArgs, "tableName");
|
|
42
52
|
if (validation.error !== undefined) {
|
|
43
53
|
throw validation.error;
|
|
@@ -56,11 +66,6 @@ const runClientRequest = async function (nonValidatedArgs, clientReq, scope) {
|
|
|
56
66
|
throw clientInfo;
|
|
57
67
|
}
|
|
58
68
|
const parsedTableRule = await this.publishParser.getParsedTableRule({ tableName, clientReq }, clientInfo, scope);
|
|
59
|
-
this.publishParser.validateRequestRule({ tableName, command, clientReq }, parsedTableRule, scope);
|
|
60
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
61
|
-
if (!parsedTableRule) {
|
|
62
|
-
throw `Invalid OR disallowed request: ${tableName}.${command} `;
|
|
63
|
-
}
|
|
64
69
|
const sessionUser = !clientInfo.user ? undefined : ({
|
|
65
70
|
...(0, parseFieldFilter_1.parseFieldFilter)(
|
|
66
71
|
//@ts-ignore
|
|
@@ -72,6 +77,23 @@ const runClientRequest = async function (nonValidatedArgs, clientReq, scope) {
|
|
|
72
77
|
isRemoteRequest: { user: sessionUser },
|
|
73
78
|
scope,
|
|
74
79
|
};
|
|
80
|
+
if (command === "abort") {
|
|
81
|
+
const validation = (0, prostgles_types_1.getJSONBObjectSchemaValidationError)({
|
|
82
|
+
tableName: { type: "string" },
|
|
83
|
+
command: { enum: ["abort"] },
|
|
84
|
+
param1: {
|
|
85
|
+
type: { command: { enum: prostgles_types_1.ABORTABLE_METHODS }, abortSignalId: "string" },
|
|
86
|
+
},
|
|
87
|
+
}, nonValidatedArgs, "tableName", undefined, { allowExtraProperties: true });
|
|
88
|
+
if (validation.error !== undefined) {
|
|
89
|
+
throw validation.error;
|
|
90
|
+
}
|
|
91
|
+
this.publishParser.validateRequestRule({ tableName, command: validation.data.param1.command, clientReq }, parsedTableRule, scope);
|
|
92
|
+
return tableHandler.abortRemoteQuery(validation.data.param1.abortSignalId, localParams);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.publishParser.validateRequestRule({ tableName, command, clientReq }, parsedTableRule, scope);
|
|
96
|
+
}
|
|
75
97
|
if (param3 && param3.returnQuery) {
|
|
76
98
|
const isAllowed = await (0, runSQL_1.canRunSQL)(this, clientReq);
|
|
77
99
|
if (isAllowed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runClientRequest.js","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"runClientRequest.js","sourceRoot":"","sources":["../lib/runClientRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ import type {
|
|
|
20
20
|
TableSchema,
|
|
21
21
|
TxCB,
|
|
22
22
|
} from "./DboBuilderTypes";
|
|
23
|
-
import { QueryStreamer } from "./QueryStreamer";
|
|
23
|
+
import { QueryStreamer } from "./runSql/QueryStreamer";
|
|
24
24
|
import { TableHandler } from "./TableHandler/TableHandler";
|
|
25
25
|
import type { JoinPaths } from "./ViewHandler/ViewHandler";
|
|
26
26
|
import { parseJoinPath } from "./ViewHandler/parseJoinPath";
|
|
@@ -69,18 +69,27 @@ export class DboBuilder {
|
|
|
69
69
|
|
|
70
70
|
queryStreamer: QueryStreamer;
|
|
71
71
|
|
|
72
|
+
private constructor(prostgles: Prostgles) {
|
|
73
|
+
this.prostgles = prostgles;
|
|
74
|
+
if (!this.prostgles.db) throw "db missing";
|
|
75
|
+
this.db = this.prostgles.db;
|
|
76
|
+
this.dbo = {};
|
|
77
|
+
this.dboMap = new Map();
|
|
78
|
+
this.queryStreamer = new QueryStreamer(this);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
private init = async () => {
|
|
82
|
+
await this.build();
|
|
83
|
+
/* If watchSchema is enabled then PubSubManager must be created (if possible) because it creates the event trigger */
|
|
84
|
+
if (this.prostgles.schemaWatch?.type.watchType === "DDL_trigger") {
|
|
85
|
+
await this.getPubSubManager();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return this;
|
|
89
|
+
};
|
|
90
|
+
|
|
72
91
|
get tables(): TableSchema[] {
|
|
73
92
|
return this.tablesOrViews ?? [];
|
|
74
|
-
// .map(({ name, columns }) => {
|
|
75
|
-
// const info = this.dboMap.get(name)?.tableOrViewInfo;
|
|
76
|
-
// if (!info) return undefined;
|
|
77
|
-
// return {
|
|
78
|
-
// name,
|
|
79
|
-
// info,
|
|
80
|
-
// columns,
|
|
81
|
-
// } satisfies DbTableInfo;
|
|
82
|
-
// })
|
|
83
|
-
// .filter(isDefined);
|
|
84
93
|
}
|
|
85
94
|
|
|
86
95
|
getDetailedFieldInfo = async (fields: pg.IColumn[]) => {
|
|
@@ -130,32 +139,12 @@ export class DboBuilder {
|
|
|
130
139
|
|
|
131
140
|
onSchemaChange?: (event: { command: string; query: string }) => void;
|
|
132
141
|
|
|
133
|
-
private constructor(prostgles: Prostgles) {
|
|
134
|
-
this.prostgles = prostgles;
|
|
135
|
-
if (!this.prostgles.db) throw "db missing";
|
|
136
|
-
this.db = this.prostgles.db;
|
|
137
|
-
this.dbo = {};
|
|
138
|
-
this.dboMap = new Map();
|
|
139
|
-
this.queryStreamer = new QueryStreamer(this);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
private init = async () => {
|
|
143
|
-
await this.build();
|
|
144
|
-
/* If watchSchema is enabled then PubSubManager must be created (if possible) because it creates the event trigger */
|
|
145
|
-
if (this.prostgles.schemaWatch?.type.watchType === "DDL_trigger") {
|
|
146
|
-
await this.getPubSubManager();
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
return this;
|
|
150
|
-
};
|
|
151
|
-
|
|
152
142
|
public static create = async (prostgles: Prostgles): Promise<DboBuilder> => {
|
|
153
143
|
const res = new DboBuilder(prostgles);
|
|
154
144
|
return await res.init();
|
|
155
145
|
};
|
|
156
146
|
|
|
157
147
|
destroy = async () => {
|
|
158
|
-
await this.queryStreamer.destroy().catch(console.error);
|
|
159
148
|
return this._pubSubManager?.destroy();
|
|
160
149
|
};
|
|
161
150
|
|
|
@@ -217,8 +217,8 @@ const getValidatedRowFieldData = async (
|
|
|
217
217
|
throw "allowedColumns cannot be empty";
|
|
218
218
|
}
|
|
219
219
|
const rowFieldData = await Promise.all(
|
|
220
|
-
rows.map(async (
|
|
221
|
-
let row = pickKeys(
|
|
220
|
+
rows.map(async (nonValidatedRow) => {
|
|
221
|
+
let row = pickKeys(nonValidatedRow, allowedCols);
|
|
222
222
|
const initialRowKeys = Object.keys(row);
|
|
223
223
|
if (validationOptions.validate) {
|
|
224
224
|
if (!validationOptions.localParams) {
|
|
@@ -239,7 +239,7 @@ const getValidatedRowFieldData = async (
|
|
|
239
239
|
|
|
240
240
|
const getColumn = (fieldName: string) => {
|
|
241
241
|
if (!allowedCols.concat(keysAddedDuringValidate).includes(fieldName)) {
|
|
242
|
-
throw `Unexpected/
|
|
242
|
+
throw `Unexpected/Disallowed column name: ${fieldName}`;
|
|
243
243
|
}
|
|
244
244
|
const column = tableHandler.columns.find((c) => c.name === fieldName);
|
|
245
245
|
if (!column) {
|
|
@@ -260,10 +260,10 @@ const getValidatedRowFieldData = async (
|
|
|
260
260
|
// } satisfies RowFieldData;
|
|
261
261
|
// }
|
|
262
262
|
|
|
263
|
-
const [firstKey, ...
|
|
263
|
+
const [firstKey, ...remainingKeys] = Object.keys(fieldValue);
|
|
264
264
|
const func =
|
|
265
|
-
firstKey && !
|
|
266
|
-
|
|
265
|
+
firstKey && !remainingKeys.length ?
|
|
266
|
+
conversionFunctions.some((f) => `$${f.name}` === firstKey)
|
|
267
267
|
: undefined;
|
|
268
268
|
if (func) {
|
|
269
269
|
const { funcName, args } = parseFunctionObject(fieldValue);
|
|
@@ -328,9 +328,9 @@ const getValidatedRowFieldData = async (
|
|
|
328
328
|
// };
|
|
329
329
|
|
|
330
330
|
const getParsedRowFieldDataFunction = (rowPart: RowFieldDataFunction, args: ParseDataArgs) => {
|
|
331
|
-
const func =
|
|
331
|
+
const func = conversionFunctions.find((f) => `$${f.name}` === rowPart.funcName);
|
|
332
332
|
if (!func) {
|
|
333
|
-
throw `Unknown function: ${rowPart.funcName}. Expecting one of: ${
|
|
333
|
+
throw `Unknown function: ${rowPart.funcName}. Expecting one of: ${conversionFunctions.map((f) => f.name).join(", ")}`;
|
|
334
334
|
}
|
|
335
335
|
if (func.onlyAllowedFor && func.onlyAllowedFor !== args.command) {
|
|
336
336
|
throw `Function ${rowPart.funcName} is only allowed for ${func.onlyAllowedFor} but not ${args.command}`;
|
|
@@ -345,9 +345,14 @@ const getParsedRowFieldData = (rowFieldData: RowFieldData[][], args: ParseDataAr
|
|
|
345
345
|
if (rowPart.type === "function") {
|
|
346
346
|
escapedVal = getParsedRowFieldDataFunction(rowPart, args);
|
|
347
347
|
} else {
|
|
348
|
-
/**
|
|
349
|
-
|
|
350
|
-
|
|
348
|
+
/** Convert ArrayBuffer to node Buffer */
|
|
349
|
+
if (rowPart.column.udt_name === "bytea" && rowPart.fieldValue instanceof ArrayBuffer) {
|
|
350
|
+
escapedVal = pgp.as.format("$1", [Buffer.from(rowPart.fieldValue)]);
|
|
351
|
+
} else {
|
|
352
|
+
/** Prevent pg-promise formatting jsonb */
|
|
353
|
+
const colIsJSON = ["json", "jsonb"].includes(rowPart.column.data_type);
|
|
354
|
+
escapedVal = pgp.as.format(colIsJSON ? "$1:json" : "$1", [rowPart.fieldValue]);
|
|
355
|
+
}
|
|
351
356
|
}
|
|
352
357
|
|
|
353
358
|
/**
|
|
@@ -365,14 +370,14 @@ const getParsedRowFieldData = (rowFieldData: RowFieldData[][], args: ParseDataAr
|
|
|
365
370
|
return parsedRowFieldData;
|
|
366
371
|
};
|
|
367
372
|
|
|
368
|
-
type
|
|
373
|
+
type ConversionFunction = {
|
|
369
374
|
name: string;
|
|
370
375
|
description?: string;
|
|
371
376
|
onlyAllowedFor?: "insert" | "update";
|
|
372
377
|
getQuery: (fieldPart: RowFieldDataFunction) => string;
|
|
373
378
|
};
|
|
374
379
|
|
|
375
|
-
const
|
|
380
|
+
const conversionFunctions: ConversionFunction[] = [
|
|
376
381
|
...[
|
|
377
382
|
"ST_GeomFromText",
|
|
378
383
|
"ST_Point",
|
|
@@ -389,7 +394,7 @@ const convertionFuncs: ConvertionFunc[] = [
|
|
|
389
394
|
const argList = args.map((arg) => asValue(arg)).join(", ");
|
|
390
395
|
return `${name}(${argList})`;
|
|
391
396
|
},
|
|
392
|
-
}) satisfies
|
|
397
|
+
}) satisfies ConversionFunction,
|
|
393
398
|
),
|
|
394
399
|
{
|
|
395
400
|
name: "to_timestamp",
|
|
@@ -20,7 +20,7 @@ import type { TableSchema } from "../DboBuilderTypes";
|
|
|
20
20
|
import { getValidatedTableRules } from "../TableRules/getValidatedTableRules";
|
|
21
21
|
import { getColumns } from "../getColumns";
|
|
22
22
|
import { count } from "./count";
|
|
23
|
-
import { find } from "./find";
|
|
23
|
+
import { find, type Param3 } from "./find";
|
|
24
24
|
import { getInfo } from "./getInfo";
|
|
25
25
|
import { parseFieldFilter } from "./parseFieldFilter";
|
|
26
26
|
import { prepareWhere } from "./prepareWhere";
|
|
@@ -30,6 +30,8 @@ import { subscribe } from "./subscribe";
|
|
|
30
30
|
import { validateViewRules } from "./validateViewRules";
|
|
31
31
|
import { escapeTSNames } from "../../utils/utils";
|
|
32
32
|
import type { TableDefinition } from "../../TableConfig/TableConfig";
|
|
33
|
+
import { getDbHandlerWithAbort } from "./getDbHandlerWithAbort";
|
|
34
|
+
import type { VoidFunction } from "../../SchemaWatch/SchemaWatch";
|
|
33
35
|
|
|
34
36
|
export type JoinPaths = {
|
|
35
37
|
t1: string;
|
|
@@ -112,6 +114,28 @@ export class ViewHandler {
|
|
|
112
114
|
return localParams?.tx || this.tx;
|
|
113
115
|
};
|
|
114
116
|
|
|
117
|
+
abortRemoteQuery = (abortSignalId: string, localParams: LocalParams) => {
|
|
118
|
+
const sid = this.dboBuilder.prostgles.authHandler.getSIDNoError(localParams.clientReq);
|
|
119
|
+
if (!sid) {
|
|
120
|
+
throw new Error(
|
|
121
|
+
"Cannot get SID from client request. Ensure that the client is authenticated before using abortable queries.",
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
const abortableQuery = this.activeQueries.get(abortSignalId);
|
|
125
|
+
if (!abortableQuery || abortableQuery.sid !== sid) {
|
|
126
|
+
throw new Error(
|
|
127
|
+
`No active query found with abortSignalId ${abortSignalId}. Ensure that the query was initiated with the correct abortSignalId.`,
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
abortableQuery.abort();
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
activeQueries = new Map<
|
|
134
|
+
string,
|
|
135
|
+
{ abort: VoidFunction; query: string; start: number; sid: string | undefined }
|
|
136
|
+
>();
|
|
137
|
+
getDbHandlerWithAbort = getDbHandlerWithAbort.bind(this);
|
|
138
|
+
|
|
115
139
|
_log = ({
|
|
116
140
|
command,
|
|
117
141
|
data,
|
|
@@ -178,7 +202,7 @@ export class ViewHandler {
|
|
|
178
202
|
async findOne(
|
|
179
203
|
filter?: Filter,
|
|
180
204
|
selectParams?: SelectParams,
|
|
181
|
-
|
|
205
|
+
param3?: Param3,
|
|
182
206
|
table_rules?: ParsedTableRule,
|
|
183
207
|
localParams?: LocalParams,
|
|
184
208
|
): Promise<any> {
|
|
@@ -191,7 +215,7 @@ export class ViewHandler {
|
|
|
191
215
|
const result = await this.find(
|
|
192
216
|
filter,
|
|
193
217
|
{ ...params, limit: 1, returnType: "row" },
|
|
194
|
-
|
|
218
|
+
param3,
|
|
195
219
|
table_rules,
|
|
196
220
|
localParams,
|
|
197
221
|
);
|
|
@@ -8,12 +8,13 @@ import {
|
|
|
8
8
|
} from "../dboBuilderUtils";
|
|
9
9
|
import type { ViewHandler } from "./ViewHandler";
|
|
10
10
|
import { getReturnTypeQuery } from "./getReturnTypeQuery";
|
|
11
|
+
import type { Param3 } from "./find";
|
|
11
12
|
|
|
12
13
|
export async function count(
|
|
13
14
|
this: ViewHandler,
|
|
14
15
|
_filter?: Filter,
|
|
15
16
|
selectParams?: SelectParams,
|
|
16
|
-
|
|
17
|
+
param3?: Param3,
|
|
17
18
|
table_rules?: ParsedTableRule,
|
|
18
19
|
localParams?: LocalParams,
|
|
19
20
|
): Promise<number> {
|
|
@@ -54,7 +55,10 @@ export async function count(
|
|
|
54
55
|
return queryToReturn as unknown[];
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
const handler = this.
|
|
58
|
+
const handler = this.getDbHandlerWithAbort(localParams, {
|
|
59
|
+
abortSignal: selectParams?.abortSignal,
|
|
60
|
+
abortSignalId: param3?.abortSignalId,
|
|
61
|
+
});
|
|
58
62
|
return handler.one(queryWithRLS).then(({ count }) => +count);
|
|
59
63
|
});
|
|
60
64
|
|
|
@@ -13,19 +13,23 @@ import { getSelectQuery } from "../QueryBuilder/getSelectQuery";
|
|
|
13
13
|
import { getReturnTypeQuery } from "./getReturnTypeQuery";
|
|
14
14
|
import type { ViewHandler } from "./ViewHandler";
|
|
15
15
|
|
|
16
|
+
export type Param3 = {
|
|
17
|
+
abortSignalId?: string;
|
|
18
|
+
};
|
|
19
|
+
|
|
16
20
|
export const find = async function (
|
|
17
21
|
this: ViewHandler,
|
|
18
|
-
filter
|
|
22
|
+
filter: Filter = {},
|
|
19
23
|
selectParams?: SelectParams,
|
|
20
|
-
|
|
24
|
+
param3?: Param3,
|
|
21
25
|
tableRules?: ParsedTableRule,
|
|
22
26
|
localParams?: LocalParams,
|
|
23
27
|
): Promise<any[]> {
|
|
24
28
|
const start = Date.now();
|
|
25
|
-
const
|
|
26
|
-
|
|
29
|
+
const { limit, returnType, abortSignal } = selectParams ?? {};
|
|
30
|
+
|
|
31
|
+
const command = limit === 1 && returnType === "row" ? "findOne" : "find";
|
|
27
32
|
try {
|
|
28
|
-
filter = filter || {};
|
|
29
33
|
const allowedReturnTypes = Object.keys({
|
|
30
34
|
row: 1,
|
|
31
35
|
statement: 1,
|
|
@@ -52,6 +56,7 @@ export const find = async function (
|
|
|
52
56
|
returnType: 1,
|
|
53
57
|
groupBy: 1,
|
|
54
58
|
having: 1,
|
|
59
|
+
abortSignal: 1,
|
|
55
60
|
} satisfies Record<keyof SelectParams, 1>);
|
|
56
61
|
|
|
57
62
|
const invalidParams = Object.keys(selectParams).filter((k) => !validParamNames.includes(k));
|
|
@@ -96,7 +101,7 @@ export const find = async function (
|
|
|
96
101
|
this,
|
|
97
102
|
filter,
|
|
98
103
|
selectParamsLimitCheck,
|
|
99
|
-
|
|
104
|
+
undefined,
|
|
100
105
|
tableRules,
|
|
101
106
|
localParams,
|
|
102
107
|
);
|
|
@@ -109,6 +114,7 @@ export const find = async function (
|
|
|
109
114
|
);
|
|
110
115
|
|
|
111
116
|
const queryWithRLS = withUserRLS(localParams, queryWithoutRLS);
|
|
117
|
+
|
|
112
118
|
const queryToReturn = await getReturnTypeQuery({
|
|
113
119
|
handler: this,
|
|
114
120
|
localParams,
|
|
@@ -123,7 +129,10 @@ export const find = async function (
|
|
|
123
129
|
|
|
124
130
|
const query = queryWithRLS;
|
|
125
131
|
const isOneOrNone = returnType === "row" || returnType === "value";
|
|
126
|
-
const dbHandler = this.
|
|
132
|
+
const dbHandler = this.getDbHandlerWithAbort(localParams, {
|
|
133
|
+
abortSignal,
|
|
134
|
+
abortSignalId: param3?.abortSignalId,
|
|
135
|
+
});
|
|
127
136
|
const queryPromise =
|
|
128
137
|
isOneOrNone ?
|
|
129
138
|
dbHandler.oneOrNone<AnyObject>(query).then((data) => (data ? [data] : []))
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { DB } from "../../initProstgles";
|
|
2
|
+
import { QUERY_ID_PREFIX, type LocalParams } from "../DboBuilder";
|
|
3
|
+
import type { ViewHandler } from "./ViewHandler";
|
|
4
|
+
import type * as pgPromise from "pg-promise";
|
|
5
|
+
|
|
6
|
+
export function getDbHandlerWithAbort(
|
|
7
|
+
this: ViewHandler,
|
|
8
|
+
localParams: LocalParams | undefined,
|
|
9
|
+
params: { abortSignal: AbortSignal | undefined; abortSignalId: string | undefined },
|
|
10
|
+
): Pick<DB | pgPromise.ITask<{}>, "any" | "one" | "many" | "manyOrNone" | "none" | "oneOrNone"> {
|
|
11
|
+
if (params.abortSignal && params.abortSignalId) {
|
|
12
|
+
throw new Error("Cannot provide both abortSignal and abortSignalId");
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (params.abortSignal?.aborted) {
|
|
16
|
+
throw new Error("Query aborted before execution");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const abortSignal =
|
|
20
|
+
params.abortSignal ?? AbortSignal.timeout(localParams?.clientReq ? 7_000 : 120_000);
|
|
21
|
+
const abortSignalId = params.abortSignalId ?? crypto.randomUUID();
|
|
22
|
+
|
|
23
|
+
if (this.activeQueries.has(abortSignalId)) {
|
|
24
|
+
throw new Error(
|
|
25
|
+
`A query with abortSignalId ${params.abortSignalId} is already active. Ensure that each query has a unique abortSignalId.`,
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
const handler = this.getTransaction(localParams)?.t ?? this.db;
|
|
29
|
+
const { adminClient } = this.dboBuilder.prostgles;
|
|
30
|
+
if (!adminClient) {
|
|
31
|
+
throw new Error(
|
|
32
|
+
"adminClient not available. Ensure prostgles.adminClient is initialized before using abortable queries.",
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
const sid = this.dboBuilder.prostgles.authHandler.getSIDNoError(localParams?.clientReq);
|
|
36
|
+
if (!sid && localParams?.clientReq) {
|
|
37
|
+
throw new Error(
|
|
38
|
+
"Cannot get SID from client request. Ensure that the client is authenticated before using abortable queries.",
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
const withAbortQuery = <Args extends unknown[], R extends Promise<any>>(
|
|
42
|
+
func: (query: string, ...args: Args) => R,
|
|
43
|
+
) => {
|
|
44
|
+
return (query: string, ...args: Args) => {
|
|
45
|
+
const queryIdPrefix = query.split("\n", 1)[0];
|
|
46
|
+
|
|
47
|
+
const queryHasIdPrefix = queryIdPrefix?.startsWith(QUERY_ID_PREFIX);
|
|
48
|
+
if (!queryIdPrefix || !queryHasIdPrefix) {
|
|
49
|
+
throw new Error(
|
|
50
|
+
"Query does not have a prostgles query id prefix. Ensure that the query is generated using prostgles methods that include the query id.",
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const abort = () => {
|
|
55
|
+
/** Only terminate if there is exactly one matching query with a query id prefix */
|
|
56
|
+
|
|
57
|
+
void adminClient
|
|
58
|
+
.query(
|
|
59
|
+
`
|
|
60
|
+
SELECT pg_terminate_backend(pid), *
|
|
61
|
+
FROM pg_stat_activity
|
|
62
|
+
WHERE query LIKE $1 AND pid <> pg_backend_pid()
|
|
63
|
+
`,
|
|
64
|
+
[`${queryIdPrefix}%`],
|
|
65
|
+
)
|
|
66
|
+
.then((res) => {
|
|
67
|
+
// if (params.abortSignalId) {
|
|
68
|
+
// console.log(JSON.stringify(res.rows));
|
|
69
|
+
// process.exit(1);
|
|
70
|
+
// }
|
|
71
|
+
})
|
|
72
|
+
.catch((err) => {
|
|
73
|
+
// ignore error
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
this.activeQueries.set(abortSignalId, {
|
|
77
|
+
query,
|
|
78
|
+
start: Date.now(),
|
|
79
|
+
sid,
|
|
80
|
+
abort,
|
|
81
|
+
});
|
|
82
|
+
abortSignal.addEventListener("abort", abort);
|
|
83
|
+
return func(query, ...args).finally(() => {
|
|
84
|
+
abortSignal.removeEventListener("abort", abort);
|
|
85
|
+
this.activeQueries.delete(abortSignalId);
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
return {
|
|
91
|
+
manyOrNone: withAbortQuery(handler.manyOrNone.bind(handler)),
|
|
92
|
+
one: withAbortQuery(handler.one.bind(handler)),
|
|
93
|
+
oneOrNone: withAbortQuery(handler.oneOrNone.bind(handler)),
|
|
94
|
+
any: withAbortQuery(handler.any.bind(handler)),
|
|
95
|
+
none: withAbortQuery(handler.none.bind(handler)),
|
|
96
|
+
many: withAbortQuery(handler.many.bind(handler)),
|
|
97
|
+
};
|
|
98
|
+
}
|