@futdevpro/fsm-dynamo 1.10.26 → 1.10.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/_models/control-models/data-model-params.control-model.d.ts +1 -0
- package/build/_models/control-models/data-model-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/data-model-params.control-model.js +32 -14
- package/build/_models/control-models/data-model-params.control-model.js.map +1 -1
- package/build/_models/control-models/data-model-params.control-model.spec.js +5 -3
- package/build/_models/control-models/data-model-params.control-model.spec.js.map +1 -1
- package/futdevpro-fsm-dynamo-01.10.27.tgz +0 -0
- package/package.json +1 -1
- package/src/_models/control-models/data-model-params.control-model.spec.ts +5 -3
- package/src/_models/control-models/data-model-params.control-model.ts +33 -14
- package/futdevpro-fsm-dynamo-01.10.26.tgz +0 -0
|
@@ -15,6 +15,7 @@ export declare class DyFM_DataModel_Settings<T extends DyFM_Metadata> extends Dy
|
|
|
15
15
|
export type DyFM_Data_P<T> = DyFM_DataModel_Params<T>;
|
|
16
16
|
export type DyFM_Data_Params<T> = DyFM_DataModel_Params<T>;
|
|
17
17
|
export declare class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataModel_Settings<T> {
|
|
18
|
+
readonly stackLocation: string;
|
|
18
19
|
constructor(set: DyFM_DataModel_Settings<T>);
|
|
19
20
|
constructed?(): boolean;
|
|
20
21
|
setKeysForSubObjectParams?(property: DyFM_DataProperty_Params<any>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-model-params.control-model.d.ts","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-model-params.control-model.d.ts","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAErG,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC;AACxD,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC;AAC/D,qBAAa,uBAAuB,CAAC,CAAC,SAAS,aAAa,CAAE,SAAQ,aAAa;IACjF;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACtD,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC3D,qBAAa,qBAAqB,CAAC,CAAC,SAAS,aAAa,CAAE,SAAQ,uBAAuB,CAAC,CAAC,CAAC;IAG5F,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAG7B,GAAG,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAiJjC,WAAW,CAAC,IAAI,OAAO;IAIvB,yBAAyB,CAAC,CAAC,QAAQ,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,IAAI;CAmB1E"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DyFM_DataModel_Params = exports.DyFM_DataModel_Settings = void 0;
|
|
4
4
|
const log_util_1 = require("../../_collections/utils/log.util");
|
|
5
|
+
const stack_util_1 = require("../../_collections/utils/stack.util");
|
|
5
6
|
const basic_property_type_enum_1 = require("../../_enums/basic-property-type.enum");
|
|
6
7
|
const data_model_type_enum_1 = require("../../_enums/data-model-type.enum");
|
|
7
8
|
const metadata_data_model_1 = require("../data-models/metadata.data-model");
|
|
@@ -17,26 +18,34 @@ class DyFM_DataModel_Settings extends metadata_data_model_1.DyFM_Metadata {
|
|
|
17
18
|
exports.DyFM_DataModel_Settings = DyFM_DataModel_Settings;
|
|
18
19
|
class DyFM_DataModel_Params extends DyFM_DataModel_Settings {
|
|
19
20
|
/* override properties?: DyFM_DataProperties<T>; */
|
|
21
|
+
stackLocation;
|
|
20
22
|
constructor(set) {
|
|
21
23
|
super(set);
|
|
22
24
|
if (set) {
|
|
23
25
|
Object.assign(this, set);
|
|
24
26
|
}
|
|
27
|
+
this.stackLocation = (0, stack_util_1.DyFM_getStackLocation)();
|
|
25
28
|
if (!this.properties || typeof this.properties !== 'object') {
|
|
26
29
|
log_util_1.DyFM_Log.error('DyFM_DataModel_Params.constructor: ' +
|
|
27
|
-
`Properties are missing in "${this.dataName}" model.`
|
|
30
|
+
`Properties are missing in "${this.dataName}" model.` +
|
|
31
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
28
32
|
this.properties = {};
|
|
29
33
|
}
|
|
30
|
-
Object.keys(this.properties)
|
|
34
|
+
const keys = Object.keys(this.properties);
|
|
35
|
+
keys.forEach((key) => {
|
|
31
36
|
if (!key) {
|
|
32
37
|
log_util_1.DyFM_Log.error('DyFM_DataModel_Params.constructor: ' +
|
|
33
|
-
`A property key is missing in "${this.dataName}" model.`
|
|
38
|
+
`A property key is missing in "${this.dataName}" model.` +
|
|
39
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
34
40
|
}
|
|
35
41
|
const property = this.properties[key];
|
|
36
42
|
property.key = key;
|
|
37
|
-
if (
|
|
38
|
-
this.setKeysForSubObjectParams(
|
|
43
|
+
if (property.subObjectParams) {
|
|
44
|
+
this.setKeysForSubObjectParams(property);
|
|
39
45
|
}
|
|
46
|
+
});
|
|
47
|
+
keys.forEach((key) => {
|
|
48
|
+
const property = this.properties[key];
|
|
40
49
|
/* if (property.vectorizeTo) {
|
|
41
50
|
if (!this.properties[property.vectorizeTo]) {
|
|
42
51
|
throw new Error(
|
|
@@ -50,28 +59,34 @@ class DyFM_DataModel_Params extends DyFM_DataModel_Settings {
|
|
|
50
59
|
if (property.vectorizedFrom) {
|
|
51
60
|
if (!this.properties[property.vectorizedFrom]) {
|
|
52
61
|
throw new Error(`Vectorized from property "${property.vectorizedFrom}" is not found in ` +
|
|
53
|
-
`"${this.dataName}" model.`
|
|
62
|
+
`"${this.dataName}" model.` +
|
|
63
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
54
64
|
}
|
|
55
65
|
/* this.properties[property.vectorizedFrom].vectorizeTo ??= key; */
|
|
56
66
|
if (property.type !== 'number[]') {
|
|
57
67
|
throw new Error(`Vectorized from property "${property.vectorizedFrom}" is not a number[] property in ` +
|
|
58
|
-
`"${this.dataName}" model.`
|
|
68
|
+
`"${this.dataName}" model.` +
|
|
69
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
59
70
|
}
|
|
60
71
|
if (this.properties[property.vectorizedFrom].type !== basic_property_type_enum_1.DyFM_BasicProperty_Type.string) {
|
|
61
72
|
throw new Error(`Vectorized from property "${property.vectorizedFrom}" is not a string property in ` +
|
|
62
|
-
`"${this.dataName}" model.`
|
|
73
|
+
`"${this.dataName}" model.` +
|
|
74
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
63
75
|
}
|
|
64
76
|
if (!property.vectorizeUseIndex) {
|
|
65
77
|
throw new Error('vectorizeUseIndex is required if vectorizedFrom is set. ' +
|
|
66
|
-
`"${this.dataName}" model.`
|
|
78
|
+
`"${this.dataName}" model.` +
|
|
79
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
67
80
|
}
|
|
68
81
|
if (!this.properties[property.vectorizeUseIndex]) {
|
|
69
82
|
throw new Error(`vectorizeUseIndex property "${property.vectorizeUseIndex}" is not found in ` +
|
|
70
|
-
`"${this.dataName}" model.`
|
|
83
|
+
`"${this.dataName}" model.` +
|
|
84
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
71
85
|
}
|
|
72
86
|
if (!this.properties[property.vectorizeUseIndex].index) {
|
|
73
87
|
throw new Error(`vectorizeUseIndex property "${property.vectorizeUseIndex}" is not an ` +
|
|
74
|
-
`index property in "${this.dataName}" model.`
|
|
88
|
+
`index property in "${this.dataName}" model.` +
|
|
89
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
75
90
|
}
|
|
76
91
|
}
|
|
77
92
|
});
|
|
@@ -98,12 +113,14 @@ class DyFM_DataModel_Params extends DyFM_DataModel_Settings {
|
|
|
98
113
|
if (RegExp(/[A-Z]/).exec(this.dataName)) {
|
|
99
114
|
log_util_1.DyFM_Log.warn('DyFM_DataModel_Params.constructor: ' +
|
|
100
115
|
`dbName should be in snake_case in "${this.dataName}" model.` +
|
|
101
|
-
'For future compatibility.'
|
|
116
|
+
'For future compatibility.' +
|
|
117
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
102
118
|
}
|
|
103
119
|
if (this.dataName.includes('-')) {
|
|
104
120
|
log_util_1.DyFM_Log.warn('DyFM_DataModel_Params.constructor: ' +
|
|
105
121
|
`dataName should be in snake_case in "${this.dataName}" model.` +
|
|
106
|
-
'For future compatibility.'
|
|
122
|
+
'For future compatibility.' +
|
|
123
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
107
124
|
}
|
|
108
125
|
}
|
|
109
126
|
constructed() {
|
|
@@ -114,7 +131,8 @@ class DyFM_DataModel_Params extends DyFM_DataModel_Settings {
|
|
|
114
131
|
Object.keys(property.subObjectParams).forEach((key) => {
|
|
115
132
|
if (!key) {
|
|
116
133
|
log_util_1.DyFM_Log.error('DyFM_DataModel_Params.setKeysForSubObjectParams: ' +
|
|
117
|
-
`A subObjectParams key is missing in "${this.dataName}" model.`
|
|
134
|
+
`A subObjectParams key is missing in "${this.dataName}" model.` +
|
|
135
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
118
136
|
}
|
|
119
137
|
property.subObjectParams[key].key = key;
|
|
120
138
|
if (property.subObjectParams[key].subObjectParams) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-model-params.control-model.js","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.ts"],"names":[],"mappings":";;;AAAA,gEAA6D;AAC7D,oFAAgF;AAChF,4EAAwE;AACxE,4EAAmE;AAKnE,MAAa,uBAAiD,SAAQ,mCAAa;IACjF;;OAEG;IACH,QAAQ,CAAS;IACjB,SAAS,CAAuB;IAChC,UAAU,CAAW;IACrB,UAAU,CAAyB;CACpC;AARD,0DAQC;AAID,MAAa,qBAA+C,SAAQ,uBAA0B;IAE5F,mDAAmD;
|
|
1
|
+
{"version":3,"file":"data-model-params.control-model.js","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,14 +23,16 @@ describe('DyFM_DataModel_Params', () => {
|
|
|
23
23
|
spyOn(log_util_1.DyFM_Log, 'error');
|
|
24
24
|
mockSettings.properties = null;
|
|
25
25
|
const params = new data_model_params_control_model_1.DyFM_DataModel_Params(mockSettings);
|
|
26
|
-
expect(log_util_1.DyFM_Log.error).toHaveBeenCalledWith('DyFM_DataModel_Params.constructor: Properties are missing in "test_model" model.'
|
|
26
|
+
expect(log_util_1.DyFM_Log.error).toHaveBeenCalledWith('DyFM_DataModel_Params.constructor: Properties are missing in "test_model" model.' +
|
|
27
|
+
`\nstackLocation: ${params.stackLocation}`);
|
|
27
28
|
expect(params.properties).toEqual({});
|
|
28
29
|
});
|
|
29
30
|
it('should log an error if a property key is missing', () => {
|
|
30
31
|
spyOn(log_util_1.DyFM_Log, 'error');
|
|
31
32
|
mockSettings.properties = { '': { key: '' } };
|
|
32
|
-
new data_model_params_control_model_1.DyFM_DataModel_Params(mockSettings);
|
|
33
|
-
expect(log_util_1.DyFM_Log.error).toHaveBeenCalledWith('DyFM_DataModel_Params.constructor: A property key is missing in "test_model" model.'
|
|
33
|
+
const params = new data_model_params_control_model_1.DyFM_DataModel_Params(mockSettings);
|
|
34
|
+
expect(log_util_1.DyFM_Log.error).toHaveBeenCalledWith('DyFM_DataModel_Params.constructor: A property key is missing in "test_model" model.' +
|
|
35
|
+
`\nstackLocation: ${params.stackLocation}`);
|
|
34
36
|
});
|
|
35
37
|
it('should set modelType to data if not provided or is data', () => {
|
|
36
38
|
const params = new data_model_params_control_model_1.DyFM_DataModel_Params(mockSettings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-model-params.control-model.spec.js","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.spec.ts"],"names":[],"mappings":";;AAAA,gEAA6D;AAC7D,4EAAwE;AACxE,4EAAmE;AACnE,uFAAmG;AAGnG,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,YAAa,SAAQ,mCAAa;KAEvC;IAED,IAAI,YAAmD,CAAC;IAExD,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,GAAG;YACb,QAAQ,EAAE,YAAY;YACtB,UAAU,EAAE,EAAuC;SACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,KAAK,CAAC,mBAAQ,EAAE,OAAO,CAAC,CAAC;QACzB,YAAY,CAAC,UAAU,GAAG,IAAW,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACzC,kFAAkF,
|
|
1
|
+
{"version":3,"file":"data-model-params.control-model.spec.js","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.spec.ts"],"names":[],"mappings":";;AAAA,gEAA6D;AAC7D,4EAAwE;AACxE,4EAAmE;AACnE,uFAAmG;AAGnG,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,YAAa,SAAQ,mCAAa;KAEvC;IAED,IAAI,YAAmD,CAAC;IAExD,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,GAAG;YACb,QAAQ,EAAE,YAAY;YACtB,UAAU,EAAE,EAAuC;SACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,KAAK,CAAC,mBAAQ,EAAE,OAAO,CAAC,CAAC;QACzB,YAAY,CAAC,UAAU,GAAG,IAAW,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACzC,kFAAkF;YAClF,oBAAoB,MAAM,CAAC,aAAa,EAAE,CAC3C,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,KAAK,CAAC,mBAAQ,EAAE,OAAO,CAAC,CAAC;QACzB,YAAY,CAAC,UAAU,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAS,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACzC,qFAAqF;YACrF,oBAAoB,MAAM,CAAC,aAAa,EAAE,CAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,0CAAmB,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/fsm-dynamo",
|
|
3
|
-
"version": "01.10.
|
|
3
|
+
"version": "01.10.27",
|
|
4
4
|
"description": "Full Stack Model Collection for Dynamic (NodeJS-Typescript) Framework called Dynamo, by Future Development Ltd.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"prep": "npm i pnpm -g && npm i rimraf nodemon -g",
|
|
@@ -29,7 +29,8 @@ describe('DyFM_DataModel_Params', () => {
|
|
|
29
29
|
mockSettings.properties = null as any;
|
|
30
30
|
const params = new DyFM_DataModel_Params(mockSettings);
|
|
31
31
|
expect(DyFM_Log.error).toHaveBeenCalledWith(
|
|
32
|
-
'DyFM_DataModel_Params.constructor: Properties are missing in "test_model" model.'
|
|
32
|
+
'DyFM_DataModel_Params.constructor: Properties are missing in "test_model" model.' +
|
|
33
|
+
`\nstackLocation: ${params.stackLocation}`
|
|
33
34
|
);
|
|
34
35
|
expect(params.properties).toEqual({});
|
|
35
36
|
});
|
|
@@ -37,9 +38,10 @@ describe('DyFM_DataModel_Params', () => {
|
|
|
37
38
|
it('should log an error if a property key is missing', () => {
|
|
38
39
|
spyOn(DyFM_Log, 'error');
|
|
39
40
|
mockSettings.properties = { '': { key: '' } } as any;
|
|
40
|
-
new DyFM_DataModel_Params(mockSettings);
|
|
41
|
+
const params = new DyFM_DataModel_Params(mockSettings);
|
|
41
42
|
expect(DyFM_Log.error).toHaveBeenCalledWith(
|
|
42
|
-
'DyFM_DataModel_Params.constructor: A property key is missing in "test_model" model.'
|
|
43
|
+
'DyFM_DataModel_Params.constructor: A property key is missing in "test_model" model.' +
|
|
44
|
+
`\nstackLocation: ${params.stackLocation}`
|
|
43
45
|
);
|
|
44
46
|
});
|
|
45
47
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DyFM_Log } from '../../_collections/utils/log.util';
|
|
2
|
+
import { DyFM_getStackLocation } from '../../_collections/utils/stack.util';
|
|
2
3
|
import { DyFM_BasicProperty_Type } from '../../_enums/basic-property-type.enum';
|
|
3
4
|
import { DyFM_DataModel_Type } from '../../_enums/data-model-type.enum';
|
|
4
5
|
import { DyFM_Metadata } from '../data-models/metadata.data-model';
|
|
@@ -21,6 +22,7 @@ export type DyFM_Data_Params<T> = DyFM_DataModel_Params<T>;
|
|
|
21
22
|
export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataModel_Settings<T> {
|
|
22
23
|
|
|
23
24
|
/* override properties?: DyFM_DataProperties<T>; */
|
|
25
|
+
readonly stackLocation: string;
|
|
24
26
|
|
|
25
27
|
constructor(
|
|
26
28
|
set: DyFM_DataModel_Settings<T>
|
|
@@ -31,30 +33,38 @@ export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataMod
|
|
|
31
33
|
Object.assign(this, set);
|
|
32
34
|
}
|
|
33
35
|
|
|
36
|
+
this.stackLocation = DyFM_getStackLocation();
|
|
37
|
+
|
|
34
38
|
if (!this.properties || typeof this.properties !== 'object') {
|
|
35
39
|
DyFM_Log.error(
|
|
36
40
|
'DyFM_DataModel_Params.constructor: ' +
|
|
37
|
-
`Properties are missing in "${this.dataName}" model.`
|
|
41
|
+
`Properties are missing in "${this.dataName}" model.` +
|
|
42
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
38
43
|
);
|
|
39
44
|
|
|
40
45
|
this.properties = {} as DyFM_DataProperties<T>;
|
|
41
46
|
}
|
|
42
47
|
|
|
43
|
-
Object.keys(this.properties)
|
|
48
|
+
const keys: string[] = Object.keys(this.properties);
|
|
49
|
+
keys.forEach((key: string): void => {
|
|
44
50
|
if (!key) {
|
|
45
51
|
DyFM_Log.error(
|
|
46
52
|
'DyFM_DataModel_Params.constructor: ' +
|
|
47
|
-
`A property key is missing in "${this.dataName}" model.`
|
|
53
|
+
`A property key is missing in "${this.dataName}" model.` +
|
|
54
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
48
55
|
);
|
|
49
56
|
}
|
|
50
57
|
|
|
51
58
|
const property: DyFM_DataProperty_Params<any> = this.properties[key];
|
|
52
59
|
property.key = key;
|
|
53
60
|
|
|
54
|
-
if (
|
|
55
|
-
this.setKeysForSubObjectParams(
|
|
61
|
+
if (property.subObjectParams) {
|
|
62
|
+
this.setKeysForSubObjectParams(property);
|
|
56
63
|
}
|
|
64
|
+
});
|
|
57
65
|
|
|
66
|
+
keys.forEach((key: string): void => {
|
|
67
|
+
const property: DyFM_DataProperty_Params<any> = this.properties[key];
|
|
58
68
|
/* if (property.vectorizeTo) {
|
|
59
69
|
if (!this.properties[property.vectorizeTo]) {
|
|
60
70
|
throw new Error(
|
|
@@ -70,7 +80,8 @@ export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataMod
|
|
|
70
80
|
if (!this.properties[property.vectorizedFrom]) {
|
|
71
81
|
throw new Error(
|
|
72
82
|
`Vectorized from property "${property.vectorizedFrom}" is not found in ` +
|
|
73
|
-
`"${this.dataName}" model.`
|
|
83
|
+
`"${this.dataName}" model.` +
|
|
84
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
74
85
|
);
|
|
75
86
|
}
|
|
76
87
|
|
|
@@ -79,35 +90,40 @@ export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataMod
|
|
|
79
90
|
if (property.type !== 'number[]') {
|
|
80
91
|
throw new Error(
|
|
81
92
|
`Vectorized from property "${property.vectorizedFrom}" is not a number[] property in ` +
|
|
82
|
-
`"${this.dataName}" model.`
|
|
93
|
+
`"${this.dataName}" model.` +
|
|
94
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
83
95
|
);
|
|
84
96
|
}
|
|
85
97
|
|
|
86
98
|
if ((this.properties[property.vectorizedFrom] as DyFM_DataProperty_Params<any>).type !== DyFM_BasicProperty_Type.string) {
|
|
87
99
|
throw new Error(
|
|
88
100
|
`Vectorized from property "${property.vectorizedFrom}" is not a string property in ` +
|
|
89
|
-
`"${this.dataName}" model.`
|
|
101
|
+
`"${this.dataName}" model.` +
|
|
102
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
90
103
|
);
|
|
91
104
|
}
|
|
92
105
|
|
|
93
106
|
if (!property.vectorizeUseIndex) {
|
|
94
107
|
throw new Error(
|
|
95
108
|
'vectorizeUseIndex is required if vectorizedFrom is set. ' +
|
|
96
|
-
`"${this.dataName}" model.`
|
|
109
|
+
`"${this.dataName}" model.` +
|
|
110
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
97
111
|
);
|
|
98
112
|
}
|
|
99
113
|
|
|
100
114
|
if (!this.properties[property.vectorizeUseIndex]) {
|
|
101
115
|
throw new Error(
|
|
102
116
|
`vectorizeUseIndex property "${property.vectorizeUseIndex}" is not found in ` +
|
|
103
|
-
`"${this.dataName}" model.`
|
|
117
|
+
`"${this.dataName}" model.` +
|
|
118
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
104
119
|
);
|
|
105
120
|
}
|
|
106
121
|
|
|
107
122
|
if (!(this.properties[property.vectorizeUseIndex] as DyFM_DataProperty_Params<any>).index) {
|
|
108
123
|
throw new Error(
|
|
109
124
|
`vectorizeUseIndex property "${property.vectorizeUseIndex}" is not an ` +
|
|
110
|
-
`index property in "${this.dataName}" model.`
|
|
125
|
+
`index property in "${this.dataName}" model.` +
|
|
126
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
111
127
|
);
|
|
112
128
|
}
|
|
113
129
|
}
|
|
@@ -139,7 +155,8 @@ export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataMod
|
|
|
139
155
|
DyFM_Log.warn(
|
|
140
156
|
'DyFM_DataModel_Params.constructor: ' +
|
|
141
157
|
`dbName should be in snake_case in "${this.dataName}" model.` +
|
|
142
|
-
'For future compatibility.'
|
|
158
|
+
'For future compatibility.' +
|
|
159
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
143
160
|
);
|
|
144
161
|
}
|
|
145
162
|
|
|
@@ -147,7 +164,8 @@ export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataMod
|
|
|
147
164
|
DyFM_Log.warn(
|
|
148
165
|
'DyFM_DataModel_Params.constructor: ' +
|
|
149
166
|
`dataName should be in snake_case in "${this.dataName}" model.` +
|
|
150
|
-
'For future compatibility.'
|
|
167
|
+
'For future compatibility.' +
|
|
168
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
151
169
|
);
|
|
152
170
|
}
|
|
153
171
|
}
|
|
@@ -162,7 +180,8 @@ export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataMod
|
|
|
162
180
|
if (!key) {
|
|
163
181
|
DyFM_Log.error(
|
|
164
182
|
'DyFM_DataModel_Params.setKeysForSubObjectParams: ' +
|
|
165
|
-
`A subObjectParams key is missing in "${this.dataName}" model.`
|
|
183
|
+
`A subObjectParams key is missing in "${this.dataName}" model.` +
|
|
184
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
166
185
|
);
|
|
167
186
|
}
|
|
168
187
|
|
|
Binary file
|