prostgles-server 2.0.227 → 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.
Files changed (43) hide show
  1. package/dist/DBSchemaBuilder.d.ts.map +1 -1
  2. package/dist/DBSchemaBuilder.js +10 -1
  3. package/dist/DBSchemaBuilder.js.map +1 -1
  4. package/dist/FileManager.d.ts +8 -1
  5. package/dist/FileManager.d.ts.map +1 -1
  6. package/dist/FileManager.js +29 -19
  7. package/dist/FileManager.js.map +1 -1
  8. package/dist/QueryBuilder.js +1 -1
  9. package/dist/QueryBuilder.js.map +1 -1
  10. package/dist/TableConfig.d.ts +5 -1
  11. package/dist/TableConfig.d.ts.map +1 -1
  12. package/dist/TableConfig.js +8 -4
  13. package/dist/TableConfig.js.map +1 -1
  14. package/dist/validation.d.ts +50 -0
  15. package/dist/validation.d.ts.map +1 -0
  16. package/dist/validation.js +135 -0
  17. package/dist/validation.js.map +1 -0
  18. package/lib/DBSchemaBuilder.d.ts.map +1 -1
  19. package/lib/DBSchemaBuilder.js +10 -1
  20. package/lib/DBSchemaBuilder.ts +10 -1
  21. package/lib/FileManager.d.ts +8 -1
  22. package/lib/FileManager.d.ts.map +1 -1
  23. package/lib/FileManager.js +29 -19
  24. package/lib/FileManager.ts +35 -20
  25. package/lib/QueryBuilder.js +1 -1
  26. package/lib/QueryBuilder.ts +1 -1
  27. package/lib/TableConfig.d.ts +5 -1
  28. package/lib/TableConfig.d.ts.map +1 -1
  29. package/lib/TableConfig.js +8 -4
  30. package/lib/TableConfig.ts +15 -5
  31. package/lib/validation.d.ts +50 -0
  32. package/lib/validation.d.ts.map +1 -0
  33. package/lib/validation.js +134 -0
  34. package/lib/validation.ts +157 -0
  35. package/package.json +2 -1
  36. package/tests/client/PID.txt +1 -1
  37. package/tests/isomorphic_queries.d.ts.map +1 -1
  38. package/tests/isomorphic_queries.js +25 -0
  39. package/tests/isomorphic_queries.ts +28 -1
  40. package/tests/server/DBoGenerated.d.ts +133 -114
  41. package/tests/server/index.js +13 -0
  42. package/tests/server/index.ts +13 -0
  43. package/tests/server/package-lock.json +3 -1
