prostgles-server 2.0.229 → 2.0.230

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.
@@ -1 +1 @@
1
- {"version":3,"file":"DBSchemaBuilder.d.ts","sourceRoot":"","sources":["../lib/DBSchemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAmC,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAiB,gBAAgB,EAAE,eAAe,EAAI,MAAM,iBAAiB,CAAC;AAG1G,eAAO,MAAM,WAAW,eAAgB,UAAU,KAAG,MAuBpD,CAAA;AAED,oBAAY,aAAa,CAAC,MAAM,GAAG,IAAI,IAAI,MAAM,SAAS,QAAQ,GAAE,CAChE;KACG,QAAQ,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GAClE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GACxC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;CAC5C,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,KAAK,CAAC,CACxC,GACD,eAAe,CAAC;AA+DlB,oBAAY,iBAAiB,CAAC,MAAM,GAAG,IAAI,IAAI,MAAM,SAAS,QAAQ,GAAE,CACpE,mBAAmB,GACnB;KACC,QAAQ,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,GAC9B,mBAAmB,GACnB,CACA,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GACtC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,GACpD,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CACxD;CACJ,CACF,GAAG,CACA,mBAAmB,GACnB,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,GAAG,mBAAmB,CAAC,CAC3E,CAAC"}
1
+ {"version":3,"file":"DBSchemaBuilder.d.ts","sourceRoot":"","sources":["../lib/DBSchemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAmC,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAiB,gBAAgB,EAAE,eAAe,EAAI,MAAM,iBAAiB,CAAC;AAI1G,eAAO,MAAM,WAAW,eAAgB,UAAU,KAAG,MA+BpD,CAAA;AAED,oBAAY,aAAa,CAAC,MAAM,GAAG,IAAI,IAAI,MAAM,SAAS,QAAQ,GAAE,CAChE;KACG,QAAQ,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GAClE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GACxC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;CAC5C,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,KAAK,CAAC,CACxC,GACD,eAAe,CAAC;AA+DlB,oBAAY,iBAAiB,CAAC,MAAM,GAAG,IAAI,IAAI,MAAM,SAAS,QAAQ,GAAE,CACpE,mBAAmB,GACnB;KACC,QAAQ,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,GAC9B,mBAAmB,GACnB,CACA,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GACtC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,GACpD,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CACxD;CACJ,CACF,GAAG,CACA,mBAAmB,GACnB,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,GAAG,mBAAmB,CAAC,CAC3E,CAAC"}
@@ -3,11 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDBSchema = void 0;
4
4
  const _1 = require(".");
5
5
  const DboBuilder_1 = require("./DboBuilder");
6
+ const validation_1 = require("./validation");
6
7
  const getDBSchema = (dboBuilder) => {
7
8
  let tables = [];
8
9
  /** Tables and columns are sorted to avoid infinite loops due to changing order */
9
10
  dboBuilder.tablesOrViews?.slice(0).sort((a, b) => a.name.localeCompare(b.name)).forEach(tov => {
10
11
  const cols = tov.columns.slice(0).sort((a, b) => a.name.localeCompare(b.name));
12
+ const getColType = (c) => {
13
+ let type = (0, DboBuilder_1.postgresToTsType)(c.udt_name);
14
+ const colConf = dboBuilder.prostgles.tableConfigurator?.getColumnConfig(tov.name, c.name);
15
+ if (colConf && "jsonSchema" in colConf) {
16
+ type = (0, validation_1.getSchemaTSTypes)(colConf.jsonSchema, " ");
17
+ }
18
+ return `${(0, DboBuilder_1.escapeTSNames)(c.name)}${c.is_nullable || c.has_default ? "?" : ""}: ${c.is_nullable ? "null | " : ""}${type}`;
19
+ };
11
20
  tables.push(`${(0, DboBuilder_1.escapeTSNames)(tov.name)}: {
12
21
  is_view: ${tov.is_view};
13
22
  select: ${tov.privileges.select};
@@ -15,7 +24,7 @@ const getDBSchema = (dboBuilder) => {
15
24
  update: ${tov.privileges.update};
16
25
  delete: ${tov.privileges.delete};
17
26
  columns: {${cols.map(c => `
18
- ${(0, DboBuilder_1.escapeTSNames)(c.name)}${c.is_nullable || c.has_default ? "?" : ""}: ${(0, DboBuilder_1.postgresToTsType)(c.udt_name)}${c.is_nullable ? " | null;" : ""}`).join("")}
27
+ ${getColType(c)}`).join(";")}
19
28
  };
20
29
  };\n `);
21
30
  });
@@ -1 +1 @@
1
- {"version":3,"file":"DBSchemaBuilder.js","sourceRoot":"","sources":["../lib/DBSchemaBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DBSchemaBuilder.js","sourceRoot":"","sources":["../lib/DBSchemaBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,6 +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
5
  declare type ColExtraInfo = {
5
6
  min?: string | number;
6
7
  max?: string | number;
@@ -61,6 +62,9 @@ declare type TextColumn = TextColDef & {
61
62
  */
62
63
  lowerCased?: boolean;
63
64
  };
65
+ declare type JSONBColumnDef = TextColDef & {
66
+ jsonSchema: ValidationSchema;
67
+ };
64
68
  /**
65
69
  * Allows referencing media to this table.
66
70
  * Requires this table to have a primary key AND a valid fileTable config
@@ -103,7 +107,7 @@ declare type NamedJoinColumn = {
103
107
  };
104
108
  declare type ColumnConfig<LANG_IDS = {
105
109
  en: 1;
106
- }> = NamedJoinColumn | MediaColumn | (BaseColumn<LANG_IDS> & (SQLDefColumn | ReferencedColumn | TextColumn));
110
+ }> = NamedJoinColumn | MediaColumn | (BaseColumn<LANG_IDS> & (SQLDefColumn | ReferencedColumn | TextColumn | JSONBColumnDef));
107
111
  declare type TableDefinition<LANG_IDS> = {
108
112
  columns?: {
109
113
  [column_name: string]: ColumnConfig<LANG_IDS>;
@@ -1 +1 @@
1
- {"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["../lib/TableConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["../lib/TableConfig.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ exports.parseI18N = void 0;
4
4
  const prostgles_types_1 = require("prostgles-types");
5
5
  const DboBuilder_1 = require("./DboBuilder");
6
6
  const PubSubManager_1 = require("./PubSubManager");
7
+ const validation_1 = require("./validation");
7
8
  const parseI18N = (params) => {
8
9
  const { config, lang, defaultLang, defaultValue } = params;
9
10
  if (config) {
@@ -160,13 +161,13 @@ class TableConfigurator {
160
161
  if ("columns" in tableConf) {
161
162
  const getColDef = (name, colConf) => {
162
163
  const colNameEsc = (0, prostgles_types_1.asName)(name);
163
- const getTextDef = (colConf) => {
164
+ const getColDef = (colConf, pgType) => {
164
165
  const { nullable, defaultValue } = colConf;
165
- return ` TEXT ${!nullable ? " NOT NULL " : ""} ${defaultValue ? ` DEFAULT ${(0, PubSubManager_1.asValue)(defaultValue)} ` : ""}`;
166
+ return `${pgType} ${!nullable ? " NOT NULL " : ""} ${defaultValue ? ` DEFAULT ${(0, PubSubManager_1.asValue)(defaultValue)} ` : ""}`;
166
167
  };
167
168
  if ("references" in colConf && colConf.references) {
168
169
  const { tableName: lookupTable, columnName: lookupCol = "id" } = colConf.references;
169
- return ` ${colNameEsc} ${getTextDef(colConf.references)} REFERENCES ${lookupTable} (${lookupCol}) `;
170
+ return ` ${colNameEsc} ${getColDef(colConf.references, "TEXT")} REFERENCES ${lookupTable} (${lookupCol}) `;
170
171
  }
171
172
  else if ("sqlDefinition" in colConf && colConf.sqlDefinition) {
172
173
  return ` ${colNameEsc} ${colConf.sqlDefinition} `;
@@ -182,7 +183,10 @@ class TableConfigurator {
182
183
  if (cArr.length) {
183
184
  checks = `CHECK (${cArr.join(" AND ")})`;
184
185
  }
185
- return ` ${colNameEsc} ${getTextDef(colConf)} ${checks}`;
186
+ return ` ${colNameEsc} ${getColDef(colConf, "TEXT")} ${checks}`;
187
+ }
188
+ else if ("jsonSchema" in colConf && colConf.jsonSchema) {
189
+ return ` ${colNameEsc} ${getColDef(colConf, "JSONB")} CHECK(${(0, validation_1.getPGCheckConstraint)({ schema: colConf.jsonSchema, escapedFieldName: colNameEsc })})`;
186
190
  }
187
191
  else {
188
192
  throw "Unknown column config: " + JSON.stringify(colConf);
@@ -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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"}
@@ -0,0 +1,50 @@
1
+ declare type FieldType = ({
2
+ type: "number" | "boolean" | "integer" | "string" | "number[]" | "boolean[]" | "integer[]" | "string[]" | ValidationSchema;
3
+ } | {
4
+ oneOf: readonly any[];
5
+ } | {
6
+ oneOfTypes: readonly ValidationSchema[];
7
+ }) & {
8
+ optional?: boolean;
9
+ nullable?: boolean;
10
+ };
11
+ declare type GetType<T extends FieldType> = T extends {
12
+ type: ValidationSchema;
13
+ } ? SchemaObject<T["type"]> : T extends {
14
+ type: "number";
15
+ } ? number : T extends {
16
+ type: "boolean";
17
+ } ? boolean : T extends {
18
+ type: "integer";
19
+ } ? number : T extends {
20
+ type: "string";
21
+ } ? string : T extends {
22
+ type: "number[]";
23
+ } ? number[] : T extends {
24
+ type: "boolean[]";
25
+ } ? boolean[] : T extends {
26
+ type: "integer[]";
27
+ } ? number[] : T extends {
28
+ type: "string[]";
29
+ } ? string[] : T extends {
30
+ oneOf: readonly any[];
31
+ } ? T["oneOf"][number] :
32
+ /** This needs fixing */
33
+ T extends {
34
+ oneOfTypes: readonly ValidationSchema[];
35
+ } ? SchemaObject<T["oneOfTypes"][number]> : any;
36
+ export declare type ValidationSchema = Record<string, FieldType>;
37
+ export declare type SchemaObject<S extends ValidationSchema> = ({
38
+ [K in keyof S as S[K]["optional"] extends true ? K : never]?: GetType<S[K]>;
39
+ } & {
40
+ [K in keyof S as S[K]["optional"] extends true ? never : K]: GetType<S[K]>;
41
+ });
42
+ export declare function validate<T>(obj: T, key: keyof T, validation: FieldType): boolean;
43
+ export declare function validateSchema<S extends ValidationSchema>(schema: S, obj: SchemaObject<S>, objName?: string, optional?: boolean): void;
44
+ export declare function getPGCheckConstraint(args: {
45
+ escapedFieldName: string;
46
+ schema: ValidationSchema;
47
+ }): string;
48
+ export declare function getSchemaTSTypes(schema: ValidationSchema, leading?: string, isOneOf?: boolean): string;
49
+ export {};
50
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../lib/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSchemaTSTypes = exports.getPGCheckConstraint = exports.validateSchema = exports.validate = void 0;
4
+ const prostgles_types_1 = require("prostgles-types");
5
+ const PubSubManager_1 = require("./PubSubManager");
6
+ /** tests */
7
+ const s = {
8
+ a: { type: "boolean" },
9
+ c: { type: { c1: { type: "string" } } },
10
+ o: { oneOfTypes: [
11
+ { z: { type: "integer" } },
12
+ { z1: { type: "integer" } }
13
+ ] }
14
+ };
15
+ const ss = {
16
+ a: true,
17
+ c: {
18
+ c1: ""
19
+ },
20
+ o: { z: 1, z1: 23 }
21
+ };
22
+ function validate(obj, key, validation) {
23
+ let err = `The provided value for ${JSON.stringify(key)} is of invalid type. Expecting `;
24
+ const val = obj[key];
25
+ if ("type" in validation && validation.type) {
26
+ if (typeof validation.type !== "string") {
27
+ (0, prostgles_types_1.getKeys)(validation.type).forEach(subKey => {
28
+ validate(val, subKey, validation.type[subKey]);
29
+ });
30
+ }
31
+ err += validation.type;
32
+ if (validation.type === "boolean" && typeof val !== validation.type)
33
+ throw new Error(err);
34
+ if (validation.type === "string" && typeof val !== validation.type)
35
+ throw new Error(err);
36
+ if (validation.type === "number" && !Number.isFinite(val))
37
+ throw new Error(err);
38
+ if (validation.type === "integer" && !Number.isInteger(val))
39
+ throw new Error(err);
40
+ }
41
+ else if ("oneOf" in validation && validation.oneOf) {
42
+ err += `on of: ${validation.oneOf}`;
43
+ if (!validation.oneOf.includes(val))
44
+ throw new Error(err);
45
+ }
46
+ return true;
47
+ }
48
+ exports.validate = validate;
49
+ function validateSchema(schema, obj, objName, optional = false) {
50
+ if ((!schema || (0, prostgles_types_1.isEmpty)(schema)) && !optional)
51
+ throw new Error(`Expecting ${objName} to be defined`);
52
+ (0, prostgles_types_1.getKeys)(schema).forEach(k => validate(obj, k, schema[k]));
53
+ }
54
+ exports.validateSchema = validateSchema;
55
+ function getPGCheckConstraint(args) {
56
+ const { schema: s, escapedFieldName } = args;
57
+ const jsToPGtypes = {
58
+ "number": "::NUMERIC",
59
+ "boolean": "::BOOLEAN",
60
+ "string": "" // already a string
61
+ };
62
+ const kChecks = (k) => {
63
+ const t = s[k];
64
+ const checks = [];
65
+ const valAsJson = `${escapedFieldName}->${(0, PubSubManager_1.asValue)(k)}`;
66
+ const valAsText = `${escapedFieldName}->>${(0, PubSubManager_1.asValue)(k)}`;
67
+ if (t.nullable)
68
+ checks.push(`${valAsJson} IS NULL`);
69
+ if (t.optional)
70
+ checks.push(`${escapedFieldName} ? ${(0, PubSubManager_1.asValue)(k)} = FALSE`);
71
+ if ("oneOfTypes" in t) {
72
+ checks.push(`(${t.oneOfTypes.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType })).join(" OR ")})`);
73
+ }
74
+ else if ("oneOf" in t) {
75
+ if (!t.oneOf.length || t.oneOf.some(v => v === undefined || !["number", "boolean", "string", null].includes(typeof v))) {
76
+ throw new Error(`Invalid ValidationSchema for property: ${k} of field ${escapedFieldName}: oneOf cannot be empty AND can only contain: numbers, text, boolean, null`);
77
+ }
78
+ const oneOfHasNull = t.oneOf.includes(null);
79
+ if (oneOfHasNull)
80
+ checks.push(`${valAsText} IS NULL`);
81
+ const oneOf = t.oneOf.filter(o => o !== null);
82
+ oneOf.forEach(o => {
83
+ (0, PubSubManager_1.asValue)(o.toString());
84
+ checks.push(`${valAsText}${jsToPGtypes[typeof o]} = ${(0, PubSubManager_1.asValue)(o)}`);
85
+ });
86
+ }
87
+ else if ("type" in t) {
88
+ if (typeof t.type === "string") {
89
+ const correctType = t.type.replace("integer", "number");
90
+ if (t.type.endsWith("[]")) {
91
+ /** Must add custom functions to type check each array element */
92
+ checks.push(`
93
+ jsonb_typeof(${valAsJson}) = 'array' AND
94
+ ( jsonb_array_length(${valAsJson}) = 0 OR jsonb_typeof(jsonb_array_element(${valAsJson}, 1)) = ${(0, PubSubManager_1.asValue)(correctType.slice(0, -2))} )`);
95
+ }
96
+ else {
97
+ checks.push(`jsonb_typeof(${valAsJson}) = ${(0, PubSubManager_1.asValue)(correctType)} `);
98
+ }
99
+ }
100
+ else {
101
+ checks.push("( " + getPGCheckConstraint({ escapedFieldName: valAsJson, schema: t.type }) + " )");
102
+ }
103
+ }
104
+ return checks.join(" OR ");
105
+ };
106
+ return (0, prostgles_types_1.getKeys)(s).map(k => "(" + kChecks(k) + ")").join(" AND ");
107
+ }
108
+ exports.getPGCheckConstraint = getPGCheckConstraint;
109
+ function getSchemaTSTypes(schema, leading = "", isOneOf = false) {
110
+ const getFieldType = (def) => {
111
+ if ("type" in def) {
112
+ if (typeof def.type === "string") {
113
+ const correctType = def.type.replace("integer", "number");
114
+ return correctType;
115
+ }
116
+ else {
117
+ return getSchemaTSTypes(def.type);
118
+ }
119
+ }
120
+ else if ("oneOf" in def) {
121
+ return def.oneOf.map(v => v).join(" | ");
122
+ }
123
+ else if ("oneOfTypes" in def) {
124
+ return def.oneOfTypes.map(v => getSchemaTSTypes(v, leading, true)).join(" | ");
125
+ }
126
+ else
127
+ throw "Unexpected getSchemaTSTypes";
128
+ };
129
+ return `${leading}{ \n` + (0, prostgles_types_1.getKeys)(schema).map(k => {
130
+ const def = schema[k];
131
+ return `${leading} ${k}${def.optional ? "?" : ""}: ${def.nullable ? " null | " : ""} ` + getFieldType(def);
132
+ }).join(";\n") + ` \n${leading}} ${isOneOf ? "" : ";"}`;
133
+ }
134
+ exports.getSchemaTSTypes = getSchemaTSTypes;
135
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../lib/validation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DBSchemaBuilder.d.ts","sourceRoot":"","sources":["DBSchemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAmC,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAiB,gBAAgB,EAAE,eAAe,EAAI,MAAM,iBAAiB,CAAC;AAG1G,eAAO,MAAM,WAAW,eAAgB,UAAU,KAAG,MAuBpD,CAAA;AAED,oBAAY,aAAa,CAAC,MAAM,GAAG,IAAI,IAAI,MAAM,SAAS,QAAQ,GAAE,CAChE;KACG,QAAQ,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GAClE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GACxC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;CAC5C,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,KAAK,CAAC,CACxC,GACD,eAAe,CAAC;AA+DlB,oBAAY,iBAAiB,CAAC,MAAM,GAAG,IAAI,IAAI,MAAM,SAAS,QAAQ,GAAE,CACpE,mBAAmB,GACnB;KACC,QAAQ,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,GAC9B,mBAAmB,GACnB,CACA,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GACtC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,GACpD,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CACxD;CACJ,CACF,GAAG,CACA,mBAAmB,GACnB,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,GAAG,mBAAmB,CAAC,CAC3E,CAAC"}
1
+ {"version":3,"file":"DBSchemaBuilder.d.ts","sourceRoot":"","sources":["DBSchemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAmC,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAiB,gBAAgB,EAAE,eAAe,EAAI,MAAM,iBAAiB,CAAC;AAI1G,eAAO,MAAM,WAAW,eAAgB,UAAU,KAAG,MA+BpD,CAAA;AAED,oBAAY,aAAa,CAAC,MAAM,GAAG,IAAI,IAAI,MAAM,SAAS,QAAQ,GAAE,CAChE;KACG,QAAQ,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GAClE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GACxC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;CAC5C,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,KAAK,CAAC,CACxC,GACD,eAAe,CAAC;AA+DlB,oBAAY,iBAAiB,CAAC,MAAM,GAAG,IAAI,IAAI,MAAM,SAAS,QAAQ,GAAE,CACpE,mBAAmB,GACnB;KACC,QAAQ,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,GAC9B,mBAAmB,GACnB,CACA,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GACtC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,GACpD,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CACxD;CACJ,CACF,GAAG,CACA,mBAAmB,GACnB,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,GAAG,mBAAmB,CAAC,CAC3E,CAAC"}
@@ -6,11 +6,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getDBSchema = void 0;
7
7
  const _1 = __importDefault(require("."));
8
8
  const DboBuilder_1 = require("./DboBuilder");
9
+ const validation_1 = require("./validation");
9
10
  const getDBSchema = (dboBuilder) => {
10
11
  let tables = [];
11
12
  /** Tables and columns are sorted to avoid infinite loops due to changing order */
12
13
  dboBuilder.tablesOrViews?.slice(0).sort((a, b) => a.name.localeCompare(b.name)).forEach(tov => {
13
14
  const cols = tov.columns.slice(0).sort((a, b) => a.name.localeCompare(b.name));
15
+ const getColType = (c) => {
16
+ let type = (0, DboBuilder_1.postgresToTsType)(c.udt_name);
17
+ const colConf = dboBuilder.prostgles.tableConfigurator?.getColumnConfig(tov.name, c.name);
18
+ if (colConf && "jsonSchema" in colConf) {
19
+ type = (0, validation_1.getSchemaTSTypes)(colConf.jsonSchema, " ");
20
+ }
21
+ return `${(0, DboBuilder_1.escapeTSNames)(c.name)}${c.is_nullable || c.has_default ? "?" : ""}: ${c.is_nullable ? "null | " : ""}${type}`;
22
+ };
14
23
  tables.push(`${(0, DboBuilder_1.escapeTSNames)(tov.name)}: {
15
24
  is_view: ${tov.is_view};
16
25
  select: ${tov.privileges.select};
@@ -18,7 +27,7 @@ const getDBSchema = (dboBuilder) => {
18
27
  update: ${tov.privileges.update};
19
28
  delete: ${tov.privileges.delete};
20
29
  columns: {${cols.map(c => `
21
- ${(0, DboBuilder_1.escapeTSNames)(c.name)}${c.is_nullable || c.has_default ? "?" : ""}: ${(0, DboBuilder_1.postgresToTsType)(c.udt_name)}${c.is_nullable ? " | null;" : ""}`).join("")}
30
+ ${getColType(c)}`).join(";")}
22
31
  };
23
32
  };\n `);
24
33
  });
