prostgles-server 4.2.558 → 4.2.559
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 +1 -1
- package/dist/DboBuilder/TableHandler/DataValidator.js +18 -12
- package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
- package/dist/DboBuilder/runSql/runSqlUtils.d.ts +1 -1
- package/lib/DboBuilder/TableHandler/DataValidator.ts +19 -14
- package/package.json +2 -2
|
@@ -38,7 +38,7 @@ export declare class DboBuilder {
|
|
|
38
38
|
queryStreamer: QueryStreamer;
|
|
39
39
|
get tables(): TableSchema[];
|
|
40
40
|
getDetailedFieldInfo: (fields: pg.IColumn[]) => Promise<{
|
|
41
|
-
tsDataType: "string" | "number" | "boolean" | "any" | "string[]" | "number[]" | "boolean[]" | "any[]";
|
|
41
|
+
tsDataType: "string" | "number" | "boolean" | "any" | "string[]" | "number[]" | "boolean[]" | "any[]" | "ArrayBuffer";
|
|
42
42
|
dataType: import("prostgles-types").PG_COLUMN_UDT_DATA_TYPE;
|
|
43
43
|
udt_name: import("prostgles-types").PG_COLUMN_UDT_DATA_TYPE;
|
|
44
44
|
tableName: string | undefined;
|
|
@@ -131,8 +131,8 @@ const getValidatedRowFieldData = async ({ allowedCols, rows, validationOptions,
|
|
|
131
131
|
if (!allowedCols.length && command === "update") {
|
|
132
132
|
throw "allowedColumns cannot be empty";
|
|
133
133
|
}
|
|
134
|
-
const rowFieldData = await Promise.all(rows.map(async (
|
|
135
|
-
let row = (0, dist_1.pickKeys)(
|
|
134
|
+
const rowFieldData = await Promise.all(rows.map(async (nonValidatedRow) => {
|
|
135
|
+
let row = (0, dist_1.pickKeys)(nonValidatedRow, allowedCols);
|
|
136
136
|
const initialRowKeys = Object.keys(row);
|
|
137
137
|
if (validationOptions.validate) {
|
|
138
138
|
if (!validationOptions.localParams) {
|
|
@@ -150,7 +150,7 @@ const getValidatedRowFieldData = async ({ allowedCols, rows, validationOptions,
|
|
|
150
150
|
const keysAddedDuringValidate = Object.keys(row).filter((newKey) => !initialRowKeys.includes(newKey));
|
|
151
151
|
const getColumn = (fieldName) => {
|
|
152
152
|
if (!allowedCols.concat(keysAddedDuringValidate).includes(fieldName)) {
|
|
153
|
-
throw `Unexpected/
|
|
153
|
+
throw `Unexpected/Disallowed column name: ${fieldName}`;
|
|
154
154
|
}
|
|
155
155
|
const column = tableHandler.columns.find((c) => c.name === fieldName);
|
|
156
156
|
if (!column) {
|
|
@@ -169,9 +169,9 @@ const getValidatedRowFieldData = async ({ allowedCols, rows, validationOptions,
|
|
|
169
169
|
// fieldValue: textPatch,
|
|
170
170
|
// } satisfies RowFieldData;
|
|
171
171
|
// }
|
|
172
|
-
const [firstKey, ...
|
|
173
|
-
const func = firstKey && !
|
|
174
|
-
|
|
172
|
+
const [firstKey, ...remainingKeys] = Object.keys(fieldValue);
|
|
173
|
+
const func = firstKey && !remainingKeys.length ?
|
|
174
|
+
conversionFunctions.some((f) => `$${f.name}` === firstKey)
|
|
175
175
|
: undefined;
|
|
176
176
|
if (func) {
|
|
177
177
|
const { funcName, args } = (0, QueryBuilder_1.parseFunctionObject)(fieldValue);
|
|
@@ -228,9 +228,9 @@ const getValidatedRowFieldData = async ({ allowedCols, rows, validationOptions,
|
|
|
228
228
|
// return undefined;
|
|
229
229
|
// };
|
|
230
230
|
const getParsedRowFieldDataFunction = (rowPart, args) => {
|
|
231
|
-
const func =
|
|
231
|
+
const func = conversionFunctions.find((f) => `$${f.name}` === rowPart.funcName);
|
|
232
232
|
if (!func) {
|
|
233
|
-
throw `Unknown function: ${rowPart.funcName}. Expecting one of: ${
|
|
233
|
+
throw `Unknown function: ${rowPart.funcName}. Expecting one of: ${conversionFunctions.map((f) => f.name).join(", ")}`;
|
|
234
234
|
}
|
|
235
235
|
if (func.onlyAllowedFor && func.onlyAllowedFor !== args.command) {
|
|
236
236
|
throw `Function ${rowPart.funcName} is only allowed for ${func.onlyAllowedFor} but not ${args.command}`;
|
|
@@ -245,9 +245,15 @@ const getParsedRowFieldData = (rowFieldData, args) => {
|
|
|
245
245
|
escapedVal = getParsedRowFieldDataFunction(rowPart, args);
|
|
246
246
|
}
|
|
247
247
|
else {
|
|
248
|
-
/**
|
|
249
|
-
|
|
250
|
-
|
|
248
|
+
/** Convert ArrayBuffer to node Buffer */
|
|
249
|
+
if (rowPart.column.udt_name === "bytea" && rowPart.fieldValue instanceof ArrayBuffer) {
|
|
250
|
+
escapedVal = DboBuilder_1.pgp.as.format("$1", [Buffer.from(rowPart.fieldValue)]);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
/** Prevent pg-promise formatting jsonb */
|
|
254
|
+
const colIsJSON = ["json", "jsonb"].includes(rowPart.column.data_type);
|
|
255
|
+
escapedVal = DboBuilder_1.pgp.as.format(colIsJSON ? "$1:json" : "$1", [rowPart.fieldValue]);
|
|
256
|
+
}
|
|
251
257
|
}
|
|
252
258
|
/**
|
|
253
259
|
* Cast to type to avoid array errors (they do not cast automatically)
|
|
@@ -261,7 +267,7 @@ const getParsedRowFieldData = (rowFieldData, args) => {
|
|
|
261
267
|
});
|
|
262
268
|
return parsedRowFieldData;
|
|
263
269
|
};
|
|
264
|
-
const
|
|
270
|
+
const conversionFunctions = [
|
|
265
271
|
...[
|
|
266
272
|
"ST_GeomFromText",
|
|
267
273
|
"ST_Point",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataValidator.js","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/DataValidator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DataValidator.js","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/DataValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ export declare const getDbTypes: (db: DB) => Promise<{
|
|
|
22
22
|
}>;
|
|
23
23
|
}>;
|
|
24
24
|
export declare const getDetailedFieldInfo: ({ dataTypesMap, userTablesMap, userTableColumnsMap }: Awaited<ReturnType<typeof getDbTypes>>, fields: pg.IColumn[]) => {
|
|
25
|
-
tsDataType: "string" | "number" | "boolean" | "any" | "string[]" | "number[]" | "boolean[]" | "any[]";
|
|
25
|
+
tsDataType: "string" | "number" | "boolean" | "any" | "string[]" | "number[]" | "boolean[]" | "any[]" | "ArrayBuffer";
|
|
26
26
|
dataType: PG_COLUMN_UDT_DATA_TYPE;
|
|
27
27
|
udt_name: PG_COLUMN_UDT_DATA_TYPE;
|
|
28
28
|
tableName: string | undefined;
|
|
@@ -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",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prostgles-server",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.559",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"pg": "^8.21.0",
|
|
58
58
|
"pg-cursor": "^2.21.0",
|
|
59
59
|
"pg-promise": "^12.7.0",
|
|
60
|
-
"prostgles-types": "^4.0.
|
|
60
|
+
"prostgles-types": "^4.0.267"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@eslint/js": "^9.22.0",
|