@@ -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":";;;AAAA,qDAAkH;AAClH,6CAAuD;AAEvD,mDAA0C;AAYnC,MAAM,SAAS,GAAG,CAA2C,MAKnE,EAAgB,EAAE;IACjB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAC3D,IAAG,MAAM,EAAC;QACR,IAAG,IAAA,0BAAa,EAAC,MAAM,CAAC,EAAC;YACvB,YAAY;YACZ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;SAC5C;aAAM,IAAG,OAAO,MAAM,KAAK,QAAQ,EAAC;YACnC,OAAO,MAAM,CAAC;SACf;KACF;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAA;AAjBY,QAAA,SAAS,aAiBrB;AAyKD;;GAEG;AACH,MAAqB,iBAAiB;IAcpC,YAAY,SAAoB;QAKhC,oBAAe,GAAG,CAAC,SAAiB,EAAE,OAAe,EAA4B,EAAE;YACjF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,EAAE;gBAC/B,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;aACjC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAA;QAED,iBAAY,GAAG,CAAC,MAA4C,EAAiC,EAAE;YAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAE9C,OAAO;gBACL,KAAK,EAAE,IAAA,iBAAS,EAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;aACzI,CAAA;QACH,CAAC,CAAA;QAED,eAAU,GAAG,CAAC,MAAqD,EAAmD,EAAE;YACtH,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,MAAM,GAAoD,SAAS,CAAC;YACxE,IAAI,OAAO,EAAE;gBAEX,IAAI,MAAM,IAAI,OAAO,EAAE;oBACrB,MAAM,GAAG;wBACP,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;wBACjB,GAAG,OAAO,EAAE,IAAI;qBACjB,CAAA;iBACF;gBAED;;mBAEG;gBACH,IAAI,OAAO,CAAC,KAAK,EAAE;oBACjB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;oBACxB,MAAM,GAAG,GAAG,OAAO,EAAE,KAAK,CAAC;oBAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE;wBAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;4BAC3B,MAAM,KAAN,MAAM,GAAK,EAAE,EAAC;4BACd,MAAM,CAAC,KAAK,GAAG,GAAG,CAAA;yBACnB;6BAAM,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,IAAY,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE;4BACnD,MAAM,KAAN,MAAM,GAAK,EAAE,EAAC;4BACd,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,IAAY,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;yBACjD;qBACF;iBAEF;aACF;YAGD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAA;QAED,gBAAW,GAAG,CAAC,MAAkD,EAAQ,EAAE;YACzE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,IAAI,EAAE;gBACR,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;gBACzB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBAC1B,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG;oBAAE,MAAM,GAAG,MAAM,CAAC,GAAG,sBAAsB,GAAG,EAAE,CAAA;gBAC3G,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG;oBAAE,MAAM,GAAG,MAAM,CAAC,GAAG,yBAAyB,GAAG,EAAE,CAAA;aAC/G;QACH,CAAC,CAAA;QAED,gBAAW,GAAG,CAAC,WAAmB,EAAE,WAAmB,EAAwB,EAAE;YAC/E,IACE,IAAI,CAAC,MAAM;gBACX,WAAW,IAAI,IAAI,CAAC,MAAM;gBAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBACxB,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EACrC;gBACA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACpC,IAAI,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;oBAChD,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBACnC,IAAI,SAAS,IAAI,EAAE,EAAE;wBACnB,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;wBACvB,MAAM,GAAG,GAAa;4BACpB,SAAS,EAAE,KAAK;4BAChB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gCAC/D,MAAM,EAAE,WAAW;gCACnB,MAAM,EAAE,WAAW;gCACnB,KAAK;gCACL,EAAE;6BACH,CAAC,CAAC;yBACJ,CAAA;wBAED,OAAO,GAAG,CAAC;qBACZ;iBACF;aACF;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAA;QA5FC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,WAAkB,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAdD,IAAI,GAAG;QACL,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;YAAE,MAAM,4BAA4B,CAAA;QAC3D,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAA;IAC3B,CAAC;IAAA,CAAC;IACF,IAAI,EAAE;QACJ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,MAAM,2BAA2B,CAAA;QACzD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAA;IAC1B,CAAC;IAAA,CAAC;IAmGF,KAAK,CAAC,IAAI;QACR,IAAI,OAAO,GAAa,EAAE,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;YAAE,MAAM,uBAAuB,CAAA;QACtE,0BAA0B;QAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAO,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,EAAE,YAAY,GAAG,KAAK,EAAE,mBAAmB,GAAG,KAAK,EAAE,GAAG,SAAS,CAAC;YACxE,IAAI,mBAAmB,EAAE;gBACvB,OAAO,CAAC,IAAI,CAAC,wBAAwB,SAAS,WAAW,CAAC,CAAC;aAC5D;iBAAM,IAAI,YAAY,EAAE;gBACvB,OAAO,CAAC,IAAI,CAAC,wBAAwB,SAAS,IAAI,CAAC,CAAC;aACrD;YACD,IAAI,eAAe,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE;gBACvF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxH,IAAI,YAAY,IAAI,mBAAmB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE;oBACjE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;oBAC1D,OAAO,CAAC,IAAI,CAAC,8BAA8B,SAAS;;0BAEpC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,wBAAM,EAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;uBAC7E,CAAC,CAAC;oBAEf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACb,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;wBACtD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAI,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,SAAS,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,wBAAM,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,yBAAyB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;oBACxK,CAAC,CAAC,CAAC;oBACH,mDAAmD;iBACpD;aACF;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;YACjC,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;SAClC;QACD,OAAO,GAAG,EAAE,CAAC;QAEb,+BAA+B;QAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE;YAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAO,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,SAAS,IAAI,SAAS,EAAE;gBAC1B,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,OAAqB,EAAU,EAAE;oBAChE,MAAM,UAAU,GAAG,IAAA,wBAAM,EAAC,IAAI,CAAC,CAAC;oBAChC,MAAM,UAAU,GAAG,CAAC,OAAmB,EAAE,EAAE;wBACzC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;wBAC3C,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,IAAA,uBAAO,EAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;oBAC7G,CAAC,CAAA;oBACD,IAAI,YAAY,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;wBAEjD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;wBACpF,OAAO,IAAI,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,WAAW,KAAK,SAAS,IAAI,CAAC;qBAErG;yBAAM,IAAI,eAAe,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE;wBAE9D,OAAO,IAAI,UAAU,IAAI,OAAO,CAAC,aAAa,GAAG,CAAC;qBAEnD;yBAAM,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;wBAChD,IAAI,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC;wBAC3B,IAAI,OAAO,CAAC,UAAU,EAAE;4BACtB,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,YAAY,UAAU,GAAG,CAAC,CAAA;yBAClD;wBACD,IAAI,OAAO,CAAC,OAAO,EAAE;4BACnB,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,YAAY,UAAU,GAAG,CAAC,CAAA;yBAClD;wBACD,IAAI,IAAI,CAAC,MAAM,EAAE;4BACf,MAAM,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAA;yBACzC;wBACD,OAAO,IAAI,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC;qBAC1D;yBAAM;wBACL,MAAM,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;qBAC3D;gBACH,CAAC,CAAA;gBAED,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,IAAI,SAAS,CAAC,OAAO,EAAE;oBACrB,IAAA,yBAAO,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,OAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;wBAC3F,MAAM,OAAO,GAAG,SAAS,CAAC,OAAQ,CAAC,OAAO,CAAC,CAAC;wBAE5C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;4BACxB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;yBAC1C;6BAAM,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;4BAEzF,IAAI,YAAY,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;gCAEjD,MAAM,EAAE,SAAS,EAAE,WAAW,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;gCACvD,OAAO,CAAC,IAAI,CAAC;4CACe,IAAA,wBAAM,EAAC,SAAS,CAAC;2CAClB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;2BAC3C,CAAC,CAAA;gCACZ,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,IAAI,OAAO,GAAG,GAAG,2BAA2B,GAAG,WAAW,CAAC,CAAC;6BAExG;iCAAM,IAAI,eAAe,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE;gCAE9D,OAAO,CAAC,IAAI,CAAC;8CACiB,IAAA,wBAAM,EAAC,SAAS,CAAC;6CAClB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;6BAC3C,CAAC,CAAA;gCACd,OAAO,CAAC,GAAG,CAAC,2CAA2C,SAAS,IAAI,OAAO,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;6BACzG;yBACF;oBACH,CAAC,CAAC,CAAC;iBACJ;gBAED,IAAI,OAAO,CAAC,MAAM,EAAE;oBAClB,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAA,wBAAM,EAAC,SAAS,CAAC;0BAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;uBACvB,CAAC,CAAA;oBACd,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;iBACjE;aACF;YACD,IAAI,aAAa,IAAI,SAAS,IAAI,SAAS,CAAC,WAAW,EAAE;gBACvD,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBAClE,IAAA,yBAAO,EAAC,SAAS,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;oBAClD,IAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC,EAAC;wBACtD,OAAO,CAAC,IAAI,CAAC,eAAe,IAAA,wBAAM,EAAC,SAAS,CAAC,mBAAmB,IAAA,wBAAM,EAAC,cAAc,CAAC,IAAI,SAAS,CAAC,WAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;qBACvI;gBACH,CAAC,CAAC,CAAC;aACJ;YACD,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE;gBAC/C,IAAA,yBAAO,EAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;oBACzC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,OAAQ,CAAC,SAAS,CAAC,CAAC;oBAC3F,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,SAAS,IAAI,SAAS,CAAC,oBAAoB,EAAE;wBAC7E,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAA,wBAAM,EAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAC9D;oBACD,OAAO,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,UAAU,IAAA,wBAAM,EAAC,SAAS,CAAC,OAAO,IAAA,wBAAM,EAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,UAAU,KAAK,CAAC,CAAC;gBACnM,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;YACjC,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACxB;IACH,CAAC;CACF;AAtPD,oCAsPC;AAGD,KAAK,UAAU,YAAY,CAAC,IAAoD;IAC9E,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACxC,OAAO,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC;;;2BAGV,IAAA,uBAAO,EAAC,SAAS,CAAC,oBAAoB,IAAA,uBAAO,EAAC,OAAO,CAAC;;KAE5E,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAM,EAAE,SAAiB;IACpD,OAAO,EAAE,CAAC,GAAG,CAAC;;;;;;;;;uBASO,GAAG,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;AACxD,CAAC"}
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
  })
