prostgles-server 2.0.232 → 2.0.235
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/DBSchemaBuilder.js +3 -3
- package/dist/DBSchemaBuilder.js.map +1 -1
- package/dist/TableConfig.d.ts +2 -2
- package/dist/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig.js +1 -1
- package/dist/TableConfig.js.map +1 -1
- package/dist/validation.d.ts +16 -7
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +48 -19
- package/dist/validation.js.map +1 -1
- package/lib/DBSchemaBuilder.js +3 -3
- package/lib/DBSchemaBuilder.ts +4 -4
- package/lib/TableConfig.d.ts +2 -2
- package/lib/TableConfig.d.ts.map +1 -1
- package/lib/TableConfig.js +1 -1
- package/lib/TableConfig.ts +8 -3
- package/lib/validation.d.ts +16 -7
- package/lib/validation.d.ts.map +1 -1
- package/lib/validation.js +48 -19
- package/lib/validation.ts +57 -24
- package/package.json +1 -1
- package/tests/client/PID.txt +1 -1
- package/tests/isomorphic_queries.d.ts.map +1 -1
- package/tests/isomorphic_queries.js +8 -7
- package/tests/isomorphic_queries.ts +8 -7
- package/tests/server/DBoGenerated.d.ts +13 -7
- package/tests/server/index.js +18 -1
- package/tests/server/index.ts +19 -2
- package/tests/server/package-lock.json +1 -1
package/dist/DBSchemaBuilder.js
CHANGED
|
@@ -10,12 +10,12 @@ const getDBSchema = (dboBuilder) => {
|
|
|
10
10
|
dboBuilder.tablesOrViews?.slice(0).sort((a, b) => a.name.localeCompare(b.name)).forEach(tov => {
|
|
11
11
|
const cols = tov.columns.slice(0).sort((a, b) => a.name.localeCompare(b.name));
|
|
12
12
|
const getColType = (c) => {
|
|
13
|
-
let type = (0, DboBuilder_1.postgresToTsType)(c.udt_name) + ";";
|
|
13
|
+
let type = (c.is_nullable ? "null | " : "") + (0, DboBuilder_1.postgresToTsType)(c.udt_name) + ";";
|
|
14
14
|
const colConf = dboBuilder.prostgles.tableConfigurator?.getColumnConfig(tov.name, c.name);
|
|
15
15
|
if (colConf && "jsonbSchema" in colConf) {
|
|
16
|
-
type = (0, validation_1.
|
|
16
|
+
type = (0, validation_1.getJSONBSchemaTSTypes)(colConf.jsonbSchema, { nullable: colConf.nullable }, " ");
|
|
17
17
|
}
|
|
18
|
-
return `${(0, DboBuilder_1.escapeTSNames)(c.name)}${c.is_nullable || c.has_default ? "?" : ""}: ${
|
|
18
|
+
return `${(0, DboBuilder_1.escapeTSNames)(c.name)}${c.is_nullable || c.has_default ? "?" : ""}: ${type}`;
|
|
19
19
|
};
|
|
20
20
|
tables.push(`${(0, DboBuilder_1.escapeTSNames)(tov.name)}: {
|
|
21
21
|
is_view: ${tov.is_view};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DBSchemaBuilder.js","sourceRoot":"","sources":["../lib/DBSchemaBuilder.ts"],"names":[],"mappings":";;;AACA,wBAA0B;AAE1B,6CAA4F;AAE5F,
|
|
1
|
+
{"version":3,"file":"DBSchemaBuilder.js","sourceRoot":"","sources":["../lib/DBSchemaBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/TableConfig.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AnyObject, TableInfo, ALLOWED_EXTENSION, ALLOWED_CONTENT_TYPE } from "prostgles-types";
|
|
2
2
|
import { JoinInfo } from "./DboBuilder";
|
|
3
3
|
import { DB, DBHandlerServer, Prostgles } from "./Prostgles";
|
|
4
|
-
import { ValidationSchema } from "./validation";
|
|
4
|
+
import { OneOfTypes, ValidationSchema } from "./validation";
|
|
5
5
|
declare type ColExtraInfo = {
|
|
6
6
|
min?: string | number;
|
|
7
7
|
max?: string | number;
|
|
@@ -63,7 +63,7 @@ declare type TextColumn = TextColDef & {
|
|
|
63
63
|
lowerCased?: boolean;
|
|
64
64
|
};
|
|
65
65
|
declare type JSONBColumnDef = TextColDef & {
|
|
66
|
-
jsonbSchema: ValidationSchema
|
|
66
|
+
jsonbSchema: ValidationSchema | Pick<OneOfTypes, "oneOfTypes">;
|
|
67
67
|
};
|
|
68
68
|
/**
|
|
69
69
|
* Allows referencing media to this table.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["../lib/TableConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,SAAS,EAAE,SAAS,EAAG,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAClH,OAAO,EAAiB,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,eAAe,EAAS,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAwB,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["../lib/TableConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/TableConfig.js
CHANGED
|
@@ -186,7 +186,7 @@ class TableConfigurator {
|
|
|
186
186
|
return ` ${colNameEsc} ${getColDef(colConf, "TEXT")} ${checks}`;
|
|
187
187
|
}
|
|
188
188
|
else if ("jsonbSchema" in colConf && colConf.jsonbSchema) {
|
|
189
|
-
return ` ${colNameEsc} ${getColDef(colConf, "JSONB")} CHECK(${(0, validation_1.getPGCheckConstraint)({ schema: colConf.jsonbSchema, escapedFieldName: colNameEsc })})`;
|
|
189
|
+
return ` ${colNameEsc} ${getColDef(colConf, "JSONB")} CHECK(${(0, validation_1.getPGCheckConstraint)({ schema: colConf.jsonbSchema, escapedFieldName: colNameEsc, nullable: !!colConf.nullable }, 0)})`;
|
|
190
190
|
}
|
|
191
191
|
else {
|
|
192
192
|
throw "Unknown column config: " + JSON.stringify(colConf);
|
package/dist/TableConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableConfig.js","sourceRoot":"","sources":["../lib/TableConfig.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TableConfig.js","sourceRoot":"","sources":["../lib/TableConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/validation.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
declare type
|
|
1
|
+
declare type BaseOptions = {
|
|
2
|
+
optional?: boolean;
|
|
3
|
+
nullable?: boolean;
|
|
4
|
+
};
|
|
5
|
+
declare type SimpleType = BaseOptions & ({
|
|
2
6
|
type: "number" | "boolean" | "integer" | "string" | "number[]" | "boolean[]" | "integer[]" | "string[]" | ValidationSchema;
|
|
3
7
|
} | {
|
|
4
8
|
oneOf: readonly any[];
|
|
5
|
-
}
|
|
9
|
+
});
|
|
10
|
+
export declare type OneOfTypes = BaseOptions & {
|
|
6
11
|
oneOfTypes: readonly ValidationSchema[];
|
|
7
|
-
}) & {
|
|
8
|
-
optional?: boolean;
|
|
9
|
-
nullable?: boolean;
|
|
10
12
|
};
|
|
13
|
+
declare type FieldType = SimpleType | OneOfTypes;
|
|
11
14
|
declare type GetType<T extends FieldType> = T extends {
|
|
12
15
|
type: ValidationSchema;
|
|
13
16
|
} ? SchemaObject<T["type"]> : T extends {
|
|
@@ -43,8 +46,14 @@ export declare function validate<T>(obj: T, key: keyof T, validation: FieldType)
|
|
|
43
46
|
export declare function validateSchema<S extends ValidationSchema>(schema: S, obj: SchemaObject<S>, objName?: string, optional?: boolean): void;
|
|
44
47
|
export declare function getPGCheckConstraint(args: {
|
|
45
48
|
escapedFieldName: string;
|
|
46
|
-
schema: ValidationSchema;
|
|
47
|
-
|
|
49
|
+
schema: ValidationSchema | OneOfTypes;
|
|
50
|
+
nullable: boolean;
|
|
51
|
+
isRootQuery?: boolean;
|
|
52
|
+
}, depth: number): string;
|
|
53
|
+
declare type ColOpts = {
|
|
54
|
+
nullable?: boolean;
|
|
55
|
+
};
|
|
48
56
|
export declare function getSchemaTSTypes(schema: ValidationSchema, leading?: string, isOneOf?: boolean): string;
|
|
57
|
+
export declare function getJSONBSchemaTSTypes(schema: ValidationSchema | OneOfTypes, colOpts: ColOpts, leading?: string, isOneOf?: boolean): string;
|
|
49
58
|
export {};
|
|
50
59
|
//# sourceMappingURL=validation.d.ts.map
|
package/dist/validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../lib/validation.ts"],"names":[],"mappings":"AAGA,aAAK,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../lib/validation.ts"],"names":[],"mappings":"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"}
|
package/dist/validation.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getSchemaTSTypes = exports.getPGCheckConstraint = exports.validateSchema = exports.validate = void 0;
|
|
3
|
+
exports.getJSONBSchemaTSTypes = exports.getSchemaTSTypes = exports.getPGCheckConstraint = exports.validateSchema = exports.validate = void 0;
|
|
4
4
|
const prostgles_types_1 = require("prostgles-types");
|
|
5
5
|
const PubSubManager_1 = require("./PubSubManager");
|
|
6
6
|
/** tests */
|
|
@@ -52,14 +52,15 @@ function validateSchema(schema, obj, objName, optional = false) {
|
|
|
52
52
|
(0, prostgles_types_1.getKeys)(schema).forEach(k => validate(obj, k, schema[k]));
|
|
53
53
|
}
|
|
54
54
|
exports.validateSchema = validateSchema;
|
|
55
|
-
function getPGCheckConstraint(args) {
|
|
56
|
-
const { schema: s, escapedFieldName } = args;
|
|
55
|
+
function getPGCheckConstraint(args, depth) {
|
|
56
|
+
const { schema: s, escapedFieldName, nullable } = args;
|
|
57
57
|
const jsToPGtypes = {
|
|
58
|
+
"integer": "::INTEGER",
|
|
58
59
|
"number": "::NUMERIC",
|
|
59
60
|
"boolean": "::BOOLEAN",
|
|
60
|
-
"string": ""
|
|
61
|
+
"string": "::TEXT"
|
|
61
62
|
};
|
|
62
|
-
const kChecks = (k) => {
|
|
63
|
+
const kChecks = (k, s) => {
|
|
63
64
|
const t = s[k];
|
|
64
65
|
const checks = [];
|
|
65
66
|
const valAsJson = `${escapedFieldName}->${(0, PubSubManager_1.asValue)(k)}`;
|
|
@@ -69,7 +70,7 @@ function getPGCheckConstraint(args) {
|
|
|
69
70
|
if (t.optional)
|
|
70
71
|
checks.push(`${escapedFieldName} ? ${(0, PubSubManager_1.asValue)(k)} = FALSE`);
|
|
71
72
|
if ("oneOfTypes" in t) {
|
|
72
|
-
checks.push(`(${t.oneOfTypes.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType })).join(" OR ")})`);
|
|
73
|
+
checks.push(`(${t.oneOfTypes.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType, nullable }, depth + 1)).join(" OR ")})`);
|
|
73
74
|
}
|
|
74
75
|
else if ("oneOf" in t) {
|
|
75
76
|
if (!t.oneOf.length || t.oneOf.some(v => v === undefined || !["number", "boolean", "string", null].includes(typeof v))) {
|
|
@@ -85,42 +86,61 @@ function getPGCheckConstraint(args) {
|
|
|
85
86
|
}
|
|
86
87
|
else if ("type" in t) {
|
|
87
88
|
if (typeof t.type === "string") {
|
|
88
|
-
const correctType = t.type.replace("integer", "number");
|
|
89
89
|
if (t.type.endsWith("[]")) {
|
|
90
|
-
|
|
91
|
-
checks.push(`
|
|
92
|
-
jsonb_typeof(${valAsJson}) = 'array' AND
|
|
93
|
-
( jsonb_array_length(${valAsJson}) = 0 OR jsonb_typeof(jsonb_array_element(${valAsJson}, 1)) = ${(0, PubSubManager_1.asValue)(correctType.slice(0, -2))} )`);
|
|
90
|
+
const correctType = t.type.slice(0, -2);
|
|
91
|
+
checks.push(`jsonb_typeof(${valAsJson}) = 'array' AND ('{' || right(left(${valAsText},-1),-1) || '}')${jsToPGtypes[correctType]}[] IS NOT NULL`);
|
|
94
92
|
}
|
|
95
93
|
else {
|
|
94
|
+
const correctType = t.type.replace("integer", "number");
|
|
96
95
|
checks.push(`jsonb_typeof(${valAsJson}) = ${(0, PubSubManager_1.asValue)(correctType)} `);
|
|
97
96
|
}
|
|
98
97
|
}
|
|
99
98
|
else {
|
|
100
|
-
checks.push("( " + getPGCheckConstraint({ escapedFieldName: valAsJson, schema: t.type }) + " )");
|
|
99
|
+
checks.push("( " + getPGCheckConstraint({ escapedFieldName: valAsJson, schema: t.type, nullable: !!t.nullable }, depth + 1) + " )");
|
|
101
100
|
}
|
|
102
101
|
}
|
|
103
|
-
|
|
102
|
+
const result = checks.join(" OR ");
|
|
103
|
+
if (!depth)
|
|
104
|
+
return `COALESCE(${result}, false)`;
|
|
105
|
+
return result;
|
|
104
106
|
};
|
|
105
|
-
|
|
107
|
+
const getSchemaChecks = (s) => (0, prostgles_types_1.getKeys)(s).map(k => "(" + kChecks(k, s) + ")").join(" AND ");
|
|
108
|
+
let q = "";
|
|
109
|
+
if (isOneOfTypes(s)) {
|
|
110
|
+
q = s.oneOfTypes.map(t => `(${getSchemaChecks(t)})`).join(" OR ");
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
q = getSchemaChecks(s);
|
|
114
|
+
}
|
|
115
|
+
return nullable ? ` ${escapedFieldName} IS NULL OR (${q})` : q;
|
|
106
116
|
}
|
|
107
117
|
exports.getPGCheckConstraint = getPGCheckConstraint;
|
|
118
|
+
const isOneOfTypes = (s) => {
|
|
119
|
+
if ("oneOfTypes" in s) {
|
|
120
|
+
if (!Array.isArray(s.oneOfTypes)) {
|
|
121
|
+
throw "Expecting oneOfTypes to be an array of types";
|
|
122
|
+
}
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
126
|
+
};
|
|
108
127
|
function getSchemaTSTypes(schema, leading = "", isOneOf = false) {
|
|
109
128
|
const getFieldType = (def) => {
|
|
129
|
+
const nullType = (def.nullable ? `null | ` : "");
|
|
110
130
|
if ("type" in def) {
|
|
111
131
|
if (typeof def.type === "string") {
|
|
112
132
|
const correctType = def.type.replace("integer", "number");
|
|
113
|
-
return correctType;
|
|
133
|
+
return nullType + correctType;
|
|
114
134
|
}
|
|
115
135
|
else {
|
|
116
|
-
return getSchemaTSTypes(def.type);
|
|
136
|
+
return nullType + getSchemaTSTypes(def.type);
|
|
117
137
|
}
|
|
118
138
|
}
|
|
119
139
|
else if ("oneOf" in def) {
|
|
120
|
-
return def.oneOf.map(v => (0, PubSubManager_1.asValue)(v)).join(" | ");
|
|
140
|
+
return nullType + def.oneOf.map(v => (0, PubSubManager_1.asValue)(v)).join(" | ");
|
|
121
141
|
}
|
|
122
142
|
else if ("oneOfTypes" in def) {
|
|
123
|
-
return def.oneOfTypes.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("");
|
|
143
|
+
return (def.nullable ? `\n${leading} | null` : "") + def.oneOfTypes.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("");
|
|
124
144
|
}
|
|
125
145
|
else
|
|
126
146
|
throw "Unexpected getSchemaTSTypes";
|
|
@@ -128,7 +148,7 @@ function getSchemaTSTypes(schema, leading = "", isOneOf = false) {
|
|
|
128
148
|
let spacing = isOneOf ? " " : " ";
|
|
129
149
|
let res = `${leading}{ \n` + (0, prostgles_types_1.getKeys)(schema).map(k => {
|
|
130
150
|
const def = schema[k];
|
|
131
|
-
return `${leading}${spacing}${k}${def.optional ? "?" : ""}:
|
|
151
|
+
return `${leading}${spacing}${k}${def.optional ? "?" : ""}: ` + getFieldType(def) + ";";
|
|
132
152
|
}).join("\n") + ` \n${leading}}${isOneOf ? "" : ";"}`;
|
|
133
153
|
/** Keep single line */
|
|
134
154
|
if (isOneOf)
|
|
@@ -136,4 +156,13 @@ function getSchemaTSTypes(schema, leading = "", isOneOf = false) {
|
|
|
136
156
|
return res;
|
|
137
157
|
}
|
|
138
158
|
exports.getSchemaTSTypes = getSchemaTSTypes;
|
|
159
|
+
function getJSONBSchemaTSTypes(schema, colOpts, leading = "", isOneOf = false) {
|
|
160
|
+
if (isOneOfTypes(schema)) {
|
|
161
|
+
return (colOpts.nullable ? `\n${leading} | null` : "") + schema.oneOfTypes.map(s => `\n${leading} | ` + getSchemaTSTypes(s, "", true)).join("");
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
return (colOpts.nullable ? `null | ` : "") + getSchemaTSTypes(schema, leading, isOneOf);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.getJSONBSchemaTSTypes = getJSONBSchemaTSTypes;
|
|
139
168
|
//# sourceMappingURL=validation.js.map
|
package/dist/validation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../lib/validation.ts"],"names":[],"mappings":";;;AAAA,qDAAqE;AACrE,mDAA0C;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../lib/validation.ts"],"names":[],"mappings":"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"}
|
package/lib/DBSchemaBuilder.js
CHANGED
|
@@ -13,12 +13,12 @@ const getDBSchema = (dboBuilder) => {
|
|
|
13
13
|
dboBuilder.tablesOrViews?.slice(0).sort((a, b) => a.name.localeCompare(b.name)).forEach(tov => {
|
|
14
14
|
const cols = tov.columns.slice(0).sort((a, b) => a.name.localeCompare(b.name));
|
|
15
15
|
const getColType = (c) => {
|
|
16
|
-
let type = (0, DboBuilder_1.postgresToTsType)(c.udt_name) + ";";
|
|
16
|
+
let type = (c.is_nullable ? "null | " : "") + (0, DboBuilder_1.postgresToTsType)(c.udt_name) + ";";
|
|
17
17
|
const colConf = dboBuilder.prostgles.tableConfigurator?.getColumnConfig(tov.name, c.name);
|
|
18
18
|
if (colConf && "jsonbSchema" in colConf) {
|
|
19
|
-
type = (0, validation_1.
|
|
19
|
+
type = (0, validation_1.getJSONBSchemaTSTypes)(colConf.jsonbSchema, { nullable: colConf.nullable }, " ");
|
|
20
20
|
}
|
|
21
|
-
return `${(0, DboBuilder_1.escapeTSNames)(c.name)}${c.is_nullable || c.has_default ? "?" : ""}: ${
|
|
21
|
+
return `${(0, DboBuilder_1.escapeTSNames)(c.name)}${c.is_nullable || c.has_default ? "?" : ""}: ${type}`;
|
|
22
22
|
};
|
|
23
23
|
tables.push(`${(0, DboBuilder_1.escapeTSNames)(tov.name)}: {
|
|
24
24
|
is_view: ${tov.is_view};
|
package/lib/DBSchemaBuilder.ts
CHANGED
|
@@ -3,7 +3,7 @@ import prostgles from ".";
|
|
|
3
3
|
import { Auth } from "./AuthHandler";
|
|
4
4
|
import { DBHandlerServer, DboBuilder, escapeTSNames, postgresToTsType } from "./DboBuilder";
|
|
5
5
|
import { PublishAllOrNothing, PublishParams, PublishTableRule, PublishViewRule, } from "./PublishParser";
|
|
6
|
-
import {
|
|
6
|
+
import { getJSONBSchemaTSTypes } from "./validation";
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
export const getDBSchema = (dboBuilder: DboBuilder): string => {
|
|
@@ -14,12 +14,12 @@ export const getDBSchema = (dboBuilder: DboBuilder): string => {
|
|
|
14
14
|
dboBuilder.tablesOrViews?.slice(0).sort((a, b) => a.name.localeCompare(b.name)).forEach(tov => {
|
|
15
15
|
const cols = tov.columns.slice(0).sort((a, b) => a.name.localeCompare(b.name));
|
|
16
16
|
const getColType = (c: typeof cols[number]) => {
|
|
17
|
-
let type: string = postgresToTsType(c.udt_name) + ";"
|
|
17
|
+
let type: string = (c.is_nullable? "null | " : "") + postgresToTsType(c.udt_name) + ";"
|
|
18
18
|
const colConf = dboBuilder.prostgles.tableConfigurator?.getColumnConfig(tov.name, c.name);
|
|
19
19
|
if(colConf && "jsonbSchema" in colConf){
|
|
20
|
-
type =
|
|
20
|
+
type = getJSONBSchemaTSTypes(colConf.jsonbSchema, { nullable: colConf.nullable }, " ");
|
|
21
21
|
}
|
|
22
|
-
return `${escapeTSNames(c.name)}${c.is_nullable || c.has_default? "?" : ""}: ${
|
|
22
|
+
return `${escapeTSNames(c.name)}${c.is_nullable || c.has_default? "?" : ""}: ${type}`
|
|
23
23
|
}
|
|
24
24
|
tables.push(`${escapeTSNames(tov.name)}: {
|
|
25
25
|
is_view: ${tov.is_view};
|
package/lib/TableConfig.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AnyObject, TableInfo, ALLOWED_EXTENSION, ALLOWED_CONTENT_TYPE } from "prostgles-types";
|
|
2
2
|
import { JoinInfo } from "./DboBuilder";
|
|
3
3
|
import { DB, DBHandlerServer, Prostgles } from "./Prostgles";
|
|
4
|
-
import { ValidationSchema } from "./validation";
|
|
4
|
+
import { OneOfTypes, ValidationSchema } from "./validation";
|
|
5
5
|
declare type ColExtraInfo = {
|
|
6
6
|
min?: string | number;
|
|
7
7
|
max?: string | number;
|
|
@@ -63,7 +63,7 @@ declare type TextColumn = TextColDef & {
|
|
|
63
63
|
lowerCased?: boolean;
|
|
64
64
|
};
|
|
65
65
|
declare type JSONBColumnDef = TextColDef & {
|
|
66
|
-
jsonbSchema: ValidationSchema
|
|
66
|
+
jsonbSchema: ValidationSchema | Pick<OneOfTypes, "oneOfTypes">;
|
|
67
67
|
};
|
|
68
68
|
/**
|
|
69
69
|
* Allows referencing media to this table.
|
package/lib/TableConfig.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["TableConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,SAAS,EAAE,SAAS,EAAG,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAClH,OAAO,EAAiB,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,eAAe,EAAS,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAwB,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["TableConfig.ts"],"names":[],"mappings":"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"}
|
package/lib/TableConfig.js
CHANGED
|
@@ -186,7 +186,7 @@ class TableConfigurator {
|
|
|
186
186
|
return ` ${colNameEsc} ${getColDef(colConf, "TEXT")} ${checks}`;
|
|
187
187
|
}
|
|
188
188
|
else if ("jsonbSchema" in colConf && colConf.jsonbSchema) {
|
|
189
|
-
return ` ${colNameEsc} ${getColDef(colConf, "JSONB")} CHECK(${(0, validation_1.getPGCheckConstraint)({ schema: colConf.jsonbSchema, escapedFieldName: colNameEsc })})`;
|
|
189
|
+
return ` ${colNameEsc} ${getColDef(colConf, "JSONB")} CHECK(${(0, validation_1.getPGCheckConstraint)({ schema: colConf.jsonbSchema, escapedFieldName: colNameEsc, nullable: !!colConf.nullable }, 0)})`;
|
|
190
190
|
}
|
|
191
191
|
else {
|
|
192
192
|
throw "Unknown column config: " + JSON.stringify(colConf);
|
package/lib/TableConfig.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { getKeys, asName, AnyObject, TableInfo, ALLOWED_EXTENSION, ALLOWED_CONT
|
|
|
2
2
|
import { isPlainObject, JoinInfo } from "./DboBuilder";
|
|
3
3
|
import { DB, DBHandlerServer, Joins, Prostgles } from "./Prostgles";
|
|
4
4
|
import { asValue } from "./PubSubManager";
|
|
5
|
-
import { getPGCheckConstraint, ValidationSchema } from "./validation";
|
|
5
|
+
import { getPGCheckConstraint, OneOfTypes, ValidationSchema } from "./validation";
|
|
6
6
|
|
|
7
7
|
type ColExtraInfo = {
|
|
8
8
|
min?: string | number;
|
|
@@ -87,7 +87,12 @@ type TextColumn = TextColDef & {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
type JSONBColumnDef = TextColDef & {
|
|
90
|
-
jsonbSchema: ValidationSchema
|
|
90
|
+
jsonbSchema: ValidationSchema | Pick<OneOfTypes, "oneOfTypes">;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* If the new schema CHECK fails old rows the update old rows using this function
|
|
94
|
+
*/
|
|
95
|
+
// onMigrationFail?: <T>(failedRow: T) => AnyObject | Promise<AnyObject>;
|
|
91
96
|
}
|
|
92
97
|
|
|
93
98
|
/**
|
|
@@ -389,7 +394,7 @@ export default class TableConfigurator<LANG_IDS = { en: 1 }> {
|
|
|
389
394
|
|
|
390
395
|
} else if ("jsonbSchema" in colConf && colConf.jsonbSchema) {
|
|
391
396
|
|
|
392
|
-
return ` ${colNameEsc} ${getColDef(colConf, "JSONB")} CHECK(${getPGCheckConstraint({ schema: colConf.jsonbSchema, escapedFieldName: colNameEsc })})`;
|
|
397
|
+
return ` ${colNameEsc} ${getColDef(colConf, "JSONB")} CHECK(${getPGCheckConstraint({ schema: colConf.jsonbSchema, escapedFieldName: colNameEsc, nullable: !!colConf.nullable }, 0)})`;
|
|
393
398
|
|
|
394
399
|
} else {
|
|
395
400
|
throw "Unknown column config: " + JSON.stringify(colConf);
|
package/lib/validation.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
declare type
|
|
1
|
+
declare type BaseOptions = {
|
|
2
|
+
optional?: boolean;
|
|
3
|
+
nullable?: boolean;
|
|
4
|
+
};
|
|
5
|
+
declare type SimpleType = BaseOptions & ({
|
|
2
6
|
type: "number" | "boolean" | "integer" | "string" | "number[]" | "boolean[]" | "integer[]" | "string[]" | ValidationSchema;
|
|
3
7
|
} | {
|
|
4
8
|
oneOf: readonly any[];
|
|
5
|
-
}
|
|
9
|
+
});
|
|
10
|
+
export declare type OneOfTypes = BaseOptions & {
|
|
6
11
|
oneOfTypes: readonly ValidationSchema[];
|
|
7
|
-
}) & {
|
|
8
|
-
optional?: boolean;
|
|
9
|
-
nullable?: boolean;
|
|
10
12
|
};
|
|
13
|
+
declare type FieldType = SimpleType | OneOfTypes;
|
|
11
14
|
declare type GetType<T extends FieldType> = T extends {
|
|
12
15
|
type: ValidationSchema;
|
|
13
16
|
} ? SchemaObject<T["type"]> : T extends {
|
|
@@ -43,8 +46,14 @@ export declare function validate<T>(obj: T, key: keyof T, validation: FieldType)
|
|
|
43
46
|
export declare function validateSchema<S extends ValidationSchema>(schema: S, obj: SchemaObject<S>, objName?: string, optional?: boolean): void;
|
|
44
47
|
export declare function getPGCheckConstraint(args: {
|
|
45
48
|
escapedFieldName: string;
|
|
46
|
-
schema: ValidationSchema;
|
|
47
|
-
|
|
49
|
+
schema: ValidationSchema | OneOfTypes;
|
|
50
|
+
nullable: boolean;
|
|
51
|
+
isRootQuery?: boolean;
|
|
52
|
+
}, depth: number): string;
|
|
53
|
+
declare type ColOpts = {
|
|
54
|
+
nullable?: boolean;
|
|
55
|
+
};
|
|
48
56
|
export declare function getSchemaTSTypes(schema: ValidationSchema, leading?: string, isOneOf?: boolean): string;
|
|
57
|
+
export declare function getJSONBSchemaTSTypes(schema: ValidationSchema | OneOfTypes, colOpts: ColOpts, leading?: string, isOneOf?: boolean): string;
|
|
49
58
|
export {};
|
|
50
59
|
//# sourceMappingURL=validation.d.ts.map
|
package/lib/validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["validation.ts"],"names":[],"mappings":"AAGA,aAAK,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["validation.ts"],"names":[],"mappings":"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"}
|
package/lib/validation.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getSchemaTSTypes = exports.getPGCheckConstraint = exports.validateSchema = exports.validate = void 0;
|
|
3
|
+
exports.getJSONBSchemaTSTypes = exports.getSchemaTSTypes = exports.getPGCheckConstraint = exports.validateSchema = exports.validate = void 0;
|
|
4
4
|
const prostgles_types_1 = require("prostgles-types");
|
|
5
5
|
const PubSubManager_1 = require("./PubSubManager");
|
|
6
6
|
/** tests */
|
|
@@ -52,14 +52,15 @@ function validateSchema(schema, obj, objName, optional = false) {
|
|
|
52
52
|
(0, prostgles_types_1.getKeys)(schema).forEach(k => validate(obj, k, schema[k]));
|
|
53
53
|
}
|
|
54
54
|
exports.validateSchema = validateSchema;
|
|
55
|
-
function getPGCheckConstraint(args) {
|
|
56
|
-
const { schema: s, escapedFieldName } = args;
|
|
55
|
+
function getPGCheckConstraint(args, depth) {
|
|
56
|
+
const { schema: s, escapedFieldName, nullable } = args;
|
|
57
57
|
const jsToPGtypes = {
|
|
58
|
+
"integer": "::INTEGER",
|
|
58
59
|
"number": "::NUMERIC",
|
|
59
60
|
"boolean": "::BOOLEAN",
|
|
60
|
-
"string": ""
|
|
61
|
+
"string": "::TEXT"
|
|
61
62
|
};
|
|
62
|
-
const kChecks = (k) => {
|
|
63
|
+
const kChecks = (k, s) => {
|
|
63
64
|
const t = s[k];
|
|
64
65
|
const checks = [];
|
|
65
66
|
const valAsJson = `${escapedFieldName}->${(0, PubSubManager_1.asValue)(k)}`;
|
|
@@ -69,7 +70,7 @@ function getPGCheckConstraint(args) {
|
|
|
69
70
|
if (t.optional)
|
|
70
71
|
checks.push(`${escapedFieldName} ? ${(0, PubSubManager_1.asValue)(k)} = FALSE`);
|
|
71
72
|
if ("oneOfTypes" in t) {
|
|
72
|
-
checks.push(`(${t.oneOfTypes.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType })).join(" OR ")})`);
|
|
73
|
+
checks.push(`(${t.oneOfTypes.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType, nullable }, depth + 1)).join(" OR ")})`);
|
|
73
74
|
}
|
|
74
75
|
else if ("oneOf" in t) {
|
|
75
76
|
if (!t.oneOf.length || t.oneOf.some(v => v === undefined || !["number", "boolean", "string", null].includes(typeof v))) {
|
|
@@ -85,42 +86,61 @@ function getPGCheckConstraint(args) {
|
|
|
85
86
|
}
|
|
86
87
|
else if ("type" in t) {
|
|
87
88
|
if (typeof t.type === "string") {
|
|
88
|
-
const correctType = t.type.replace("integer", "number");
|
|
89
89
|
if (t.type.endsWith("[]")) {
|
|
90
|
-
|
|
91
|
-
checks.push(`
|
|
92
|
-
jsonb_typeof(${valAsJson}) = 'array' AND
|
|
93
|
-
( jsonb_array_length(${valAsJson}) = 0 OR jsonb_typeof(jsonb_array_element(${valAsJson}, 1)) = ${(0, PubSubManager_1.asValue)(correctType.slice(0, -2))} )`);
|
|
90
|
+
const correctType = t.type.slice(0, -2);
|
|
91
|
+
checks.push(`jsonb_typeof(${valAsJson}) = 'array' AND ('{' || right(left(${valAsText},-1),-1) || '}')${jsToPGtypes[correctType]}[] IS NOT NULL`);
|
|
94
92
|
}
|
|
95
93
|
else {
|
|
94
|
+
const correctType = t.type.replace("integer", "number");
|
|
96
95
|
checks.push(`jsonb_typeof(${valAsJson}) = ${(0, PubSubManager_1.asValue)(correctType)} `);
|
|
97
96
|
}
|
|
98
97
|
}
|
|
99
98
|
else {
|
|
100
|
-
checks.push("( " + getPGCheckConstraint({ escapedFieldName: valAsJson, schema: t.type }) + " )");
|
|
99
|
+
checks.push("( " + getPGCheckConstraint({ escapedFieldName: valAsJson, schema: t.type, nullable: !!t.nullable }, depth + 1) + " )");
|
|
101
100
|
}
|
|
102
101
|
}
|
|
103
|
-
|
|
102
|
+
const result = checks.join(" OR ");
|
|
103
|
+
if (!depth)
|
|
104
|
+
return `COALESCE(${result}, false)`;
|
|
105
|
+
return result;
|
|
104
106
|
};
|
|
105
|
-
|
|
107
|
+
const getSchemaChecks = (s) => (0, prostgles_types_1.getKeys)(s).map(k => "(" + kChecks(k, s) + ")").join(" AND ");
|
|
108
|
+
let q = "";
|
|
109
|
+
if (isOneOfTypes(s)) {
|
|
110
|
+
q = s.oneOfTypes.map(t => `(${getSchemaChecks(t)})`).join(" OR ");
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
q = getSchemaChecks(s);
|
|
114
|
+
}
|
|
115
|
+
return nullable ? ` ${escapedFieldName} IS NULL OR (${q})` : q;
|
|
106
116
|
}
|
|
107
117
|
exports.getPGCheckConstraint = getPGCheckConstraint;
|
|
118
|
+
const isOneOfTypes = (s) => {
|
|
119
|
+
if ("oneOfTypes" in s) {
|
|
120
|
+
if (!Array.isArray(s.oneOfTypes)) {
|
|
121
|
+
throw "Expecting oneOfTypes to be an array of types";
|
|
122
|
+
}
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
126
|
+
};
|
|
108
127
|
function getSchemaTSTypes(schema, leading = "", isOneOf = false) {
|
|
109
128
|
const getFieldType = (def) => {
|
|
129
|
+
const nullType = (def.nullable ? `null | ` : "");
|
|
110
130
|
if ("type" in def) {
|
|
111
131
|
if (typeof def.type === "string") {
|
|
112
132
|
const correctType = def.type.replace("integer", "number");
|
|
113
|
-
return correctType;
|
|
133
|
+
return nullType + correctType;
|
|
114
134
|
}
|
|
115
135
|
else {
|
|
116
|
-
return getSchemaTSTypes(def.type);
|
|
136
|
+
return nullType + getSchemaTSTypes(def.type);
|
|
117
137
|
}
|
|
118
138
|
}
|
|
119
139
|
else if ("oneOf" in def) {
|
|
120
|
-
return def.oneOf.map(v => (0, PubSubManager_1.asValue)(v)).join(" | ");
|
|
140
|
+
return nullType + def.oneOf.map(v => (0, PubSubManager_1.asValue)(v)).join(" | ");
|
|
121
141
|
}
|
|
122
142
|
else if ("oneOfTypes" in def) {
|
|
123
|
-
return def.oneOfTypes.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("");
|
|
143
|
+
return (def.nullable ? `\n${leading} | null` : "") + def.oneOfTypes.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("");
|
|
124
144
|
}
|
|
125
145
|
else
|
|
126
146
|
throw "Unexpected getSchemaTSTypes";
|
|
@@ -128,7 +148,7 @@ function getSchemaTSTypes(schema, leading = "", isOneOf = false) {
|
|
|
128
148
|
let spacing = isOneOf ? " " : " ";
|
|
129
149
|
let res = `${leading}{ \n` + (0, prostgles_types_1.getKeys)(schema).map(k => {
|
|
130
150
|
const def = schema[k];
|
|
131
|
-
return `${leading}${spacing}${k}${def.optional ? "?" : ""}:
|
|
151
|
+
return `${leading}${spacing}${k}${def.optional ? "?" : ""}: ` + getFieldType(def) + ";";
|
|
132
152
|
}).join("\n") + ` \n${leading}}${isOneOf ? "" : ";"}`;
|
|
133
153
|
/** Keep single line */
|
|
134
154
|
if (isOneOf)
|
|
@@ -136,3 +156,12 @@ function getSchemaTSTypes(schema, leading = "", isOneOf = false) {
|
|
|
136
156
|
return res;
|
|
137
157
|
}
|
|
138
158
|
exports.getSchemaTSTypes = getSchemaTSTypes;
|
|
159
|
+
function getJSONBSchemaTSTypes(schema, colOpts, leading = "", isOneOf = false) {
|
|
160
|
+
if (isOneOfTypes(schema)) {
|
|
161
|
+
return (colOpts.nullable ? `\n${leading} | null` : "") + schema.oneOfTypes.map(s => `\n${leading} | ` + getSchemaTSTypes(s, "", true)).join("");
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
return (colOpts.nullable ? `null | ` : "") + getSchemaTSTypes(schema, leading, isOneOf);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.getJSONBSchemaTSTypes = getJSONBSchemaTSTypes;
|
package/lib/validation.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { asName, getKeys, isEmpty, isObject } from "prostgles-types";
|
|
2
2
|
import { asValue } from "./PubSubManager";
|
|
3
3
|
|
|
4
|
-
type
|
|
4
|
+
type BaseOptions = {
|
|
5
|
+
optional?: boolean;
|
|
6
|
+
nullable?: boolean;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
type SimpleType = BaseOptions & ({
|
|
5
10
|
type:
|
|
6
11
|
| "number" | "boolean" | "integer" | "string"
|
|
7
12
|
| "number[]" | "boolean[]" | "integer[]" | "string[]"
|
|
@@ -9,12 +14,12 @@ type FieldType = ({
|
|
|
9
14
|
|
|
10
15
|
} | {
|
|
11
16
|
oneOf: readonly any[];
|
|
12
|
-
}
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
export type OneOfTypes = BaseOptions & {
|
|
13
20
|
oneOfTypes: readonly ValidationSchema[];
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
nullable?: boolean;
|
|
17
|
-
};
|
|
21
|
+
}
|
|
22
|
+
type FieldType = SimpleType | OneOfTypes;
|
|
18
23
|
|
|
19
24
|
type GetType<T extends FieldType> =
|
|
20
25
|
| T extends { type: ValidationSchema }? SchemaObject<T["type"]> :
|
|
@@ -82,16 +87,17 @@ export function validateSchema<S extends ValidationSchema>(schema: S, obj: Schem
|
|
|
82
87
|
getKeys(schema).forEach(k => validate(obj as any, k, schema[k]));
|
|
83
88
|
}
|
|
84
89
|
|
|
85
|
-
export function getPGCheckConstraint(args: { escapedFieldName: string; schema: ValidationSchema }): string {
|
|
86
|
-
const { schema: s, escapedFieldName } = args;
|
|
90
|
+
export function getPGCheckConstraint(args: { escapedFieldName: string; schema: ValidationSchema | OneOfTypes, nullable: boolean; isRootQuery?: boolean; }, depth: number): string {
|
|
91
|
+
const { schema: s, escapedFieldName, nullable } = args;
|
|
87
92
|
|
|
88
93
|
const jsToPGtypes = {
|
|
94
|
+
"integer": "::INTEGER",
|
|
89
95
|
"number": "::NUMERIC",
|
|
90
96
|
"boolean": "::BOOLEAN",
|
|
91
|
-
"string": ""
|
|
97
|
+
"string": "::TEXT"
|
|
92
98
|
}
|
|
93
99
|
|
|
94
|
-
const kChecks = (k: string) => {
|
|
100
|
+
const kChecks = (k: string, s: ValidationSchema) => {
|
|
95
101
|
const t = s[k];
|
|
96
102
|
const checks: string[] = [];
|
|
97
103
|
const valAsJson = `${escapedFieldName}->${asValue(k)}`;
|
|
@@ -100,7 +106,7 @@ export function getPGCheckConstraint(args: { escapedFieldName: string; schema: V
|
|
|
100
106
|
if(t.optional) checks.push(`${escapedFieldName} ? ${asValue(k)} = FALSE`);
|
|
101
107
|
|
|
102
108
|
if("oneOfTypes" in t){
|
|
103
|
-
checks.push(`(${t.oneOfTypes.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType })).join(" OR ")})`)
|
|
109
|
+
checks.push(`(${t.oneOfTypes.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType, nullable }, depth + 1)).join(" OR ")})`)
|
|
104
110
|
} else if("oneOf" in t){
|
|
105
111
|
if(!t.oneOf.length || t.oneOf.some(v => v === undefined || !["number", "boolean", "string", null].includes(typeof v))) {
|
|
106
112
|
throw new Error(`Invalid ValidationSchema for property: ${k} of field ${escapedFieldName}: oneOf cannot be empty AND can only contain: numbers, text, boolean, null`);
|
|
@@ -113,39 +119,58 @@ export function getPGCheckConstraint(args: { escapedFieldName: string; schema: V
|
|
|
113
119
|
})
|
|
114
120
|
} else if("type" in t){
|
|
115
121
|
if(typeof t.type === "string") {
|
|
116
|
-
const correctType = t.type.replace("integer", "number")
|
|
117
122
|
if(t.type.endsWith("[]")){
|
|
118
|
-
|
|
119
|
-
checks.push(`
|
|
120
|
-
jsonb_typeof(${valAsJson}) = 'array' AND
|
|
121
|
-
( jsonb_array_length(${valAsJson}) = 0 OR jsonb_typeof(jsonb_array_element(${valAsJson}, 1)) = ${asValue(correctType.slice(0, -2))} )`)
|
|
123
|
+
const correctType = t.type.slice(0, -2);
|
|
124
|
+
checks.push(`jsonb_typeof(${valAsJson}) = 'array' AND ('{' || right(left(${valAsText},-1),-1) || '}')${jsToPGtypes[correctType as keyof typeof jsToPGtypes]}[] IS NOT NULL`)
|
|
122
125
|
} else {
|
|
126
|
+
const correctType = t.type.replace("integer", "number")
|
|
123
127
|
checks.push(`jsonb_typeof(${valAsJson}) = ${asValue(correctType)} `)
|
|
124
128
|
}
|
|
125
129
|
} else {
|
|
126
|
-
checks.push("( " + getPGCheckConstraint({ escapedFieldName: valAsJson, schema: t.type }) + " )")
|
|
130
|
+
checks.push("( " + getPGCheckConstraint({ escapedFieldName: valAsJson, schema: t.type, nullable: !!t.nullable }, depth + 1) + " )")
|
|
127
131
|
}
|
|
128
132
|
}
|
|
133
|
+
const result = checks.join(" OR ")
|
|
134
|
+
if(!depth) return `COALESCE(${result}, false)`
|
|
135
|
+
return result
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const getSchemaChecks = (s: ValidationSchema) => getKeys(s).map(k => "(" + kChecks(k, s) + ")").join(" AND ")
|
|
129
139
|
|
|
130
|
-
|
|
140
|
+
let q = "";
|
|
141
|
+
if(isOneOfTypes(s)){
|
|
142
|
+
q = s.oneOfTypes.map(t => `(${getSchemaChecks(t)})` ).join(" OR ");
|
|
143
|
+
} else {
|
|
144
|
+
q = getSchemaChecks(s);
|
|
131
145
|
}
|
|
146
|
+
return nullable? ` ${escapedFieldName} IS NULL OR (${q})` : q
|
|
147
|
+
}
|
|
148
|
+
type ColOpts = { nullable?: boolean };
|
|
149
|
+
const isOneOfTypes = (s: ValidationSchema | OneOfTypes): s is OneOfTypes => {
|
|
132
150
|
|
|
133
|
-
|
|
151
|
+
if("oneOfTypes" in s){
|
|
152
|
+
if(!Array.isArray(s.oneOfTypes)){
|
|
153
|
+
throw "Expecting oneOfTypes to be an array of types";
|
|
154
|
+
}
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
return false;
|
|
134
158
|
}
|
|
135
159
|
|
|
136
160
|
export function getSchemaTSTypes(schema: ValidationSchema, leading = "", isOneOf = false): string {
|
|
137
161
|
const getFieldType = (def: FieldType) => {
|
|
162
|
+
const nullType = (def.nullable? `null | ` : "");
|
|
138
163
|
if("type" in def){
|
|
139
164
|
if(typeof def.type === "string"){
|
|
140
165
|
const correctType = def.type.replace("integer", "number")
|
|
141
|
-
return correctType
|
|
166
|
+
return nullType + correctType
|
|
142
167
|
} else {
|
|
143
|
-
return getSchemaTSTypes(def.type)
|
|
168
|
+
return nullType + getSchemaTSTypes(def.type)
|
|
144
169
|
}
|
|
145
170
|
} else if("oneOf" in def){
|
|
146
|
-
return def.oneOf.map(v => asValue(v)).join(" | ")
|
|
171
|
+
return nullType + def.oneOf.map(v => asValue(v)).join(" | ")
|
|
147
172
|
} else if("oneOfTypes" in def){
|
|
148
|
-
return def.oneOfTypes.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("")
|
|
173
|
+
return (def.nullable? `\n${leading} | null` : "") + def.oneOfTypes.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("")
|
|
149
174
|
} else throw "Unexpected getSchemaTSTypes"
|
|
150
175
|
}
|
|
151
176
|
|
|
@@ -153,10 +178,18 @@ export function getSchemaTSTypes(schema: ValidationSchema, leading = "", isOneOf
|
|
|
153
178
|
|
|
154
179
|
let res = `${leading}{ \n` + getKeys(schema).map(k => {
|
|
155
180
|
const def = schema[k];
|
|
156
|
-
return `${leading}${spacing}${k}${def.optional? "?" : ""}:
|
|
181
|
+
return `${leading}${spacing}${k}${def.optional? "?" : ""}: ` + getFieldType(def) + ";";
|
|
157
182
|
}).join("\n") + ` \n${leading}}${isOneOf? "" : ";"}`;
|
|
158
183
|
|
|
159
184
|
/** Keep single line */
|
|
160
185
|
if(isOneOf) res = res.split("\n").join("")
|
|
161
186
|
return res;
|
|
162
187
|
}
|
|
188
|
+
|
|
189
|
+
export function getJSONBSchemaTSTypes(schema: ValidationSchema | OneOfTypes, colOpts: ColOpts, leading = "", isOneOf = false): string {
|
|
190
|
+
if(isOneOfTypes(schema)){
|
|
191
|
+
return (colOpts.nullable? `\n${leading} | null` : "") + schema.oneOfTypes.map(s => `\n${leading} | ` + getSchemaTSTypes(s, "", true)).join("")
|
|
192
|
+
} else {
|
|
193
|
+
return (colOpts.nullable? `null | ` : "") + getSchemaTSTypes(schema, leading, isOneOf);
|
|
194
|
+
}
|
|
195
|
+
}
|
package/package.json
CHANGED
package/tests/client/PID.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
39851
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isomorphic_queries.d.ts","sourceRoot":"","sources":["isomorphic_queries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,iBAYzE;AACD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,oBAW7F;AAED,wBAA8B,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"isomorphic_queries.d.ts","sourceRoot":"","sources":["isomorphic_queries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,iBAYzE;AACD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,oBAW7F;AAED,wBAA8B,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,iBA4zB/F"}
|
|
@@ -549,18 +549,19 @@ async function isomorphic(db) {
|
|
|
549
549
|
*
|
|
550
550
|
tjson: {
|
|
551
551
|
json: { jsonbSchema: {
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
552
|
+
a: { type: "boolean" },
|
|
553
|
+
arr: { oneOf: ["1", "2", "3"] },
|
|
554
|
+
arr1: { oneOf: [1, 2, 3] },
|
|
555
|
+
arr2: { type: "integer[]" },
|
|
556
|
+
o: { oneOfTypes: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true },
|
|
556
557
|
}
|
|
557
558
|
}
|
|
558
559
|
},
|
|
559
560
|
*/
|
|
560
|
-
const json = { a: true, arr: "2" };
|
|
561
|
+
const json = { a: true, arr: "2", arr1: 3, arr2: [1], arrStr: ["1123.string"] };
|
|
561
562
|
const fo = await db.tjson.insert({ json }, { returning: "*" });
|
|
562
|
-
|
|
563
|
-
await db.tjson.insert({ json: { o: { o1: 2, o2: true }
|
|
563
|
+
// assert.deepStrictEqual(fo.json, json);
|
|
564
|
+
await db.tjson.insert({ json: { ...json, o: { o1: 2, o2: true } } });
|
|
564
565
|
try {
|
|
565
566
|
await db.tjson.insert({ json: { a: true, arr: "22" } });
|
|
566
567
|
throw "Should have failed";
|
|
@@ -631,19 +631,20 @@ export default async function isomorphic(db: Partial<DBHandlerServer> | Partial<
|
|
|
631
631
|
*
|
|
632
632
|
tjson: {
|
|
633
633
|
json: { jsonbSchema: {
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
634
|
+
a: { type: "boolean" },
|
|
635
|
+
arr: { oneOf: ["1", "2", "3"] },
|
|
636
|
+
arr1: { oneOf: [1, 2, 3] },
|
|
637
|
+
arr2: { type: "integer[]" },
|
|
638
|
+
o: { oneOfTypes: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true },
|
|
638
639
|
}
|
|
639
640
|
}
|
|
640
641
|
},
|
|
641
642
|
*/
|
|
642
643
|
|
|
643
|
-
const json = {a: true, arr: "2"}
|
|
644
|
+
const json = {a: true, arr: "2", arr1: 3, arr2: [1], arrStr: ["1123.string"] }
|
|
644
645
|
const fo = await db.tjson.insert({ json }, { returning: "*"});
|
|
645
|
-
assert.deepStrictEqual(fo.json, json);
|
|
646
|
-
await db.tjson.insert({ json: {o: { o1: 2, o2: true }
|
|
646
|
+
// assert.deepStrictEqual(fo.json, json);
|
|
647
|
+
await db.tjson.insert({ json: {...json, o: { o1: 2, o2: true } } })
|
|
647
648
|
try {
|
|
648
649
|
await db.tjson.insert({ json: { a: true, arr: "22"} });
|
|
649
650
|
throw "Should have failed"
|
|
@@ -336,14 +336,20 @@ export type DBSchemaGenerated = {
|
|
|
336
336
|
delete: true;
|
|
337
337
|
columns: {
|
|
338
338
|
json: {
|
|
339
|
-
a:
|
|
340
|
-
arr:
|
|
341
|
-
arr1:
|
|
342
|
-
arr2:
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
|
339
|
+
a: boolean;
|
|
340
|
+
arr: '1' | '2' | '3';
|
|
341
|
+
arr1: 1 | 2 | 3;
|
|
342
|
+
arr2: number[];
|
|
343
|
+
arrStr?: null | string[];
|
|
344
|
+
o?:
|
|
345
|
+
| null
|
|
346
|
+
| { o1: number; }
|
|
347
|
+
| { o2: boolean; };
|
|
346
348
|
};
|
|
349
|
+
jsonOneOf?:
|
|
350
|
+
| null
|
|
351
|
+
| { command: 'a'; }
|
|
352
|
+
| { command: 'b'; option: number[]; }
|
|
347
353
|
};
|
|
348
354
|
};
|
|
349
355
|
tr1: {
|
package/tests/server/index.js
CHANGED
|
@@ -72,7 +72,24 @@ function dd() {
|
|
|
72
72
|
arr: { oneOf: ["1", "2", "3"] },
|
|
73
73
|
arr1: { oneOf: [1, 2, 3] },
|
|
74
74
|
arr2: { type: "integer[]" },
|
|
75
|
-
|
|
75
|
+
arrStr: { type: "string[]", optional: true, nullable: true },
|
|
76
|
+
o: { oneOfTypes: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true, nullable: true },
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
jsonOneOf: { nullable: true, jsonbSchema: {
|
|
80
|
+
oneOfTypes: [
|
|
81
|
+
{ command: { oneOf: ["a"] } },
|
|
82
|
+
{
|
|
83
|
+
command: { oneOf: ["b"] },
|
|
84
|
+
option: { type: "integer[]" }
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
// a: { type: "boolean" },
|
|
88
|
+
// arr: { oneOf: ["1", "2", "3"] },
|
|
89
|
+
// arr1: { oneOf: [1, 2, 3] },
|
|
90
|
+
// arr2: { type: "integer[]" },
|
|
91
|
+
// arrStr: { type: "string[]", optional: true },
|
|
92
|
+
// o: { oneOfTypes: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true },
|
|
76
93
|
}
|
|
77
94
|
}
|
|
78
95
|
}
|
package/tests/server/index.ts
CHANGED
|
@@ -93,9 +93,26 @@ function dd(){
|
|
|
93
93
|
arr: { oneOf: ["1", "2", "3"] },
|
|
94
94
|
arr1: { oneOf: [1, 2, 3] },
|
|
95
95
|
arr2: { type: "integer[]" },
|
|
96
|
-
|
|
96
|
+
arrStr: { type: "string[]", optional: true, nullable: true },
|
|
97
|
+
o: { oneOfTypes: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true, nullable: true },
|
|
97
98
|
}
|
|
98
|
-
}
|
|
99
|
+
},
|
|
100
|
+
jsonOneOf: { nullable: true, jsonbSchema: {
|
|
101
|
+
oneOfTypes: [
|
|
102
|
+
{ command: { oneOf: ["a"] } },
|
|
103
|
+
{
|
|
104
|
+
command: { oneOf: ["b"] },
|
|
105
|
+
option: { type: "integer[]" }
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
// a: { type: "boolean" },
|
|
109
|
+
// arr: { oneOf: ["1", "2", "3"] },
|
|
110
|
+
// arr1: { oneOf: [1, 2, 3] },
|
|
111
|
+
// arr2: { type: "integer[]" },
|
|
112
|
+
// arrStr: { type: "string[]", optional: true },
|
|
113
|
+
// o: { oneOfTypes: [{ o1: { type: "integer" } }, { o2: { type: "boolean" } }], optional: true },
|
|
114
|
+
}
|
|
115
|
+
}
|
|
99
116
|
}
|
|
100
117
|
},
|
|
101
118
|
lookup_col1: {
|