pwi-plata-type 0.4.137 → 0.4.139

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 (38) hide show
  1. package/__BUILD__/index.js +1 -1
  2. package/__BUILD__/index.js.map +1 -1
  3. package/__BUILD__/libs/models/index.js +21 -0
  4. package/__BUILD__/libs/models/index.js.map +1 -0
  5. package/__BUILD__/libs/models/model-template-env.js +48 -0
  6. package/__BUILD__/libs/models/model-template-env.js.map +1 -0
  7. package/__BUILD__/libs/models/model-template-union.js +50 -0
  8. package/__BUILD__/libs/models/model-template-union.js.map +1 -0
  9. package/__BUILD__/libs/models/model-template.js +88 -0
  10. package/__BUILD__/libs/models/model-template.js.map +1 -0
  11. package/__BUILD__/libs/models/model-union.js +1 -0
  12. package/__BUILD__/libs/models/model-union.js.map +1 -0
  13. package/__BUILD__/libs/models/model-validations.js.map +1 -0
  14. package/__BUILD__/libs/models/tools.js +114 -0
  15. package/__BUILD__/libs/models/tools.js.map +1 -0
  16. package/package.json +3 -3
  17. package/src/@types/exported.d.ts +1 -1
  18. package/src/@types/knex.d.ts +1 -1
  19. package/src/@types/model.d.ts +65 -7
  20. package/src/@types/sql.d.ts +3 -0
  21. package/src/bin/runtime/switch.ts +1 -1
  22. package/src/index.ts +1 -1
  23. package/src/libs/models/index.ts +4 -0
  24. package/src/libs/models/model-template-env.ts +58 -0
  25. package/src/libs/models/model-template-union.ts +55 -0
  26. package/src/libs/models/model-template.ts +104 -0
  27. package/src/libs/models/model-union.ts +0 -0
  28. package/src/libs/{model.ts → models/tools.ts} +31 -114
  29. package/src/libs/sql.ts +1 -1
  30. package/src/tests/model.env.test.ts +67 -0
  31. package/src/tests/model.test.ts +5 -3
  32. package/src/tests/model.union.test.ts +149 -0
  33. package/src/tests/sql.test.ts +1 -1
  34. package/__BUILD__/libs/model-validations.js.map +0 -1
  35. package/__BUILD__/libs/model.js +0 -200
  36. package/__BUILD__/libs/model.js.map +0 -1
  37. /package/__BUILD__/libs/{model-validations.js → models/model-validations.js} +0 -0
  38. /package/src/libs/{model-validations.ts → models/model-validations.ts} +0 -0
@@ -30,7 +30,7 @@ const PlataRoutes = __importStar(require("./libs/router"));
30
30
  exports.PlataRoutes = PlataRoutes;
31
31
  const PlataTools = __importStar(require("./libs/tools"));
32
32
  exports.PlataTools = PlataTools;
33
- const PlataModels = __importStar(require("./libs/model"));
33
+ const PlataModels = __importStar(require("./libs/models"));
34
34
  exports.PlataModels = PlataModels;
35
35
  const PlataTasks = __importStar(require("./libs/tasks"));
36
36
  exports.PlataTasks = PlataTasks;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA8C;AAW1C,oCAAY;AAVhB,2DAA4C;AAWxC,kCAAW;AAVf,yDAA0C;AAWtC,gCAAU;AAVd,0DAA2C;AAWvC,kCAAW;AAVf,yDAA0C;AAYtC,gCAAU;AAXd,6DAA8C;AAU1C,oCAAY;AAThB,qDAAsC;AAalC,4BAAQ;AAZZ,kCAAmC;AAa/B,wFAbK,YAAO,OAaL;AAZX,wCAA2D;AASvD,2FATK,kBAAU,OASL;AACV,iGAViB,wBAAgB,OAUjB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA8C;AAW1C,oCAAY;AAVhB,2DAA4C;AAWxC,kCAAW;AAVf,yDAA0C;AAWtC,gCAAU;AAVd,2DAA4C;AAWxC,kCAAW;AAVf,yDAA0C;AAYtC,gCAAU;AAXd,6DAA8C;AAU1C,oCAAY;AAThB,qDAAsC;AAalC,4BAAQ;AAZZ,kCAAmC;AAa/B,wFAbK,YAAO,OAaL;AAZX,wCAA2D;AASvD,2FATK,kBAAU,OASL;AACV,iGAViB,wBAAgB,OAUjB"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./model-validations"), exports);