@@ -37,6 +37,11 @@ export declare type LocalConfig = {
37
37
  * note that this location will be relative to the compiled file location
38
38
  */
39
39
  localFolderPath: string;
40
+ /**
41
+ * Minimum amount of free bytes available to allow saving files
42
+ * Defaults to 100MB
43
+ */
44
+ minFreeBytes?: number;
40
45
  };
41
46
  export declare type UploadItem = {
42
47
  name: string;
@@ -83,7 +88,8 @@ export default class FileManager {
83
88
  ext: string | ALLOWED_EXTENSION;
84
89
  }>;
85
90
  getFileUrl: (name: string) => string;
86
- uploadStream: (name: string, mime: string, onProgress?: OnProgress, onError?: (error: any) => void, onEnd?: (item: UploadedItem) => void) => stream.PassThrough;
91
+ checkFreeSpace: (fileSize?: number) => Promise<void>;
92
+ uploadStream: (name: string, mime: string, onProgress?: OnProgress, onError?: (error: any) => void, onEnd?: (item: UploadedItem) => void, expectedSizeBytes?: number) => stream.PassThrough;
87
93
  private upload;
88
94
  uploadAsMedia: (params: {
89
95
  item: UploadItem;
@@ -107,6 +113,7 @@ export declare const getFileType: (file: Buffer | string, fileName: string) => P
107
113
  mime: ALLOWED_CONTENT_TYPE;
108
114
  ext: ALLOWED_EXTENSION;
109
115
  }>;
116
+ export declare function bytesToSize(bytes: number): string;
110
117
  export {};
111
118
  /**
112
119
  *
@@ -1 +1 @@
1
- {"version":3,"file":"FileManager.d.ts","sourceRoot":"","sources":["FileManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileManager.d.ts","sourceRoot":"","sources":["FileManager.ts"],"names":[],"mappings":"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"}
@@ -27,11 +27,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  var _a;
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.getFileType = exports.getFileTypeFromFilename = exports.asSQLIdentifier = void 0;
30
+ exports.bytesToSize = exports.getFileType = exports.getFileTypeFromFilename = exports.asSQLIdentifier = void 0;
31
31
  const aws_sdk_1 = require("aws-sdk");
32
32
  const fs = __importStar(require("fs"));
33
33
  const stream = __importStar(require("stream"));
34
34
  const sharp = __importStar(require("sharp"));
35
+ const check_disk_space_1 = __importDefault(require("check-disk-space"));
35
36
  const prostgles_types_1 = require("prostgles-types");
36
37
  const DboBuilder_1 = require("./DboBuilder");
37
38
  const HOUR = 3600 * 1000;
@@ -42,28 +43,29 @@ exports.asSQLIdentifier = asSQLIdentifier;
42
43
  const aws_sdk_2 = __importDefault(require("aws-sdk"));
43
44
  class FileManager {
44
45
  constructor(config, imageOptions) {
45
- // async getUploadURL(fileName: string): Promise<string> {
46
- // const thisHour = new Date();
47
- // thisHour.setMilliseconds(0);
48
- // thisHour.setSeconds(0);
49
- // thisHour.setMinutes(0);
50
- // const now = Date.now();
51
- // const HOUR = 60 * 60;
52
- // const params = {
53
- // Bucket: this.config.bucket,
54
- // Key: fileName,
55
- // Expires: Math.round(((now - (+thisHour))/1000 + 2 * HOUR )), // one hour
56
- // ACL: "bucket-owner-full-control",
57
- // ContentType: "image/png",
58
- // };
59
- // return await this.s3Client.getSignedUrlPromise("putObject", params)
60
- // }
61
- this.getFileUrl = (name) => `${this.fileRoute}/${name}`;
62
- this.uploadStream = (name, mime, onProgress, onError, onEnd) => {
46
+ this.getFileUrl = (name) => this.fileRoute ? `${this.fileRoute}/${name}` : "";
47
+ this.checkFreeSpace = async (fileSize = 0) => {
48
+ if (!this.s3Client && "localFolderPath" in this.config) {
49
+ const { minFreeBytes = 1.048e6 } = this.config;
50
+ const required = Math.max(fileSize, minFreeBytes);
51
+ if (required) {
52
+ const diskSpace = await (0, check_disk_space_1.default)('/');
53
+ if (diskSpace.free < required) {
54
+ const err = `There is not enough space on the server to save files.\nTotal: ${bytesToSize(diskSpace.size)} \nRemaning: ${bytesToSize(diskSpace.free)} \nRequired: ${bytesToSize(required)}`;
55
+ throw new Error(err);
56
+ }
57
+ }
58
+ }
59
+ };
60
+ this.uploadStream = (name, mime, onProgress, onError, onEnd, expectedSizeBytes) => {
63
61
  const passThrough = new stream.PassThrough();
64
62
  if (!this.s3Client && "localFolderPath" in this.config) {
65
63
  // throw new Error("S3 config missing. Can only upload streams to S3");
66
64
  try {
65
+ this.checkFreeSpace(expectedSizeBytes).catch(err => {
66
+ onError?.(err);
67
+ passThrough.end();
68
+ });
67
69
  const url = this.getFileUrl(name);
68
70
  fs.mkdirSync(this.config.localFolderPath, { recursive: true });
69
71
  const filePath = `${this.config.localFolderPath}/${name}`;
@@ -609,6 +611,14 @@ const getFileType = async (file, fileName) => {
609
611
  return res;
610
612
  };
611
613
  exports.getFileType = getFileType;
614
+ function bytesToSize(bytes) {
615
+ var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
616
+ if (bytes == 0)
617
+ return '0 Byte';
618
+ var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)) + "");
619
+ return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];
620
+ }
621
+ exports.bytesToSize = bytesToSize;
612
622
  /**
613
623
  *
614
624
 
@@ -5,6 +5,7 @@ import * as fs from 'fs';
5
5
  import * as stream from 'stream';
6
6
 
7
7
  import * as sharp from "sharp";
8
+ import checkDiskSpace from 'check-disk-space';
8
9
 
9
10
  import { DB, DBHandlerServer, Prostgles } from './Prostgles';
10
11
  import { ALLOWED_CONTENT_TYPE, ALLOWED_EXTENSION, asName, CONTENT_TYPE_TO_EXT, getKeys, isObject, ValidatedColumnInfo } from 'prostgles-types';
@@ -44,6 +45,12 @@ export type LocalConfig = {
44
45
  * note that this location will be relative to the compiled file location
45
46
  */
46
47
  localFolderPath: string;
48
+
49
+ /**
50
+ * Minimum amount of free bytes available to allow saving files
51
+ * Defaults to 100MB
52
+ */
53
+ minFreeBytes?: number;
47
54
  }
48
55
 
49
56
  export type UploadItem = {
@@ -223,31 +230,29 @@ export default class FileManager {
223
230
  return result;
224
231
  }
225
232
 
226
- // async getUploadURL(fileName: string): Promise<string> {
227
- // const thisHour = new Date();
228
- // thisHour.setMilliseconds(0);
229
- // thisHour.setSeconds(0);
230
- // thisHour.setMinutes(0);
231
- // const now = Date.now();
232
- // const HOUR = 60 * 60;
233
- // const params = {
234
- // Bucket: this.config.bucket,
235
- // Key: fileName,
236
- // Expires: Math.round(((now - (+thisHour))/1000 + 2 * HOUR )), // one hour
237
- // ACL: "bucket-owner-full-control",
238
- // ContentType: "image/png",
239
- // };
240
- // return await this.s3Client.getSignedUrlPromise("putObject", params)
241
- // }
242
-
243
- getFileUrl = (name: string) => `${this.fileRoute}/${name}`
233
+ getFileUrl = (name: string) => this.fileRoute? `${this.fileRoute}/${name}` : "";
234
+
235
+ checkFreeSpace = async (fileSize = 0) => {
236
+ if(!this.s3Client && "localFolderPath" in this.config) {
237
+ const { minFreeBytes = 1.048e6 } = this.config;
238
+ const required = Math.max(fileSize, minFreeBytes)
239
+ if(required){
240
+ const diskSpace = await checkDiskSpace('/');
241
+ if(diskSpace.free < required){
242
+ const err = `There is not enough space on the server to save files.\nTotal: ${bytesToSize(diskSpace.size)} \nRemaning: ${bytesToSize(diskSpace.free)} \nRequired: ${bytesToSize(required)}`
243
+ throw new Error(err);
244
+ }
245
+ }
246
+ }
247
+ }
244
248
 
245
249
  uploadStream = (
246
250
  name: string,
247
251
  mime: string,
248
252
  onProgress?: OnProgress,
249
253
  onError?: (error: any)=>void,
250
- onEnd?: (item: UploadedItem)=>void
254
+ onEnd?: (item: UploadedItem)=>void,
255
+ expectedSizeBytes?: number
251
256
  ) => {
252
257
  const passThrough = new stream.PassThrough();
253
258
 
@@ -255,7 +260,10 @@ export default class FileManager {
255
260
  // throw new Error("S3 config missing. Can only upload streams to S3");
256
261
 
257
262
  try {
258
-
263
+ this.checkFreeSpace(expectedSizeBytes).catch(err => {
264
+ onError?.(err)
265
+ passThrough.end();
266
+ });
259
267
  const url = this.getFileUrl(name)
260
268
  fs.mkdirSync(this.config.localFolderPath, { recursive: true });
261
269
  const filePath = `${this.config.localFolderPath}/${name}`;
@@ -731,6 +739,13 @@ export const getFileType = async (file: Buffer | string, fileName: string): Prom
731
739
  return res as any;
732
740
  }
733
741
 
742
+ export function bytesToSize(bytes: number) {
743
+ var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
744
+ if (bytes == 0) return '0 Byte';
745
+ var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)) + "");
746
+ return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];
747
+ }
748
+
734
749
 
735
750
  /**
736
751
  *
@@ -575,7 +575,7 @@ exports.FUNCTIONS = [
575
575
  else {
576
576
  query = `${leftQ} - ${rightQ}`;
577
577
  }
578
- return trunc ? `date_trunc(${trunc}, ${query})` : query;
578
+ return trunc ? `date_trunc(${asValue(trunc)}, ${query})` : query;
579
579
  }
580
580
  })),
581
581
  /* pgcrypto funcs */
@@ -705,7 +705,7 @@ export const FUNCTIONS: FunctionSpec[] = [
705
705
  } else {
706
706
  query = `${leftQ} - ${rightQ}`;
707
707
  }
708
- return trunc? `date_trunc(${trunc}, ${query})` : query;
708
+ return trunc? `date_trunc(${asValue(trunc)}, ${query})` : query;
709
709
  }
710
710
  } as FunctionSpec)),
711
711
 
@@ -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>;