prostgles-server 2.0.332 → 2.0.334

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.
@@ -205,11 +205,11 @@ class TableConfigurator {
205
205
  const checkStatement = (0, validation_1.getPGCheckConstraint)({ schema: colConf.jsonbSchema, escapedFieldName: colNameEsc, nullable: !!colConf.nullable }, 0);
206
206
  return ` ${colNameEsc} ${getColTypeDef(colConf, "JSONB")} CHECK(${checkStatement})`;
207
207
  }
208
- else if ("oneOf" in colConf) {
209
- if (!colConf.oneOf?.length)
210
- throw new Error("colConf.oneOf Must not be empty");
211
- const type = colConf.oneOf.every(v => Number.isFinite(v)) ? "NUMERIC" : "TEXT";
212
- const checks = colConf.oneOf.map(v => `${colNameEsc} = ${(0, PubSubManager_1.asValue)(v)}`).join(" OR ");
208
+ else if ("enum" in colConf) {
209
+ if (!colConf.enum?.length)
210
+ throw new Error("colConf.enum Must not be empty");
211
+ const type = colConf.enum.every(v => Number.isFinite(v)) ? "NUMERIC" : "TEXT";
212
+ const checks = colConf.enum.map(v => `${colNameEsc} = ${(0, PubSubManager_1.asValue)(v)}`).join(" OR ");
213
213
  return ` ${colNameEsc} ${type} ${colConf.nullable ? "" : "NOT NULL"} ${"defaultValue" in colConf ? ` DEFAULT ${(0, PubSubManager_1.asValue)(colConf.defaultValue)}` : ""} CHECK(${checks})`;
214
214
  }
215
215
  else {
@@ -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 { getJSONBSchemaAsJSONSchema, getPGCheckConstraint, OneOfTypes, ValidationSchema } from "./validation";
5
+ import { getJSONBSchemaAsJSONSchema, getPGCheckConstraint, OneOf, ValidationSchema } from "./validation";
6
6
 
7
7
  type ColExtraInfo = {
8
8
  min?: string | number;
@@ -99,12 +99,12 @@ type SQLDefColumn = {
99
99
  sqlDefinition?: string;
100
100
  }
101
101
 
102
- type TextColDef = {
103
- defaultValue?: string;
102
+ type BaseColumnTypes = {
103
+ defaultValue?: any;
104
104
  nullable?: boolean;
105
105
  }
106
106
 
107
- type TextColumn = TextColDef & {
107
+ type TextColumn = BaseColumnTypes & {
108
108
  isText: true;
109
109
  /**
110
110
  * Value will be trimmed before update/insert
@@ -117,8 +117,8 @@ type TextColumn = TextColDef & {
117
117
  lowerCased?: boolean;
118
118
  }
119
119
 
120
- export type JSONBColumnDef = TextColDef & {
121
- jsonbSchema: ValidationSchema | Omit<OneOfTypes, "optional">;
120
+ export type JSONBColumnDef = BaseColumnTypes & {
121
+ jsonbSchema: ValidationSchema | Omit<OneOf, "optional">;
122
122
 
123
123
  /**
124
124
  * If the new schema CHECK fails old rows the update old rows using this function
@@ -153,7 +153,7 @@ type ReferencedColumn = {
153
153
  /**
154
154
  * Will create a lookup table that this column will reference
155
155
  */
156
- references?: TextColDef & {
156
+ references?: BaseColumnTypes & {
157
157
 
158
158
 
159
159
  tableName: string;
@@ -179,13 +179,23 @@ type NamedJoinColumn = {
179
179
  joinDef: JoinDef[];
180
180
  }
181
181
 
182
- type OneOf<T extends string | number = any> = {
183
- oneOf: T[];
182
+ type Enum<T extends string | number = any> = {
183
+ enum: T[];
184
184
  nullable?: boolean;
185
185
  defaultValue?: T;
186
186
  };
187
187
 
188
- export type ColumnConfig<LANG_IDS = { en: 1 }> = string | StrictUnion<NamedJoinColumn | MediaColumn | (BaseColumn<LANG_IDS> & (SQLDefColumn | ReferencedColumn | TextColumn | JSONBColumnDef | OneOf))>
188
+ export type ColumnConfig<LANG_IDS = { en: 1 }> = string | StrictUnion<NamedJoinColumn | MediaColumn | (BaseColumn<LANG_IDS> & (SQLDefColumn | ReferencedColumn | TextColumn | JSONBColumnDef | Enum))>;
189
+
190
+ export type ColumnConfigs<LANG_IDS = { en: 1 }> = {
191
+ sql: string | BaseColumn<LANG_IDS> & SQLDefColumn;
192
+ join: BaseColumn<LANG_IDS> & NamedJoinColumn;
193
+ media: BaseColumn<LANG_IDS> & MediaColumn;
194
+ referenced: BaseColumn<LANG_IDS> & ReferencedColumn;
195
+ text: BaseColumn<LANG_IDS> & TextColumn;
196
+ jsonb: BaseColumn<LANG_IDS> & JSONBColumnDef;
197
+ enum: BaseColumn<LANG_IDS> & Enum;
198
+ }
189
199
 
190
200
  type UnionKeys<T> = T extends T ? keyof T : never;
191
201
  type StrictUnionHelper<T, TAll> = T extends any ? T & Partial<Record<Exclude<UnionKeys<TAll>, keyof T>, never>> : never;
@@ -416,7 +426,7 @@ export default class TableConfigurator<LANG_IDS = { en: 1 }> {
416
426
  if ("columns" in tableConf) {
417
427
  const getColDef = (name: string, colConf: ColumnConfig): string => {
418
428
  const colNameEsc = asName(name);
419
- const getColTypeDef = (colConf: TextColDef, pgType: "TEXT" | "JSONB") => {
429
+ const getColTypeDef = (colConf: BaseColumnTypes, pgType: "TEXT" | "JSONB") => {
420
430
  const { nullable, defaultValue } = colConf;
421
431
  return `${pgType} ${!nullable ? " NOT NULL " : ""} ${defaultValue ? ` DEFAULT ${asValue(defaultValue)} ` : ""}`
422
432
  }
@@ -458,10 +468,10 @@ export default class TableConfigurator<LANG_IDS = { en: 1 }> {
458
468
  const checkStatement = getPGCheckConstraint({ schema: colConf.jsonbSchema, escapedFieldName: colNameEsc, nullable: !!colConf.nullable }, 0)
459
469
  return ` ${colNameEsc} ${getColTypeDef(colConf, "JSONB")} CHECK(${checkStatement})`;
460
470
 
461
- } else if("oneOf" in colConf) {
462
- if(!colConf.oneOf?.length) throw new Error("colConf.oneOf Must not be empty");
463
- const type = colConf.oneOf.every(v => Number.isFinite(v))? "NUMERIC" : "TEXT";
464
- const checks = colConf.oneOf.map(v => `${colNameEsc} = ${asValue(v)}`).join(" OR ");
471
+ } else if("enum" in colConf) {
472
+ if(!colConf.enum?.length) throw new Error("colConf.enum Must not be empty");
473
+ const type = colConf.enum.every(v => Number.isFinite(v))? "NUMERIC" : "TEXT";
474
+ const checks = colConf.enum.map(v => `${colNameEsc} = ${asValue(v)}`).join(" OR ");
465
475
  return ` ${colNameEsc} ${type} ${colConf.nullable? "" : "NOT NULL"} ${"defaultValue" in colConf? ` DEFAULT ${asValue(colConf.defaultValue)}` : ""} CHECK(${checks})`;
466
476
 
467
477
  } else {
@@ -9,12 +9,12 @@ declare type BaseOptions = {
9
9
  declare type SimpleType = BaseOptions & ({
10
10
  type: "number" | "boolean" | "integer" | "string" | "any" | "number[]" | "boolean[]" | "integer[]" | "string[]" | "any[]" | ValidationSchema;
11
11
  } | {
12
- oneOf: readonly any[];
12
+ enum: readonly any[];
13
13
  });
14
- export declare type OneOfTypes = BaseOptions & {
15
- oneOfTypes: readonly ValidationSchema[];
14
+ export declare type OneOf = BaseOptions & {
15
+ oneOf: readonly ValidationSchema[];
16
16
  };
17
- declare type FieldType = SimpleType | OneOfTypes;
17
+ declare type FieldType = SimpleType | OneOf;
18
18
  declare type GetType<T extends FieldType> = T extends {
19
19
  type: ValidationSchema;
20
20
  } ? SchemaObject<T["type"]> : T extends {
@@ -38,12 +38,12 @@ declare type GetType<T extends FieldType> = T extends {
38
38
  } ? string[] : T extends {
39
39
  type: "any[]";
40
40
  } ? any[] : T extends {
41
- oneOf: readonly any[];
42
- } ? T["oneOf"][number] :
41
+ enum: readonly any[];
42
+ } ? T["enum"][number] :
43
43
  /** This needs fixing */
44
44
  T extends {
45
- oneOfTypes: readonly ValidationSchema[];
46
- } ? SchemaObject<T["oneOfTypes"][number]> : any;
45
+ oneOf: readonly ValidationSchema[];
46
+ } ? SchemaObject<T["oneOf"][number]> : any;
47
47
  export declare type ValidationSchema = Record<string, FieldType>;
48
48
  export declare type SchemaObject<S extends ValidationSchema> = ({
49
49
  [K in keyof S as S[K]["optional"] extends true ? K : never]?: GetType<S[K]>;
@@ -54,7 +54,7 @@ export declare function validate<T>(obj: T, key: keyof T, validation: FieldType)
54
54
  export declare function validateSchema<S extends ValidationSchema>(schema: S, obj: SchemaObject<S>, objName?: string, optional?: boolean): void;
55
55
  export declare function getPGCheckConstraint(args: {
56
56
  escapedFieldName: string;
57
- schema: ValidationSchema | OneOfTypes;
57
+ schema: ValidationSchema | OneOf;
58
58
  nullable: boolean;
59
59
  isRootQuery?: boolean;
60
60
  optional?: boolean;
@@ -63,7 +63,7 @@ declare type ColOpts = {
63
63
  nullable?: boolean;
64
64
  };
65
65
  export declare function getSchemaTSTypes(schema: ValidationSchema, leading?: string, isOneOf?: boolean): string;
66
- export declare function getJSONBSchemaTSTypes(schema: ValidationSchema | OneOfTypes, colOpts: ColOpts, leading?: string, isOneOf?: boolean): string;
66
+ export declare function getJSONBSchemaTSTypes(schema: ValidationSchema | OneOf, colOpts: ColOpts, leading?: string, isOneOf?: boolean): string;
67
67
  export declare function getJSONBSchemaAsJSONSchema(tableName: string, colName: string, columnConfig: BaseColumn<{
68
68
  en: 1;
69
69
  }> & JSONBColumnDef): AnyObject;
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["validation.ts"],"names":[],"mappings":"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"}
package/lib/validation.js CHANGED
@@ -7,10 +7,12 @@ const PubSubManager_1 = require("./PubSubManager");
7
7
  const s = {
8
8
  a: { type: "boolean" },
9
9
  c: { type: { c1: { type: "string" } } },
10
- o: { oneOfTypes: [
10
+ o: {
11
+ oneOf: [
11
12
  { z: { type: "integer" } },
12
13
  { z1: { type: "integer" } }
13
- ] }
14
+ ]
15
+ }
14
16
  };
15
17
  const ss = {
16
18
  a: true,
@@ -38,9 +40,9 @@ function validate(obj, key, validation) {
38
40
  if (validation.type === "integer" && !Number.isInteger(val))
39
41
  throw new Error(err);
40
42
  }
41
- else if ("oneOf" in validation && validation.oneOf) {
42
- err += `on of: ${validation.oneOf}`;
43
- if (!validation.oneOf.includes(val))
43
+ else if ("enum" in validation && validation.enum) {
44
+ err += `on of: ${validation.enum}`;
45
+ if (!validation.enum.includes(val))
44
46
  throw new Error(err);
45
47
  }
46
48
  return true;
@@ -70,18 +72,18 @@ function getPGCheckConstraint(args, depth) {
70
72
  checks.push(`${valAsJson} IS NULL`);
71
73
  if (t.optional)
72
74
  checks.push(`${escapedFieldName} ? ${(0, PubSubManager_1.asValue)(k)} = FALSE`);
73
- if ("oneOfTypes" in t) {
74
- checks.push(`(${t.oneOfTypes.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType, nullable, optional: t.optional }, depth + 1)).join(" OR ")})`);
75
+ if ("oneOf" in t) {
76
+ checks.push(`(${t.oneOf.map(subType => getPGCheckConstraint({ escapedFieldName: valAsJson, schema: subType, nullable, optional: t.optional }, depth + 1)).join(" OR ")})`);
75
77
  }
76
- else if ("oneOf" in t) {
77
- if (!t.oneOf.length || t.oneOf.some(v => v === undefined || !["number", "boolean", "string", null].includes(typeof v))) {
78
- throw new Error(`Invalid ValidationSchema for property: ${k} of field ${escapedFieldName}: oneOf cannot be empty AND can only contain: numbers, text, boolean, null`);
78
+ else if ("enum" in t) {
79
+ if (!t.enum.length || t.enum.some(v => v === undefined || !["number", "boolean", "string", null].includes(typeof v))) {
80
+ throw new Error(`Invalid ValidationSchema for property: ${k} of field ${escapedFieldName}: enum cannot be empty AND can only contain: numbers, text, boolean, null`);
79
81
  }
80
- const oneOfHasNull = t.oneOf.includes(null);
82
+ const oneOfHasNull = t.enum.includes(null);
81
83
  if (oneOfHasNull)
82
84
  checks.push(`${valAsText} IS NULL`);
83
- const oneOf = t.oneOf.filter(o => o !== null);
84
- oneOf.forEach(o => {
85
+ const _enum = t.enum.filter(o => o !== null);
86
+ _enum.forEach(o => {
85
87
  checks.push(`(${valAsText})${jsToPGtypes[typeof o]} = ${(0, PubSubManager_1.asValue)(o)}`);
86
88
  });
87
89
  }
@@ -114,7 +116,7 @@ function getPGCheckConstraint(args, depth) {
114
116
  const checks = [];
115
117
  let typeChecks = "";
116
118
  if (isOneOfTypes(s)) {
117
- typeChecks = s.oneOfTypes.map(t => `(${getSchemaChecks(t)})`).join(" OR ");
119
+ typeChecks = s.oneOf.map(t => `(${getSchemaChecks(t)})`).join(" OR ");
118
120
  }
119
121
  else {
120
122
  typeChecks = getSchemaChecks(s);
@@ -126,9 +128,9 @@ function getPGCheckConstraint(args, depth) {
126
128
  }
127
129
  exports.getPGCheckConstraint = getPGCheckConstraint;
128
130
  const isOneOfTypes = (s) => {
129
- if ("oneOfTypes" in s) {
130
- if (!Array.isArray(s.oneOfTypes)) {
131
- throw "Expecting oneOfTypes to be an array of types";
131
+ if ("oneOf" in s) {
132
+ if (!Array.isArray(s.oneOf)) {
133
+ throw "Expecting oneOf to be an array of types";
132
134
  }
133
135
  return true;
134
136
  }
@@ -146,11 +148,11 @@ function getSchemaTSTypes(schema, leading = "", isOneOf = false) {
146
148
  return nullType + getSchemaTSTypes(def.type, "", true);
147
149
  }
148
150
  }
149
- else if ("oneOf" in def) {
150
- return nullType + def.oneOf.map(v => (0, PubSubManager_1.asValue)(v)).join(" | ");
151
+ else if ("enum" in def) {
152
+ return nullType + def.enum.map(v => (0, PubSubManager_1.asValue)(v)).join(" | ");
151
153
  }
152
- else if ("oneOfTypes" in def) {
153
- return (def.nullable ? `\n${leading} | null` : "") + def.oneOfTypes.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("");
154
+ else if ("oneOf" in def) {
155
+ return (def.nullable ? `\n${leading} | null` : "") + def.oneOf.map(v => `\n${leading} | ` + getSchemaTSTypes(v, "", true)).join("");
154
156
  }
155
157
  else
156
158
  throw "Unexpected getSchemaTSTypes";
@@ -168,7 +170,7 @@ function getSchemaTSTypes(schema, leading = "", isOneOf = false) {
168
170
  exports.getSchemaTSTypes = getSchemaTSTypes;
169
171
  function getJSONBSchemaTSTypes(schema, colOpts, leading = "", isOneOf = false) {
170
172
  if (isOneOfTypes(schema)) {
171
- return (colOpts.nullable ? `\n${leading} | null` : "") + schema.oneOfTypes.map(s => `\n${leading} | ` + getSchemaTSTypes(s, "", true)).join("");
173
+ return (colOpts.nullable ? `\n${leading} | null` : "") + schema.oneOf.map(s => `\n${leading} | ` + getSchemaTSTypes(s, "", true)).join("");
172
174
  }
173
175
  else {
174
176
  return (colOpts.nullable ? `null | ` : "") + getSchemaTSTypes(schema, leading, isOneOf);
@@ -211,18 +213,15 @@ const getJSONSchemaObject = (objDef) => {
211
213
  };
212
214
  }
213
215
  }
214
- else if ("oneOf" in itemSchema) {
216
+ else if ("enum" in itemSchema) {
215
217
  item = {
216
- type: "array",
217
- items: {
218
- "type": typeof itemSchema.oneOf[0],
219
- "enum": itemSchema.oneOf //.concat(nullable? [null] : [])
220
- }
218
+ type: typeof itemSchema.enum[0],
219
+ "enum": itemSchema.enum //.concat(nullable? [null] : [])
221
220
  };
222
221
  }
223
- else if ("oneOfTypes" in itemSchema) {
222
+ else if ("oneOf" in itemSchema) {
224
223
  item = {
225
- oneOf: itemSchema.oneOfTypes.map(t => getJSONSchemaObject(t))
224
+ oneOf: itemSchema.oneOf.map(t => getJSONSchemaObject(t))
226
225
  };
227
226
  }
228
227
  else {