@@ -3,6 +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 { getSchemaTSTypes } from "./validation";
6
7
 
7
8
 
8
9
  export const getDBSchema = (dboBuilder: DboBuilder): string => {
@@ -12,6 +13,14 @@ export const getDBSchema = (dboBuilder: DboBuilder): string => {
12
13
  /** Tables and columns are sorted to avoid infinite loops due to changing order */
13
14
  dboBuilder.tablesOrViews?.slice(0).sort((a, b) => a.name.localeCompare(b.name)).forEach(tov => {
14
15
  const cols = tov.columns.slice(0).sort((a, b) => a.name.localeCompare(b.name));
16
+ const getColType = (c: typeof cols[number]) => {
17
+ let type: string = postgresToTsType(c.udt_name)
18
+ const colConf = dboBuilder.prostgles.tableConfigurator?.getColumnConfig(tov.name, c.name);
19
+ if(colConf && "jsonSchema" in colConf){
20
+ type = getSchemaTSTypes(colConf.jsonSchema, " ");
21
+ }
22
+ return `${escapeTSNames(c.name)}${c.is_nullable || c.has_default? "?" : ""}: ${c.is_nullable? "null | " : ""}${type}`
23
+ }
15
24
  tables.push(`${escapeTSNames(tov.name)}: {
16
25
  is_view: ${tov.is_view};
17
26
  select: ${tov.privileges.select};
@@ -19,7 +28,7 @@ tables.push(`${escapeTSNames(tov.name)}: {
19
28
  update: ${tov.privileges.update};
20
29
  delete: ${tov.privileges.delete};
21
30
  columns: {${cols.map(c => `
22
- ${escapeTSNames(c.name)}${c.is_nullable || c.has_default? "?" : ""}: ${postgresToTsType(c.udt_name)}${c.is_nullable? " | null;" : ""}`).join("")}
31
+ ${getColType(c)}`).join(";")}
23
32
  };
24
33
  };\n `)
25
34
  })
@@ -1,6 +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
5
  declare type ColExtraInfo = {
5
6
  min?: string | number;
6
7
  max?: string | number;
@@ -61,6 +62,9 @@ declare type TextColumn = TextColDef & {
61
62
  */
62
63
  lowerCased?: boolean;
63
64
  };
65
+ declare type JSONBColumnDef = TextColDef & {
66
+ jsonSchema: ValidationSchema;
67
+ };
64
68
  /**
65
69
  * Allows referencing media to this table.
66
70
  * Requires this table to have a primary key AND a valid fileTable config
@@ -103,7 +107,7 @@ declare type NamedJoinColumn = {
103
107
  };
104
108
  declare type ColumnConfig<LANG_IDS = {
105
109
  en: 1;
106
- }> = NamedJoinColumn | MediaColumn | (BaseColumn<LANG_IDS> & (SQLDefColumn | ReferencedColumn | TextColumn));
110
+ }> = NamedJoinColumn | MediaColumn | (BaseColumn<LANG_IDS> & (SQLDefColumn | ReferencedColumn | TextColumn | JSONBColumnDef));
107
111
  declare type TableDefinition<LANG_IDS> = {
108
112
  columns?: {
109
113
  [column_name: string]: ColumnConfig<LANG_IDS>;
@@ -1 +1 @@
1
- {"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["TableConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["TableConfig.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ exports.parseI18N = void 0;
4
4
  const prostgles_types_1 = require("prostgles-types");
5
5
  const DboBuilder_1 = require("./DboBuilder");
6
6
  const PubSubManager_1 = require("./PubSubManager");
7
+ const validation_1 = require("./validation");
7
8
  const parseI18N = (params) => {
8
9
  const { config, lang, defaultLang, defaultValue } = params;
9
10
  if (config) {
@@ -160,13 +161,13 @@ class TableConfigurator {
160
161
  if ("columns" in tableConf) {
161
162
  const getColDef = (name, colConf) => {
162
163
  const colNameEsc = (0, prostgles_types_1.asName)(name);
163
- const getTextDef = (colConf) => {
164
+ const getColDef = (colConf, pgType) => {
164
165
  const { nullable, defaultValue } = colConf;
165
- return ` TEXT ${!nullable ? " NOT NULL " : ""} ${defaultValue ? ` DEFAULT ${(0, PubSubManager_1.asValue)(defaultValue)} ` : ""}`;
166
+ return `${pgType} ${!nullable ? " NOT NULL " : ""} ${defaultValue ? ` DEFAULT ${(0, PubSubManager_1.asValue)(defaultValue)} ` : ""}`;
166
167
  };
167
168
  if ("references" in colConf && colConf.references) {
168
169
  const { tableName: lookupTable, columnName: lookupCol = "id" } = colConf.references;
169
- return ` ${colNameEsc} ${getTextDef(colConf.references)} REFERENCES ${lookupTable} (${lookupCol}) `;
170
+ return ` ${colNameEsc} ${getColDef(colConf.references, "TEXT")} REFERENCES ${lookupTable} (${lookupCol}) `;
170
171
  }
171
172
  else if ("sqlDefinition" in colConf && colConf.sqlDefinition) {
172
173
  return ` ${colNameEsc} ${colConf.sqlDefinition} `;
@@ -182,7 +183,10 @@ class TableConfigurator {
182
183
  if (cArr.length) {
183
184
  checks = `CHECK (${cArr.join(" AND ")})`;
184
185
  }
185
- return ` ${colNameEsc} ${getTextDef(colConf)} ${checks}`;
186
+ return ` ${colNameEsc} ${getColDef(colConf, "TEXT")} ${checks}`;
187
+ }
188
+ else if ("jsonSchema" in colConf && colConf.jsonSchema) {
189
+ return ` ${colNameEsc} ${getColDef(colConf, "JSONB")} CHECK(${(0, validation_1.getPGCheckConstraint)({ schema: colConf.jsonSchema, escapedFieldName: colNameEsc })})`;
186
190
  }
187
191
  else {
188
192
  throw "Unknown column config: " + JSON.stringify(colConf);
@@ -2,6 +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
6
 
6
7
  type ColExtraInfo = {
7
8
  min?: string | number;
@@ -85,6 +86,10 @@ type TextColumn = TextColDef & {
85
86
  lowerCased?: boolean;
86
87
  }
87
88
 
89
+ type JSONBColumnDef = TextColDef & {
90
+ jsonSchema: ValidationSchema;
91
+ }
92
+
88
93
  /**
89
94
  * Allows referencing media to this table.
90
95
  * Requires this table to have a primary key AND a valid fileTable config
@@ -138,7 +143,7 @@ type NamedJoinColumn = {
138
143
  joinDef: JoinDef[];
139
144
  }
140
145
 
141
- type ColumnConfig<LANG_IDS = { en: 1 }> = NamedJoinColumn | MediaColumn | (BaseColumn<LANG_IDS> & (SQLDefColumn | ReferencedColumn | TextColumn))
146
+ type ColumnConfig<LANG_IDS = { en: 1 }> = NamedJoinColumn | MediaColumn | (BaseColumn<LANG_IDS> & (SQLDefColumn | ReferencedColumn | TextColumn | JSONBColumnDef))
142
147
 
143
148
  type TableDefinition<LANG_IDS> = {
144
149
  columns?: {
@@ -356,14 +361,14 @@ export default class TableConfigurator<LANG_IDS = { en: 1 }> {
356
361
  if ("columns" in tableConf) {
357
362
  const getColDef = (name: string, colConf: ColumnConfig): string => {
358
363
  const colNameEsc = asName(name);
359
- const getTextDef = (colConf: TextColDef) => {
364
+ const getColDef = (colConf: TextColDef, pgType: "TEXT" | "JSONB") => {
360
365
  const { nullable, defaultValue } = colConf;
361
- return ` TEXT ${!nullable ? " NOT NULL " : ""} ${defaultValue ? ` DEFAULT ${asValue(defaultValue)} ` : ""}`
366
+ return `${pgType} ${!nullable ? " NOT NULL " : ""} ${defaultValue ? ` DEFAULT ${asValue(defaultValue)} ` : ""}`
362
367
  }
363
368
  if ("references" in colConf && colConf.references) {
364
369
 
365
370
  const { tableName: lookupTable, columnName: lookupCol = "id" } = colConf.references;
366
- return ` ${colNameEsc} ${getTextDef(colConf.references)} REFERENCES ${lookupTable} (${lookupCol}) `;
371
+ return ` ${colNameEsc} ${getColDef(colConf.references, "TEXT")} REFERENCES ${lookupTable} (${lookupCol}) `;
367
372
 
368
373
  } else if ("sqlDefinition" in colConf && colConf.sqlDefinition) {
369
374
 
@@ -380,7 +385,12 @@ export default class TableConfigurator<LANG_IDS = { en: 1 }> {
380
385
  if (cArr.length) {
381
386
  checks = `CHECK (${cArr.join(" AND ")})`
382
387
  }
383
- return ` ${colNameEsc} ${getTextDef(colConf)} ${checks}`;
388
+ return ` ${colNameEsc} ${getColDef(colConf, "TEXT")} ${checks}`;
389
+
390
+ } else if ("jsonSchema" in colConf && colConf.jsonSchema) {
391
+
392
+ return ` ${colNameEsc} ${getColDef(colConf, "JSONB")} CHECK(${getPGCheckConstraint({ schema: colConf.jsonSchema, escapedFieldName: colNameEsc })})`;
393
+
384
394
  } else {
385
395
  throw "Unknown column config: " + JSON.stringify(colConf);
386
396
  }