18
+ __exportStar(require("./model-template"), exports);
19
+ __exportStar(require("./model-template-env"), exports);
20
+ __exportStar(require("./model-template-union"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,mDAAgC;AAChC,uDAAoC;AACpC,yDAAsC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelTemplateEnv = void 0;
4
+ const tools_1 = require("./tools");
5
+ class ModelTemplateEnv {
6
+ template;
7
+ validations = [];
8
+ type;
9
+ constructor(template) {
10
+ this.template = template;
11
+ }
12
+ addValidation(callback) {
13
+ this.validations.push(callback);
14
+ }
15
+ async validate(value) {
16
+ let errors = await tools_1.ModelsInternals.validateTemplateEnv(value, this.template);
17
+ if (errors.errorID !== undefined) {
18
+ return {
19
+ errors: [errors],
20
+ value: undefined
21
+ };
22
+ }
23
+ if (errors.length !== 0) {
24
+ return {
25
+ errors,
26
+ value: undefined
27
+ };
28
+ }
29
+ const promises = [];
30
+ for (let i = this.validations.length - 1; i >= 0; i--) {
31
+ const validation = this.validations[i];
32
+ promises.push(Plata.FastPromise(() => validation(value)));
33
+ }
34
+ errors = (await Promise.all(promises)).filter(Boolean);
35
+ if (errors.length !== 0) {
36
+ return {
37
+ errors,
38
+ value: undefined
39
+ };
40
+ }
41
+ return {
42
+ value: value,
43
+ errors: undefined
44
+ };
45
+ }
46
+ }
47
+ exports.ModelTemplateEnv = ModelTemplateEnv;
48
+ //# sourceMappingURL=model-template-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-template-env.js","sourceRoot":"","sources":["../../../src/libs/models/model-template-env.ts"],"names":[],"mappings":";;;AACA,mCAAyC;AAEzC,MAAa,gBAAgB;IACT,QAAQ,CAAG;IACX,WAAW,GAA0C,EAAE,CAAA;IACvD,IAAI,CAAiC;IAErD,YAAY,QAAW;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;IAEM,aAAa,CAAC,QAA6C;QAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,KAAyC;QAC3D,IAAI,MAAM,GAAG,MAAM,uBAAe,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE5E,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YAC9B,OAAO;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC;gBAChB,KAAK,EAAE,SAAS;aACnB,CAAA;SACJ;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,OAAO;gBACH,MAAM;gBACN,KAAK,EAAE,SAAS;aACnB,CAAA;SACJ;QAED,MAAM,QAAQ,GAAiC,EAAE,CAAA;QAEjD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAY,CAAC,CAAC,CAAC,CAAA;SACnE;QAED,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAEtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,OAAO;gBACH,MAAM;gBACN,KAAK,EAAE,SAAS;aACnB,CAAA;SACJ;QAED,OAAO;YACH,KAAK,EAAE,KAAY;YACnB,MAAM,EAAE,SAAS;SACpB,CAAA;IAEL,CAAC;CAEJ;AAtDD,4CAsDC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelTemplateUnion = void 0;
4
+ class ModelTemplateUnion {
5
+ config;
6
+ templates;
7
+ type;
8
+ constructor(config, templates) {
9
+ this.config = config;
10
+ this.templates = templates;
11
+ }
12
+ getExtractFromUnion(value) {
13
+ let type = `${value[this.config.key] ?? null}`;
14
+ value[this.config.key] = value[this.config.key] ?? null;
15
+ const template = this.templates[type];
16
+ if (template === undefined) {
17
+ return {
18
+ errorID: 'PLMODUNEXTFRUN001',
19
+ msg: `O Valor de ${this.config.key} tem que ser ${Object.keys(this.templates).join(',')}`,
20
+ error: type
21
+ };
22
+ }
23
+ return {
24
+ model: template,
25
+ value: value,
26
+ };
27
+ }
28
+ async validate(value) {
29
+ const extraced = this.getExtractFromUnion(value);
30
+ if (extraced.errorID !== undefined) {
31
+ return {
32
+ errors: [extraced],
33
+ value: undefined
34
+ };
35
+ }
36
+ const result = await extraced.model.validate(extraced.value);
37
+ if (result.errors !== undefined) {
38
+ return {
39
+ errors: result.errors,
40
+ value: undefined
41
+ };
42
+ }
43
+ return {
44
+ errors: undefined,
45
+ value: result.value
46
+ };
47
+ }
48
+ }
49
+ exports.ModelTemplateUnion = ModelTemplateUnion;
50
+ //# sourceMappingURL=model-template-union.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-template-union.js","sourceRoot":"","sources":["../../../src/libs/models/model-template-union.ts"],"names":[],"mappings":";;;AAAA,MAAa,kBAAkB;IACX,MAAM,CAAG;IACT,SAAS,CAAG;IACZ,IAAI,CAAmC;IAEvD,YAAY,MAAS,EAAE,SAAY;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC9B,CAAC;IAEM,mBAAmB,CAAC,KAAU;QACjC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;QAC9C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAErC,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,OAAO;gBACH,OAAO,EAAE,mBAAmB;gBAC5B,GAAG,EAAE,cAAc,IAAI,CAAC,MAAM,CAAC,GAAG,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACzF,KAAK,EAAE,IAAI;aACd,CAAA;SACJ;QAED,OAAO;YACH,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,KAAK;SACR,CAAA;IACZ,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,KAAU;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAEhD,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,OAAO;gBACH,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAClB,KAAK,EAAE,SAAS;aACnB,CAAA;SACJ;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAE5D,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,OAAO;gBACH,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,SAAS;aACnB,CAAA;SACJ;QAED,OAAO;YACH,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;SACtB,CAAA;IACL,CAAC;CACJ;AAtDD,gDAsDC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelTemplate = void 0;
4
+ const tools_1 = require("./tools");
5
+ class ModelTemplate {
6
+ template;
7
+ converters;
8
+ validations;
9
+ filters;
10
+ type;
11
+ constructor(template, converters) {
12
+ this.template = template;
13
+ this.converters = converters;
14
+ this.validations = new Map();
15
+ this.filters = new Map();
16
+ }
17
+ addValidation(nome, callback) {
18
+ this.validations.set(nome, callback);
19
+ }
20
+ addFilter(nome, callback) {
21
+ this.filters.set(nome, callback);
22
+ }
23
+ convert = (value, to) => {
24
+ const c = this.converters[to];
25
+ if (c === undefined)
26
+ return {
27
+ errorID: 'BPLM0002',
28
+ msg: 'Invalid Converter',
29
+ error: to
30
+ };
31
+ try {
32
+ return c(value);
33
+ }
34
+ catch (e) {
35
+ return {
36
+ errorID: 'BPLM0003',
37
+ msg: 'Unexpected converter error',
38
+ error: e
39
+ };
40
+ }
41
+ };
42
+ filter(value) {
43
+ let v = tools_1.ModelsInternals.filterTemplate(value, this.template);
44
+ this.filters.forEach(f => {
45
+ v = f(v);
46
+ });
47
+ return v;
48
+ }
49
+ async validate(value) {
50
+ const v = this.filter(value);
51
+ const errors = await tools_1.ModelsInternals.validateTemplate(v, this.template);
52
+ if (errors.errorID !== undefined) {
53
+ return {
54
+ value: v,
55
+ errors: [errors]
56
+ };
57
+ }
58
+ if (errors.length !== 0) {
59
+ return {
60
+ value: v,
61
+ errors
62
+ };
63
+ }
64
+ const promises = [];
65
+ this.validations.forEach(validation => {
66
+ promises.push(validation(v));
67
+ });
68
+ const result = await Plata.FastPromise(() => Promise.all(promises)).then(r => [].concat(...r).filter(v => v !== null), err => {
69
+ return {
70
+ errorID: 'BPLM0002',
71
+ msg: `unexpected error while validating model`,
72
+ error: err
73
+ };
74
+ });
75
+ if (result.errorID !== undefined) {
76
+ return {
77
+ value: v,
78
+ errors: [result]
79
+ };
80
+ }
81
+ return {
82
+ value: v,
83
+ errors: result.length !== 0 ? result : undefined
84
+ };
85
+ }
86
+ }
87
+ exports.ModelTemplate = ModelTemplate;
88
+ //# sourceMappingURL=model-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-template.js","sourceRoot":"","sources":["../../../src/libs/models/model-template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=model-union.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-union.js","sourceRoot":"","sources":["../../../src/libs/models/model-union.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-validations.js","sourceRoot":"","sources":["../../../src/libs/models/model-validations.ts"],"names":[],"mappings":";;;AAAA,SAAgB,GAAG,CAAC,GAAW;IAC3B,OAAO,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;QACtC,IAAI,KAAK,GAAG,GAAG;YAAE,OAAO;gBACpB,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,cAAc,IAAI,0BAA0B,GAAG,EAAE;iBACzD;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AAZD,kBAYC;AAED,SAAgB,GAAG,CAAC,GAAW;IAC3B,OAAO,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;QACtC,IAAI,KAAK,GAAG,GAAG;YAAE,OAAO;gBACpB,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,cAAc,IAAI,0BAA0B,GAAG,EAAE;iBACzD;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AAZD,kBAYC;AAED,SAAgB,IAAI,CAAU,OAAY;IACtC,OAAO,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;QACtC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO;gBAC7D,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,4BAA4B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpE,KAAK,EAAE,GAAG,KAAK,EAAE;iBACpB;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AAbD,oBAaC;AAED,SAAgB,cAAc;IAC1B,OAAO,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,0DAA0D,CAAA;QAExE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,WAAW;oBACpB,GAAG,EAAE,mBAAmB,IAAI,8CAA8C;iBAC7E;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,MAAM,CAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAE,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAExE,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE;YAClG,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,WAAW;oBACpB,GAAG,EAAE,mBAAmB,IAAI,8CAA8C;iBAC7E;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAC;YAC3C,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,WAAW;oBACpB,GAAG,EAAE,mBAAmB,IAAI,8CAA8C;iBAC7E;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AAtCD,wCAsCC;AAED,SAAgB,QAAQ;IACpB,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvE,KAAK,EAAE;YACH,OAAO,EAAE,UAAU;YACnB,GAAG,EAAE,WAAW,IAAI,qBAAqB;SAC5C;QACD,QAAQ,EAAE,KAAK;KAClB,CAAA;AACL,CAAC;AARD,4BAQC;AAED,SAAgB,OAAO,CAAC,cAAsB,EAAE,aAAqB,EAAE,GAAY,EAAE,GAAY;IAC7F,OAAO,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;QACtC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;YACf,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,yBAAyB;iBAChD;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,MAAM,CAAC,GAAG,GAAG,KAAK,EAAE,CAAA;QAEpB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,cAAc,GAAG,aAAa,GAAG,CAAC,CAAC,EAAE;YACjD,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,2BAA2B,CAAC,cAAc,GAAG,aAAa,GAAG,CAAC,CAAC,EAAE;iBACxF;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAEtB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,cAAc,EAAE;YAC9B,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,sBAAsB,IAAI,yBAAyB,cAAc,UAAU;iBACnF;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACpB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,aAAa,EAAE;gBAC7B,OAAO;oBACH,KAAK,EAAE;wBACH,OAAO,EAAE,YAAY;wBACrB,GAAG,EAAE,sBAAsB,IAAI,yBAAyB,aAAa,UAAU;qBAClF;oBACD,QAAQ,EAAE,KAAK;iBAClB,CAAA;aACJ;SACJ;QAED,IAAI,GAAG,KAAK,SAAS,EAAE;YACnB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAE1C,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;gBACxB,OAAO,MAAM,CAChB;SACJ;QAED,IAAI,GAAG,KAAK,SAAS,EAAE;YACnB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAE1C,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;gBACxB,OAAO,MAAM,CAChB;SACJ;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AAlED,0BAkEC;AAED,SAAgB,GAAG,CAAC,GAAY,EAAE,GAAY;IAC1C,OAAO,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;QACtC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;YACf,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,gCAAgC;iBACvD;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,MAAM,CAAC,GAAG,CAAC,KAAK,CAAA;QAEhB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YACrB,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,gCAAgC;iBACvD;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,IAAI,GAAG,KAAK,SAAS,EAAE;YACnB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAE1C,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;gBACxB,OAAO,MAAM,CAChB;SACJ;QAED,IAAI,GAAG,KAAK,SAAS,EAAE;YACnB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAE1C,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;gBACxB,OAAO,MAAM,CAChB;SACJ;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AA1CD,kBA0CC;AAED,SAAgB,QAAQ;IACpB,OAAO,KAAK,EAAE,KAAa,EAAE,KAAU,EAAE,EAAE;QACvC,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;SAC7B;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AARD,4BAQC;AAED,SAAgB,QAAQ;IACpB,OAAO,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;QACtC,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,gBAAgB;iBACvC;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AAdD,4BAcC;AAED,SAAgB,aAAa;IACzB,OAAO,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,4BAA4B,CAAA;QAE1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,WAAW;oBACpB,GAAG,EAAE,mBAAmB,IAAI,qCAAqC;iBACpE;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,MAAM,CAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAE/C,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,EAAC;YAC1C,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,WAAW;oBACpB,GAAG,EAAE,mBAAmB,IAAI,qCAAqC;iBACpE;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE;YAC5B,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,WAAW;oBACpB,GAAG,EAAE,mBAAmB,IAAI,qCAAqC;iBACpE;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAGD,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;YACzD,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,WAAW;oBACpB,GAAG,EAAE,mBAAmB,IAAI,oCAAoC;iBACnE;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AAjDD,sCAiDC;AAED,SAAgB,QAAQ;IACpB,OAAO,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;QACtC,MAAM,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAE/B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAChB,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,WAAW;oBACpB,GAAG,EAAE,WAAW,IAAI,qDAAqD;iBAC5E;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YAC/D,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,WAAW;oBACpB,GAAG,EAAE,WAAW,IAAI,qDAAqD;iBAC5E;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAClB,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,WAAW;oBACpB,GAAG,EAAE,WAAW,IAAI,qDAAqD;iBAC5E;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AApCD,4BAoCC;AAED,SAAgB,WAAW;IACvB,OAAO,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;QACtC,MAAM,CAAE,GAAG,EAAE,CAAC,CAAE,GAAG,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAElC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,0DAA0D;iBACjF;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YACpF,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,0DAA0D;iBACjF;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAChC,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,0DAA0D;iBACjF;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YAClB,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,0DAA0D;iBACjF;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE;YACzB,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,0DAA0D;iBACjF;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AAzDD,kCAyDC;AAED,SAAgB,OAAO,CAAC,GAAW,EAAE,GAAY;IAC7C,OAAO,KAAK,EAAE,IAAY,EAAE,KAAU,EAAE,EAAE;QACtC,IAAI,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;YACzB,OAAO;gBACH,KAAK,EAAE;oBACH,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,WAAW,IAAI,yBAAyB,GAAG,aAAa;iBAChE;gBACD,QAAQ,EAAE,KAAK;aAClB,CAAA;SACJ;QAED,IAAI,GAAG,KAAK,SAAS,EAAE;YACnB,IAAI,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;gBACzB,OAAO;oBACH,KAAK,EAAE;wBACH,OAAO,EAAE,YAAY;wBACrB,GAAG,EAAE,WAAW,IAAI,0BAA0B,GAAG,aAAa;qBACjE;oBACD,QAAQ,EAAE,KAAK;iBAClB,CAAA;aACJ;SACJ;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAA;AACL,CAAC;AA1BD,0BA0BC"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelsInternals = void 0;
4
+ var ModelsInternals;
5
+ (function (ModelsInternals) {
6
+ function hasValue(value) {
7
+ if (value === null)
8
+ return false;
9
+ if (value === undefined)
10
+ return false;
11
+ return true;
12
+ }
13
+ ModelsInternals.hasValue = hasValue;
14
+ function filterTemplate(value, template) {
15
+ for (const param in template) {
16
+ const t = template[param];
17
+ if (t.length === undefined) {
18
+ if (!ModelsInternals.hasValue(value[param])) {
19
+ value[param] = Object.create(null);
20
+ }
21
+ value[param] = filterTemplate(value[param], t);
22
+ continue;
23
+ }
24
+ if (typeof t[0] === 'function') {
25
+ if (!ModelsInternals.hasValue(value[param])) {
26
+ value[param] = null;
27
+ }
28
+ continue;
29
+ }
30
+ if (t[0].length !== undefined) {
31
+ if (!ModelsInternals.hasValue(value[param])) {
32
+ value[param] = [];
33
+ }
34
+ if (!Array.isArray(value[param])) {
35
+ value[param] = [value[param]];
36
+ }
37
+ continue;
38
+ }
39
+ if (!ModelsInternals.hasValue(value[param])) {
40
+ value[param] = [];
41
+ continue;
42
+ }
43
+ if (!Array.isArray(value[param])) {
44
+ if (typeof value[param] !== 'object') {
45
+ value[param] = [];
46
+ continue;
47
+ }
48
+ value[param] = [value[param]];
49
+ }
50
+ for (let i = 0; i < value[param].length; i++) {
51
+ value[param][i] = filterTemplate(value[param][i], t[0]);
52
+ }
53
+ }
54
+ return value;
55
+ }
56
+ ModelsInternals.filterTemplate = filterTemplate;
57
+ async function validateTemplateEnv(value, template) {
58
+ const promises = [];
59
+ for (const env in template) {
60
+ promises.push(Plata.FastPromise(() => validateParameter(value[env] ?? null, template[env], env)));
61
+ }
62
+ return Promise.all(promises).then(result => result.filter(Boolean), err => ({
63
+ errorID: 'BPLMINVLTMEN001',
64
+ msg: `unexpected error while validating template for env`,
65
+ error: err
66
+ }));
67
+ }
68
+ ModelsInternals.validateTemplateEnv = validateTemplateEnv;
69
+ async function validateParameter(value, pipeline, name) {
70
+ for (const validation of pipeline) {
71
+ const result = await validation(name, value);
72
+ if (result.error !== undefined) {
73
+ return result.error;
74
+ }
75
+ if (!result.continua) {
76
+ break;
77
+ }
78
+ }
79
+ return null;
80
+ }
81
+ ModelsInternals.validateParameter = validateParameter;
82
+ async function validateTemplate(value, template, name) {
83
+ const promises = [];
84
+ for (const param in template) {
85
+ const t = template[param];
86
+ if (t.length === undefined) {
87
+ promises.push(Plata.FastPromise(() => validateTemplate(value[param], t, `${name ?? ''}${param}.`)));
88
+ continue;
89
+ }
90
+ if (typeof t[0] === 'function') {
91
+ promises.push(Plata.FastPromise(() => validateParameter(value[param], t, `${name ?? ''}${param}`)));
92
+ continue;
93
+ }
94
+ if (t[0].length !== undefined) {
95
+ for (let i = 0; i < value[param].length; i++) {
96
+ promises.push(Plata.FastPromise(() => validateParameter(value[param][i], t[0], `${name ?? ''}${param}[${i}]`)));
97
+ }
98
+ continue;
99
+ }
100
+ for (let i = 0; i < value[param].length; i++) {
101
+ promises.push(Plata.FastPromise(() => validateTemplate(value[param][i], t[0], `${name ?? ''}${param}[${i}].`)));
102
+ }
103
+ }
104
+ return Promise.all(promises).then(result => [].concat(...result).filter(v => v !== null), err => {
105
+ return {
106
+ errorID: 'BPLM0001',
107
+ msg: `unexpected error while validating template (${name})`,
108
+ error: err
109
+ };
110
+ });
111
+ }
112
+ ModelsInternals.validateTemplate = validateTemplate;
113
+ })(ModelsInternals || (exports.ModelsInternals = ModelsInternals = {}));
114
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/libs/models/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pwi-plata-type",
3
- "version": "0.4.137",
3
+ "version": "0.4.139",
4
4
  "main": "__BUILD__/index",
5
5
  "types": "src/@types/exported.d.ts",
6
6
  "bin": {
@@ -35,10 +35,10 @@
35
35
  "node-watch": "^0.7.4",
36
36
  "swagger-ui-express": "^5.0.0",
37
37
  "tsup": "^7.2.0",
38
- "typescript": "^5.2.2"
38
+ "typescript": "^5.2.2",
39
+ "@total-typescript/ts-reset": "^0.3.7"
39
40
  },
40
41
  "devDependencies": {
41
- "@total-typescript/ts-reset": "^0.3.7",
42
42
  "nodemon": "^3.0.1",
43
43
  "rimraf": "^3.0.2",
44
44
  "sqlite3": "^5.1.4"
@@ -11,7 +11,7 @@
11
11
  import * as PlataCluster from '../libs/cluster'
12
12
  import * as PlataRoutes from '../libs/router'
13
13
  import * as PlataTools from '../libs/tools'
14
- import * as PlataModels from '../libs/model'
14
+ import * as PlataModels from '../libs/models'
15
15
  import * as PlataTasks from '../libs/tasks'
16
16
  import * as PlataSwagger from '../libs/swagger'
17
17
  import * as PlataSql from '../libs/sql'
@@ -1,5 +1,5 @@
1
1
  import { Knex as KnexOriginal } from 'knex';
2
- import { ModelTemplate } from '++/libs/model'
2
+ import { ModelTemplate } from '++/libs/models'
3
3
 
4
4
  declare module 'knex' {
5
5
  namespace Knex {
@@ -19,6 +19,10 @@ declare namespace Model {
19
19
  readonly (readonly PrimitiveValidationType[])[]
20
20
  }
21
21
 
22
+ interface TemplateEnv {
23
+ readonly [name: string]: readonly PrimitiveValidationType<unknown, unknown>[]
24
+ }
25
+
22
26
  type GetTemplateParamType<T> =
23
27
  T extends readonly [ PrimitiveValidationType<infer G, infer H> ] ? G | H :
24
28
  T extends readonly [ PrimitiveValidationType<any, infer H>, PrimitiveValidationType<infer G, any> ] ? G | H :
@@ -26,8 +30,17 @@ declare namespace Model {
26
30
  never
27
31
  ;
28
32
 
33
+ type GetTemplateEnvParamType<const T extends PrimitiveValidationType<unknown, unknown>[]> =
34
+ T extends readonly [ PrimitiveValidationType<infer G, infer H> ] ? `${G}` | H :
35
+ T extends readonly [ PrimitiveValidationType<any, infer H>, PrimitiveValidationType<infer G, any> ] ? `${G}` | H :
36
+ T extends readonly [ PrimitiveValidationType<any, infer H>, ...any[], PrimitiveValidationType<infer G, any> ] ? `${G}` | H :
37
+ never
38
+ ;
39
+
29
40
  type ExtractTemplateParamType<T> = Exclude<GetTemplateParamType<T>, undefined>
30
41
 
42
+ type ExtractTemplateEnvParamType<const T> = Replace<Exclude<GetTemplateEnvParamType<T>, undefined>, null, undefined>
43
+
31
44
  type ExtractTemplateType<T extends Template> = {
32
45
  [P in keyof T]: T[P] extends Template ? ExtractTemplateType<T[P]> :
33
46
  T[P] extends readonly Template[] ? ExtractTemplateType<T[P][0]>[] :
@@ -36,6 +49,11 @@ declare namespace Model {
36
49
  number | boolean | string | null
37
50
  }
38
51
 
52
+
53
+ type ExtractTemplateEnvType<const T extends TemplateEnv> = {
54
+ [P in keyof T]: ExtractTemplateEnvParamType<T[P]>
55
+ }
56
+
39
57
  type ExtractTemplateTypeNotValid<T extends Template> = {
40
58
  [P in keyof T]: T[P] extends Template ? ExtractTemplateTypeNotValid<T[P]> :
41
59
  T[P] extends readonly Template[] ? ExtractTemplateTypeNotValid<T[P][0]>[] :
@@ -49,13 +67,26 @@ declare namespace Model {
49
67
 
50
68
  type ModelTemplateFilter<T extends Template> = (value: DeepWritable<ExtractTemplateTypeNotValid<T>>) => DeepWritable<ExtractTemplateTypeNotValid<T>>
51
69
 
52
- type ModelValidateReturn<T extends Template> = {
53
- errors: undefined
54
- value: ExtractTemplateType<T>
55
- } | {
56
- errors: PlataError[]
57
- value: ExtractTemplateTypeNotValid<T>
58
- }
70
+ type ModelTemplateEnvValidation<const T extends TemplateEnv> = (value: ExtractTemplateEnvType<T>) => Promise<PlataError | null>
71
+
72
+ type ModelValidateReturn<T extends Template> =
73
+ ModelValidateReturnHelper<ExtractTemplateType<T>, ExtractTemplateTypeNotValid<T>>
74
+ ;
75
+
76
+ type ModelValidateEnvReturn<const T extends TemplateEnv> =
77
+ ModelValidateReturnHelper<ExtractTemplateEnvType<T>, undefined>
78
+ ;
79
+
80
+ type ModelValidateReturnHelper<const OKAY, const ERROR> =
81
+ | {
82
+ errors: undefined,
83
+ value: OKAY
84
+ }
85
+ | {
86
+ errors: PlataError[]
87
+ value: ERROR
88
+ }
89
+ ;
59
90
 
60
91
  type ConvertFunction<T extends Template, O> = (x: ExtractTemplateType<T>) => O
61
92
 
@@ -66,4 +97,31 @@ declare namespace Model {
66
97
  type ModelConvertFuntion<T extends Template, C extends Converters<T>> =
67
98
  <K extends keyof C>(value: ExtractTemplateType<T>, to: K) => PlataResult<GetConverterType<T, C[K]>>
68
99
  ;
100
+
101
+ interface TemplateUnionConfig {
102
+ key: string
103
+ }
104
+
105
+ interface ModelClass {
106
+ readonly type: unknown
107
+ validate(value: any): Promise<Model.ModelValidateReturnHelper<any, any>>
108
+ }
109
+
110
+ type TemplateRecord =
111
+ Record<string | `${number}` | `${boolean}` | 'null', ModelClass>
112
+ ;
113
+
114
+ type ExtractModelUnionType<const C extends TemplateUnionConfig, const R extends TemplateRecord> = {
115
+ [K in keyof R]: Record<C['key'], K> & R[K]['type']
116
+ }[keyof R]
117
+
118
+
119
+ type ExtractModelUnionReturn<const C extends TemplateUnionConfig, const R extends TemplateRecord> =
120
+ {
121
+ [K in keyof R]: {
122
+ model: R[K],
123
+ value: R[K]['type'] & Record<C['key'], K>
124
+ }
125
+ }[keyof R]
126
+ ;
69
127
  }
@@ -1,6 +1,9 @@
1
1
  import { Knex } from 'knex'
2
2
  import moment from 'moment'
3
3
 
4
+ import "@total-typescript/ts-reset/dist/filter-boolean"
5
+
6
+
4
7
  declare global {
5
8
  namespace Sql {
6
9
  interface CacheTable {
@@ -26,7 +26,7 @@ type SwitchUnionFunction =
26
26
  ;
27
27
 
28
28
  type SwitchUnionObjectFunction =
29
- <V extends DictionaryRecord<string, any>, K extends keyof V, C extends SwitchUnionObjectFunctionCases<V, K> = SwitchUnionObjectFunctionCases<V, K>>
29
+ <const V extends DictionaryRecord<string, any>, K extends keyof V, C extends SwitchUnionObjectFunctionCases<V, K> = SwitchUnionObjectFunctionCases<V, K>>
30
30
  (
31
31
  object: V,
32
32
  chave: K,
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as PlataCluster from './libs/cluster'
2
2
  import * as PlataRoutes from './libs/router'
3
3
  import * as PlataTools from './libs/tools'
4
- import * as PlataModels from './libs/model'
4
+ import * as PlataModels from './libs/models'
5
5
  import * as PlataTasks from './libs/tasks'
6
6
  import * as PlataSwagger from './libs/swagger'
7
7
  import * as PlataSql from './libs/sql'
@@ -0,0 +1,4 @@
1
+ export * from './model-validations'
2
+ export * from './model-template'
3
+ export * from './model-template-env'
4
+ export * from './model-template-union'
@@ -0,0 +1,58 @@
1
+ import { PlataError } from "../tools"
2
+ import { ModelsInternals } from "./tools"
3
+
4
+ export class ModelTemplateEnv<const T extends Model.TemplateEnv> {
5
+ public readonly template: T
6
+ public readonly validations: Model.ModelTemplateEnvValidation<T>[] = []
7
+ public readonly type: Model.ExtractTemplateEnvType<T>
8
+
9
+ constructor(template: T) {
10
+ this.template = template
11
+ }
12
+
13
+ public addValidation(callback: Model.ModelTemplateEnvValidation<T>) {
14
+ this.validations.push(callback)
15
+ }
16
+
17
+ public async validate(value: Record<string, string | undefined>): Promise<Model.ModelValidateEnvReturn<T>> {
18
+ let errors = await ModelsInternals.validateTemplateEnv(value, this.template)
19
+
20
+ if (errors.errorID !== undefined) {
21
+ return {
22
+ errors: [errors],
23
+ value: undefined
24
+ }
25
+ }
26
+
27
+ if (errors.length !== 0) {
28
+ return {
29
+ errors,
30
+ value: undefined
31
+ }
32
+ }
33
+
34
+ const promises: Promise<null | PlataError>[] = []
35
+
36
+ for (let i = this.validations.length - 1; i >= 0; i--) {
37
+ const validation = this.validations[i];
38
+
39
+ promises.push(Plata.FastPromise(() => validation(value as any)))
40
+ }
41
+
42
+ errors = (await Promise.all(promises)).filter(Boolean)
43
+
44
+ if (errors.length !== 0) {
45
+ return {
46
+ errors,
47
+ value: undefined
48
+ }
49
+ }
50
+
51
+ return {
52
+ value: value as any,
53
+ errors: undefined
54
+ }
55
+
56
+ }
57
+
58
+ }