prostgles-server 4.2.595 → 4.2.596
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/JSONBSchemaValidation/validateJSONBSchemaSQL.d.ts +1 -1
- package/dist/JSONBSchemaValidation/validateJSONBSchemaSQL.d.ts.map +1 -1
- package/dist/JSONBSchemaValidation/validateJSONBSchemaSQL.js +29 -1
- package/dist/JSONBSchemaValidation/validateJSONBSchemaSQL.js.map +1 -1
- package/lib/JSONBSchemaValidation/validateJSONBSchemaSQL.ts +30 -2
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const VALIDATE_SCHEMA_FUNCNAME = "prostgles.validate_jsonb_schema";
|
|
2
|
-
export declare const JSONB_DATA_TYPES: readonly [...("string" | "number" | "boolean" | "integer" | "time" | "timestamp" | "Date" | "any" | "unknown" | "Uint8Array" | "Blob" | "FileLike" | "string[]" | "number[]" | "boolean[]" | "integer[]" | "time[]" | "timestamp[]" | "Date[]" | "any[]" | "unknown[]" | "Uint8Array[]" | "Blob[]" | "FileLike[]")[], "
|
|
2
|
+
export declare const JSONB_DATA_TYPES: readonly [...("string" | "number" | "boolean" | "integer" | "time" | "timestamp" | "Date" | "any" | "unknown" | "Uint8Array" | "Blob" | "FileLike" | "string[]" | "number[]" | "boolean[]" | "integer[]" | "time[]" | "timestamp[]" | "Date[]" | "any[]" | "unknown[]" | "Uint8Array[]" | "Blob[]" | "FileLike[]")[], "RowLookup", "RowLookup[]", "ValueLookup", "ValueLookup[]", "TableLookup", "TableLookup[]", "ColumnLookup", "ColumnLookup[]"];
|
|
3
3
|
export declare const CREATE_VALIDATE_SCHEMA_FUNCTION_SQL: string;
|
|
4
4
|
//# sourceMappingURL=validateJSONBSchemaSQL.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateJSONBSchemaSQL.d.ts","sourceRoot":"","sources":["../../lib/JSONBSchemaValidation/validateJSONBSchemaSQL.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"validateJSONBSchemaSQL.d.ts","sourceRoot":"","sources":["../../lib/JSONBSchemaValidation/validateJSONBSchemaSQL.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAW1E,eAAO,MAAM,gBAAgB,qbAAkD,CAAC;AAEhF,eAAO,MAAM,mCAAmC,QAsc/C,CAAC"}
|
|
@@ -11,7 +11,17 @@ ELSE
|
|
|
11
11
|
END IF;
|
|
12
12
|
`;
|
|
13
13
|
exports.VALIDATE_SCHEMA_FUNCNAME = "prostgles.validate_jsonb_schema";
|
|
14
|
-
|
|
14
|
+
const JSONB_LOOKUP_TYPES = [
|
|
15
|
+
"RowLookup",
|
|
16
|
+
"RowLookup[]",
|
|
17
|
+
"ValueLookup",
|
|
18
|
+
"ValueLookup[]",
|
|
19
|
+
"TableLookup",
|
|
20
|
+
"TableLookup[]",
|
|
21
|
+
"ColumnLookup",
|
|
22
|
+
"ColumnLookup[]",
|
|
23
|
+
];
|
|
24
|
+
exports.JSONB_DATA_TYPES = [...prostgles_types_1.DATA_TYPES, ...JSONB_LOOKUP_TYPES];
|
|
15
25
|
exports.CREATE_VALIDATE_SCHEMA_FUNCTION_SQL = `
|
|
16
26
|
/*
|
|
17
27
|
* ${PubSubManagerUtils_1.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID}
|
|
@@ -195,6 +205,24 @@ BEGIN
|
|
|
195
205
|
/** Primitive */
|
|
196
206
|
ELSE
|
|
197
207
|
|
|
208
|
+
IF typeStr = 'TableLookup' THEN
|
|
209
|
+
typeStr = 'string';
|
|
210
|
+
ELSIF typeStr = 'ValueLookup' THEN
|
|
211
|
+
typeStr = 'any';
|
|
212
|
+
ELSIF typeStr = 'RowLookup' THEN
|
|
213
|
+
IF jsonb_typeof(data) != 'object' THEN
|
|
214
|
+
${raiseException(`'Data type not matching. Expected: object, Actual: %, %', jsonb_typeof(data), path`)}
|
|
215
|
+
END IF;
|
|
216
|
+
RETURN TRUE;
|
|
217
|
+
ELSIF typeStr = 'ColumnLookup' THEN
|
|
218
|
+
RETURN ${exports.VALIDATE_SCHEMA_FUNCNAME}(
|
|
219
|
+
'{ "type": { "table": "string", "column": "string" } }',
|
|
220
|
+
data,
|
|
221
|
+
context,
|
|
222
|
+
checked_path
|
|
223
|
+
);
|
|
224
|
+
END IF;
|
|
225
|
+
|
|
198
226
|
IF (
|
|
199
227
|
typeStr = 'number' AND jsonb_typeof(data) != typeStr OR
|
|
200
228
|
(typeStr = 'integer' AND (jsonb_typeof(data) != 'number' OR ceil(data::NUMERIC) != floor(data::NUMERIC))) OR
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateJSONBSchemaSQL.js","sourceRoot":"","sources":["../../lib/JSONBSchemaValidation/validateJSONBSchemaSQL.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"validateJSONBSchemaSQL.js","sourceRoot":"","sources":["../../lib/JSONBSchemaValidation/validateJSONBSchemaSQL.ts"],"names":[],"mappings":";;;AAAA,qDAAyD;AACzD,4EAAyF;AAEzF,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC;;;;oBAIpB,GAAG;;CAEtB,CAAC;AAEW,QAAA,wBAAwB,GAAG,iCAAiC,CAAC;AAC1E,MAAM,kBAAkB,GAAG;IACzB,WAAW;IACX,aAAa;IACb,aAAa;IACb,eAAe;IACf,aAAa;IACb,eAAe;IACf,cAAc;IACd,gBAAgB;CACyB,CAAC;AAC/B,QAAA,gBAAgB,GAAG,CAAC,GAAG,4BAAU,EAAE,GAAG,kBAAkB,CAAU,CAAC;AAEnE,QAAA,mCAAmC,GAAG;;IAE/C,uDAAkC;;6BAET,gCAAwB;;;;;;;;;;;;;6BAaxB,wBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoDjD,cAAc,CAAC,yBAAyB,CAAC;;;;;;;;;;;;;MAazC,cAAc,CAAC,2GAA2G,CAAC;;;;;;;QAOzH,cAAc,CAAC,4BAA4B,CAAC;;;;;;;;;;;QAW5C,cAAc,CAAC,8EAA8E,CAAC;;;;QAI9F,cAAc,CAAC,8DAA8D,CAAC;;;;;;;;;;;aAWzE,gCAAwB;;;;;;;;;;aAUxB,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;UAwB3B,cAAc,CAAC,yEAAyE,CAAC;;;;;;;;;YASvF,cAAc,CAAC,mDAAmD,CAAC;;;;;;;mBAO5D,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;cAwB7B,cAAc,CAAC,oFAAoF,CAAC;;;;mBAI/F,gCAAwB;;;;;;;;;;;;;;;YAe/B,cAAc,CAAC,wFAAwF,CAAC;;;;;;;;cAQtG,cAAc,CAAC,iHAAiH,CAAC;;;;;;;;cAQjI,cAAc,CAAC,oIAAoI,CAAC;;;YAGtJ,cAAc,CAAC,oEAAoE,CAAC;;;;;;;;;;UAUtF,cAAc,CAAC,oCAAoC,CAAC;;;;;;;;;;UAUpD,cAAc,CAAC,2HAA2H,CAAC;;;;;;;;;;;cAWvI,cAAc,CAAC,oFAAoF,CAAC;;;oBAG9F,gCAAwB;;;;;;;;;;;;;;QAcpC,cAAc,CAAC,sEAAsE,CAAC;;;;;;;;;QAStF,cAAc,CAAC,iGAAiG,CAAC;;;;;;;;;;;aAW5G,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAuC/B,cAAc,CAAC,gEAAgE,CAAC;;;;;;QAM9E,cAAc,CAAC,uGAAuG,CAAC;;;;QAIvH,cAAc,CAAC,uCAAuC,CAAC;;;;QAIvD,cAAc,CAAC;;;aAGV,CAAC;;;;;;;;;;;;eAYC,gCAAwB;;;;;;;;;;;;;;;;;;QAkB/B,cAAc,CAAC,4BAA4B,CAAC;;;;;;;eAOrC,gCAAwB;;;;;;;;;;;;;;;;;;;;;;;QAuB/B,cAAc,CAAC,kIAAkI,CAAC;;;;QAIlJ,cAAc,CAAC,6BAA6B,CAAC;;;;;;;6EAOwB,gCAAwB;;;;;;;oEAOjC,gCAAwB;;;;;;;;;MAStF,cAAc,CAAC,yCAAyC,CAAC;;;;;;;sBAOzC,gCAAwB,QAAQ,uDAAkC;;;;;;;;;CASvF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DATA_TYPES } from "prostgles-types";
|
|
1
|
+
import { DATA_TYPES, type JSONB } from "prostgles-types";
|
|
2
2
|
import { EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID } from "../PubSubManager/PubSubManagerUtils";
|
|
3
3
|
|
|
4
4
|
const raiseException = (err: string) => `
|
|
@@ -10,7 +10,17 @@ END IF;
|
|
|
10
10
|
`;
|
|
11
11
|
|
|
12
12
|
export const VALIDATE_SCHEMA_FUNCNAME = "prostgles.validate_jsonb_schema";
|
|
13
|
-
|
|
13
|
+
const JSONB_LOOKUP_TYPES = [
|
|
14
|
+
"RowLookup",
|
|
15
|
+
"RowLookup[]",
|
|
16
|
+
"ValueLookup",
|
|
17
|
+
"ValueLookup[]",
|
|
18
|
+
"TableLookup",
|
|
19
|
+
"TableLookup[]",
|
|
20
|
+
"ColumnLookup",
|
|
21
|
+
"ColumnLookup[]",
|
|
22
|
+
] as const satisfies JSONB.Lookup["type"][];
|
|
23
|
+
export const JSONB_DATA_TYPES = [...DATA_TYPES, ...JSONB_LOOKUP_TYPES] as const;
|
|
14
24
|
|
|
15
25
|
export const CREATE_VALIDATE_SCHEMA_FUNCTION_SQL = `
|
|
16
26
|
/*
|
|
@@ -195,6 +205,24 @@ BEGIN
|
|
|
195
205
|
/** Primitive */
|
|
196
206
|
ELSE
|
|
197
207
|
|
|
208
|
+
IF typeStr = 'TableLookup' THEN
|
|
209
|
+
typeStr = 'string';
|
|
210
|
+
ELSIF typeStr = 'ValueLookup' THEN
|
|
211
|
+
typeStr = 'any';
|
|
212
|
+
ELSIF typeStr = 'RowLookup' THEN
|
|
213
|
+
IF jsonb_typeof(data) != 'object' THEN
|
|
214
|
+
${raiseException(`'Data type not matching. Expected: object, Actual: %, %', jsonb_typeof(data), path`)}
|
|
215
|
+
END IF;
|
|
216
|
+
RETURN TRUE;
|
|
217
|
+
ELSIF typeStr = 'ColumnLookup' THEN
|
|
218
|
+
RETURN ${VALIDATE_SCHEMA_FUNCNAME}(
|
|
219
|
+
'{ "type": { "table": "string", "column": "string" } }',
|
|
220
|
+
data,
|
|
221
|
+
context,
|
|
222
|
+
checked_path
|
|
223
|
+
);
|
|
224
|
+
END IF;
|
|
225
|
+
|
|
198
226
|
IF (
|
|
199
227
|
typeStr = 'number' AND jsonb_typeof(data) != typeStr OR
|
|
200
228
|
(typeStr = 'integer' AND (jsonb_typeof(data) != 'number' OR ceil(data::NUMERIC) != floor(data::NUMERIC))) OR
|