@oino-ts/common 1.0.0 → 1.0.2
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/dist/cjs/OINOApi.js +13 -12
- package/dist/cjs/OINODataField.js +2 -2
- package/dist/cjs/OINOModelSet.js +17 -17
- package/dist/esm/OINOApi.js +13 -12
- package/dist/esm/OINODataField.js +2 -2
- package/dist/esm/OINOModelSet.js +17 -17
- package/dist/types/OINOApi.d.ts +2 -0
- package/dist/types/OINODataField.d.ts +2 -2
- package/dist/types/OINODataSource.d.ts +7 -14
- package/package.json +2 -2
- package/src/OINOApi.ts +14 -12
- package/src/OINODataField.ts +2 -2
- package/src/OINODataSource.ts +7 -15
- package/src/OINOModelSet.ts +17 -17
package/dist/cjs/OINOApi.js
CHANGED
|
@@ -233,13 +233,22 @@ class OINOApiHtmlTemplate extends OINOHtmlTemplate_js_1.OINOHtmlTemplate {
|
|
|
233
233
|
last_modified = Math.max(last_modified, new Date(row[modified_index]).getTime());
|
|
234
234
|
}
|
|
235
235
|
let row_id_seed = datamodel.getRowPrimarykeyValues(row).join(' ');
|
|
236
|
-
let
|
|
236
|
+
let encoded_primary_key_values = [];
|
|
237
237
|
this.clearVariables();
|
|
238
238
|
this.setVariableFromValue(OINOConfig_js_1.OINOConfig.OINO_ID_FIELD, "");
|
|
239
239
|
for (let i = 0; i < datamodel.fields.length; i++) {
|
|
240
240
|
const f = datamodel.fields[i];
|
|
241
241
|
let value;
|
|
242
|
-
if (
|
|
242
|
+
if (f.fieldParams.isPrimaryKey || f.fieldParams.isForeignKey) {
|
|
243
|
+
value = f.serializeCell(row[i]);
|
|
244
|
+
if (value && (f instanceof OINODataField_js_1.OINONumberDataField) && (datamodel.api.hashid)) {
|
|
245
|
+
value = datamodel.api.hashid.encode(value, f.name + " " + row_id_seed);
|
|
246
|
+
}
|
|
247
|
+
if (f.fieldParams.isPrimaryKey) {
|
|
248
|
+
encoded_primary_key_values.push(value || "");
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
else if ((f instanceof OINODataField_js_1.OINODatetimeDataField) && (this._locale != null)) {
|
|
243
252
|
value = f.serializeCellWithLocale(row[i], this._locale);
|
|
244
253
|
}
|
|
245
254
|
else if ((f instanceof OINODataField_js_1.OINONumberDataField) && (this._numberDecimals >= 0) && (typeof row[i] === "number")) {
|
|
@@ -249,18 +258,10 @@ class OINOApiHtmlTemplate extends OINOHtmlTemplate_js_1.OINOHtmlTemplate {
|
|
|
249
258
|
else {
|
|
250
259
|
value = f.serializeCell(row[i]);
|
|
251
260
|
}
|
|
252
|
-
if (f.fieldParams.isPrimaryKey || f.fieldParams.isForeignKey) {
|
|
253
|
-
if (value && (f instanceof OINODataField_js_1.OINONumberDataField) && (datamodel.api.hashid)) {
|
|
254
|
-
value = datamodel.api.hashid.encode(value, f.name + " " + row_id_seed);
|
|
255
|
-
}
|
|
256
|
-
if (f.fieldParams.isPrimaryKey) {
|
|
257
|
-
primary_key_values.push(value || "");
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
261
|
this.setVariableFromValue(f.name, value || "");
|
|
261
262
|
}
|
|
262
263
|
this.setVariableFromProperties(overrideValues);
|
|
263
|
-
this.setVariableFromValue(OINOConfig_js_1.OINOConfig.OINO_ID_FIELD, OINOConfig_js_1.OINOConfig.printOINOId(
|
|
264
|
+
this.setVariableFromValue(OINOConfig_js_1.OINOConfig.OINO_ID_FIELD, OINOConfig_js_1.OINOConfig.printOINOId(encoded_primary_key_values));
|
|
264
265
|
html += this._renderHtml() + "\r\n";
|
|
265
266
|
await dataset.next();
|
|
266
267
|
}
|
|
@@ -292,7 +293,7 @@ class OINOApi {
|
|
|
292
293
|
this.datasource = datasource;
|
|
293
294
|
this.params = params;
|
|
294
295
|
if (this.params.hashidKey) {
|
|
295
|
-
this.hashid = new hashid_1.OINOHashid(this.params.hashidKey, this.params.apiName, this.params.hashidLength, this.params.hashidStaticIds);
|
|
296
|
+
this.hashid = new hashid_1.OINOHashid(this.params.hashidKey, this.params.hashidDomain || this.params.apiName, this.params.hashidLength, this.params.hashidStaticIds);
|
|
296
297
|
}
|
|
297
298
|
else {
|
|
298
299
|
this.hashid = null;
|
|
@@ -79,10 +79,10 @@ class OINODataField {
|
|
|
79
79
|
return this.datasource.printCellAsValue(cellVal, this.nativeType);
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
|
-
* Print name of
|
|
82
|
+
* Print name of the field in datasource specific format.
|
|
83
83
|
*
|
|
84
84
|
*/
|
|
85
|
-
|
|
85
|
+
printFieldName() {
|
|
86
86
|
return this.datasource.printColumnName(this.name);
|
|
87
87
|
}
|
|
88
88
|
}
|
package/dist/cjs/OINOModelSet.js
CHANGED
|
@@ -40,14 +40,14 @@ class OINOModelSet {
|
|
|
40
40
|
this.queryParams = queryParams;
|
|
41
41
|
this.errors = this.dataset.messages;
|
|
42
42
|
}
|
|
43
|
-
_encodeAndHashFieldValue(field, value, contentType,
|
|
43
|
+
_encodeAndHashFieldValue(field, value, contentType, primaryKeyValuesEncoded, rowIdSeed) {
|
|
44
44
|
let result;
|
|
45
45
|
if (field.fieldParams.isPrimaryKey || field.fieldParams.isForeignKey) {
|
|
46
46
|
if (value && (field instanceof OINODataField_js_1.OINONumberDataField) && (this.datamodel.api.hashid) && ((this.queryParams?.aggregate === undefined) || (this.queryParams.aggregate.isAggregated(field.name) == false))) {
|
|
47
47
|
value = this.datamodel.api.hashid.encode(value, rowIdSeed);
|
|
48
48
|
}
|
|
49
49
|
if (field.fieldParams.isPrimaryKey) {
|
|
50
|
-
|
|
50
|
+
primaryKeyValuesEncoded.push(value || "");
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
result = OINOStr_js_1.OINOStr.encode(value, contentType);
|
|
@@ -58,7 +58,7 @@ class OINOModelSet {
|
|
|
58
58
|
const model = this.datamodel;
|
|
59
59
|
const fields = model.fields;
|
|
60
60
|
let row_id_seed = model.getRowPrimarykeyValues(row).join(' ');
|
|
61
|
-
let
|
|
61
|
+
let encoded_primary_key_values = [];
|
|
62
62
|
let json_row = "";
|
|
63
63
|
for (let i = 0; i < fields.length; i++) {
|
|
64
64
|
const f = fields[i];
|
|
@@ -75,14 +75,14 @@ class OINOModelSet {
|
|
|
75
75
|
else {
|
|
76
76
|
let is_hashed = (f.fieldParams.isPrimaryKey || f.fieldParams.isForeignKey) && (f instanceof OINODataField_js_1.OINONumberDataField) && (this.datamodel.api.hashid != null);
|
|
77
77
|
let is_value = (f instanceof OINODataField_js_1.OINOBooleanDataField) || ((f instanceof OINODataField_js_1.OINONumberDataField) && !is_hashed);
|
|
78
|
-
value = this._encodeAndHashFieldValue(f, value, OINOConstants_js_1.OINOContentType.json,
|
|
78
|
+
value = this._encodeAndHashFieldValue(f, value, OINOConstants_js_1.OINOContentType.json, encoded_primary_key_values, f.name + " " + row_id_seed);
|
|
79
79
|
if (is_value) {
|
|
80
80
|
value = value.substring(1, value.length - 1);
|
|
81
81
|
}
|
|
82
82
|
json_row += "," + OINOStr_js_1.OINOStr.encode(f.name, OINOConstants_js_1.OINOContentType.json) + ":" + value;
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
json_row = OINOStr_js_1.OINOStr.encode(OINOConfig_js_1.OINOConfig.OINO_ID_FIELD, OINOConstants_js_1.OINOContentType.json) + ":" + OINOStr_js_1.OINOStr.encode(OINOConfig_js_1.OINOConfig.printOINOId(
|
|
85
|
+
json_row = OINOStr_js_1.OINOStr.encode(OINOConfig_js_1.OINOConfig.OINO_ID_FIELD, OINOConstants_js_1.OINOContentType.json) + ":" + OINOStr_js_1.OINOStr.encode(OINOConfig_js_1.OINOConfig.printOINOId(encoded_primary_key_values), OINOConstants_js_1.OINOContentType.json) + json_row;
|
|
86
86
|
return "{" + json_row + "}";
|
|
87
87
|
}
|
|
88
88
|
async _writeStringJson() {
|
|
@@ -114,7 +114,7 @@ class OINOModelSet {
|
|
|
114
114
|
const model = this.datamodel;
|
|
115
115
|
const fields = model.fields;
|
|
116
116
|
let row_id_seed = model.getRowPrimarykeyValues(row).join(' ');
|
|
117
|
-
let
|
|
117
|
+
let encoded_primary_key_values = [];
|
|
118
118
|
let csv_row = "";
|
|
119
119
|
for (let i = 0; i < fields.length; i++) {
|
|
120
120
|
const f = fields[i];
|
|
@@ -126,11 +126,11 @@ class OINOModelSet {
|
|
|
126
126
|
csv_row += "," + OINOStr_js_1.OINOStr.encode(value, OINOConstants_js_1.OINOContentType.csv); // either null or undefined
|
|
127
127
|
}
|
|
128
128
|
else {
|
|
129
|
-
value = this._encodeAndHashFieldValue(f, value, OINOConstants_js_1.OINOContentType.csv,
|
|
129
|
+
value = this._encodeAndHashFieldValue(f, value, OINOConstants_js_1.OINOContentType.csv, encoded_primary_key_values, f.name + " " + row_id_seed);
|
|
130
130
|
csv_row += "," + value;
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
|
-
csv_row = OINOStr_js_1.OINOStr.encode(OINOConfig_js_1.OINOConfig.printOINOId(
|
|
133
|
+
csv_row = OINOStr_js_1.OINOStr.encode(OINOConfig_js_1.OINOConfig.printOINOId(encoded_primary_key_values), OINOConstants_js_1.OINOContentType.csv) + csv_row;
|
|
134
134
|
return csv_row;
|
|
135
135
|
}
|
|
136
136
|
async _writeStringCsv() {
|
|
@@ -161,7 +161,7 @@ class OINOModelSet {
|
|
|
161
161
|
const model = this.datamodel;
|
|
162
162
|
const fields = model.fields;
|
|
163
163
|
let row_id_seed = model.getRowPrimarykeyValues(row).join(' ');
|
|
164
|
-
let
|
|
164
|
+
let encoded_primary_key_values = [];
|
|
165
165
|
let result = "";
|
|
166
166
|
for (let i = 0; i < fields.length; i++) {
|
|
167
167
|
const f = fields[i];
|
|
@@ -178,7 +178,7 @@ class OINOModelSet {
|
|
|
178
178
|
formdata_block = this._writeRowFormdataParameterBlock(fields[i].name, null, multipart_boundary);
|
|
179
179
|
}
|
|
180
180
|
else {
|
|
181
|
-
value = this._encodeAndHashFieldValue(f, value, OINOConstants_js_1.OINOContentType.formdata,
|
|
181
|
+
value = this._encodeAndHashFieldValue(f, value, OINOConstants_js_1.OINOContentType.formdata, encoded_primary_key_values, f.name + " " + row_id_seed);
|
|
182
182
|
if (is_file) {
|
|
183
183
|
formdata_block = this._writeRowFormdataFileBlock(f.name, value, multipart_boundary);
|
|
184
184
|
}
|
|
@@ -188,7 +188,7 @@ class OINOModelSet {
|
|
|
188
188
|
}
|
|
189
189
|
result += formdata_block;
|
|
190
190
|
}
|
|
191
|
-
result = this._writeRowFormdataParameterBlock(OINOConfig_js_1.OINOConfig.OINO_ID_FIELD, OINOConfig_js_1.OINOConfig.printOINOId(
|
|
191
|
+
result = this._writeRowFormdataParameterBlock(OINOConfig_js_1.OINOConfig.OINO_ID_FIELD, OINOConfig_js_1.OINOConfig.printOINOId(encoded_primary_key_values), multipart_boundary) + result;
|
|
192
192
|
return result;
|
|
193
193
|
}
|
|
194
194
|
_writeStringFormdata() {
|
|
@@ -200,7 +200,7 @@ class OINOModelSet {
|
|
|
200
200
|
const model = this.datamodel;
|
|
201
201
|
const fields = model.fields;
|
|
202
202
|
let row_id_seed = model.getRowPrimarykeyValues(row).join(' ');
|
|
203
|
-
let
|
|
203
|
+
let encoded_primary_key_values = [];
|
|
204
204
|
let urlencode_row = "";
|
|
205
205
|
for (let i = 0; i < fields.length; i++) {
|
|
206
206
|
const f = fields[i];
|
|
@@ -212,14 +212,14 @@ class OINOModelSet {
|
|
|
212
212
|
// console.log("OINOModelSet._writeRowUrlencode undefined field value:" + fields[i].name)
|
|
213
213
|
}
|
|
214
214
|
else {
|
|
215
|
-
value = this._encodeAndHashFieldValue(f, value, OINOConstants_js_1.OINOContentType.urlencode,
|
|
215
|
+
value = this._encodeAndHashFieldValue(f, value, OINOConstants_js_1.OINOContentType.urlencode, encoded_primary_key_values, f.name + " " + row_id_seed);
|
|
216
216
|
if (urlencode_row != "") {
|
|
217
217
|
urlencode_row += "&";
|
|
218
218
|
}
|
|
219
219
|
urlencode_row += OINOStr_js_1.OINOStr.encode(f.name, OINOConstants_js_1.OINOContentType.urlencode) + "=" + value;
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
|
-
urlencode_row = OINOStr_js_1.OINOStr.encode(OINOConfig_js_1.OINOConfig.OINO_ID_FIELD, OINOConstants_js_1.OINOContentType.urlencode) + "=" + OINOStr_js_1.OINOStr.encode(OINOConfig_js_1.OINOConfig.printOINOId(
|
|
222
|
+
urlencode_row = OINOStr_js_1.OINOStr.encode(OINOConfig_js_1.OINOConfig.OINO_ID_FIELD, OINOConstants_js_1.OINOContentType.urlencode) + "=" + OINOStr_js_1.OINOStr.encode(OINOConfig_js_1.OINOConfig.printOINOId(encoded_primary_key_values), OINOConstants_js_1.OINOContentType.urlencode) + "&" + urlencode_row;
|
|
223
223
|
return urlencode_row;
|
|
224
224
|
}
|
|
225
225
|
async _writeStringUrlencode() {
|
|
@@ -241,12 +241,12 @@ class OINOModelSet {
|
|
|
241
241
|
const model = this.datamodel;
|
|
242
242
|
const fields = model.fields;
|
|
243
243
|
let row_id_seed = model.getRowPrimarykeyValues(row).join(' ');
|
|
244
|
-
let
|
|
244
|
+
let encoded_primary_key_values = [];
|
|
245
245
|
let result = {};
|
|
246
246
|
for (let i = 0; i < fields.length; i++) {
|
|
247
247
|
const f = fields[i];
|
|
248
248
|
if (f.fieldParams.isPrimaryKey) {
|
|
249
|
-
|
|
249
|
+
encoded_primary_key_values.push(f.serializeCell(row[i]) || "");
|
|
250
250
|
}
|
|
251
251
|
if ((this.queryParams?.select?.isSelected(f.name) === false) && (f.fieldParams.isPrimaryKey == false)) {
|
|
252
252
|
continue;
|
|
@@ -262,7 +262,7 @@ class OINOModelSet {
|
|
|
262
262
|
result[f.name] = value;
|
|
263
263
|
}
|
|
264
264
|
}
|
|
265
|
-
result[OINOConfig_js_1.OINOConfig.OINO_ID_FIELD] = OINOConfig_js_1.OINOConfig.printOINOId(
|
|
265
|
+
result[OINOConfig_js_1.OINOConfig.OINO_ID_FIELD] = OINOConfig_js_1.OINOConfig.printOINOId(encoded_primary_key_values);
|
|
266
266
|
return result;
|
|
267
267
|
}
|
|
268
268
|
/**
|
package/dist/esm/OINOApi.js
CHANGED
|
@@ -228,13 +228,22 @@ export class OINOApiHtmlTemplate extends OINOHtmlTemplate {
|
|
|
228
228
|
last_modified = Math.max(last_modified, new Date(row[modified_index]).getTime());
|
|
229
229
|
}
|
|
230
230
|
let row_id_seed = datamodel.getRowPrimarykeyValues(row).join(' ');
|
|
231
|
-
let
|
|
231
|
+
let encoded_primary_key_values = [];
|
|
232
232
|
this.clearVariables();
|
|
233
233
|
this.setVariableFromValue(OINOConfig.OINO_ID_FIELD, "");
|
|
234
234
|
for (let i = 0; i < datamodel.fields.length; i++) {
|
|
235
235
|
const f = datamodel.fields[i];
|
|
236
236
|
let value;
|
|
237
|
-
if (
|
|
237
|
+
if (f.fieldParams.isPrimaryKey || f.fieldParams.isForeignKey) {
|
|
238
|
+
value = f.serializeCell(row[i]);
|
|
239
|
+
if (value && (f instanceof OINONumberDataField) && (datamodel.api.hashid)) {
|
|
240
|
+
value = datamodel.api.hashid.encode(value, f.name + " " + row_id_seed);
|
|
241
|
+
}
|
|
242
|
+
if (f.fieldParams.isPrimaryKey) {
|
|
243
|
+
encoded_primary_key_values.push(value || "");
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
else if ((f instanceof OINODatetimeDataField) && (this._locale != null)) {
|
|
238
247
|
value = f.serializeCellWithLocale(row[i], this._locale);
|
|
239
248
|
}
|
|
240
249
|
else if ((f instanceof OINONumberDataField) && (this._numberDecimals >= 0) && (typeof row[i] === "number")) {
|
|
@@ -244,18 +253,10 @@ export class OINOApiHtmlTemplate extends OINOHtmlTemplate {
|
|
|
244
253
|
else {
|
|
245
254
|
value = f.serializeCell(row[i]);
|
|
246
255
|
}
|
|
247
|
-
if (f.fieldParams.isPrimaryKey || f.fieldParams.isForeignKey) {
|
|
248
|
-
if (value && (f instanceof OINONumberDataField) && (datamodel.api.hashid)) {
|
|
249
|
-
value = datamodel.api.hashid.encode(value, f.name + " " + row_id_seed);
|
|
250
|
-
}
|
|
251
|
-
if (f.fieldParams.isPrimaryKey) {
|
|
252
|
-
primary_key_values.push(value || "");
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
256
|
this.setVariableFromValue(f.name, value || "");
|
|
256
257
|
}
|
|
257
258
|
this.setVariableFromProperties(overrideValues);
|
|
258
|
-
this.setVariableFromValue(OINOConfig.OINO_ID_FIELD, OINOConfig.printOINOId(
|
|
259
|
+
this.setVariableFromValue(OINOConfig.OINO_ID_FIELD, OINOConfig.printOINOId(encoded_primary_key_values));
|
|
259
260
|
html += this._renderHtml() + "\r\n";
|
|
260
261
|
await dataset.next();
|
|
261
262
|
}
|
|
@@ -286,7 +287,7 @@ export class OINOApi {
|
|
|
286
287
|
this.datasource = datasource;
|
|
287
288
|
this.params = params;
|
|
288
289
|
if (this.params.hashidKey) {
|
|
289
|
-
this.hashid = new OINOHashid(this.params.hashidKey, this.params.apiName, this.params.hashidLength, this.params.hashidStaticIds);
|
|
290
|
+
this.hashid = new OINOHashid(this.params.hashidKey, this.params.hashidDomain || this.params.apiName, this.params.hashidLength, this.params.hashidStaticIds);
|
|
290
291
|
}
|
|
291
292
|
else {
|
|
292
293
|
this.hashid = null;
|
|
@@ -76,10 +76,10 @@ export class OINODataField {
|
|
|
76
76
|
return this.datasource.printCellAsValue(cellVal, this.nativeType);
|
|
77
77
|
}
|
|
78
78
|
/**
|
|
79
|
-
* Print name of
|
|
79
|
+
* Print name of the field in datasource specific format.
|
|
80
80
|
*
|
|
81
81
|
*/
|
|
82
|
-
|
|
82
|
+
printFieldName() {
|
|
83
83
|
return this.datasource.printColumnName(this.name);
|
|
84
84
|
}
|
|
85
85
|
}
|
package/dist/esm/OINOModelSet.js
CHANGED
|
@@ -37,14 +37,14 @@ export class OINOModelSet {
|
|
|
37
37
|
this.queryParams = queryParams;
|
|
38
38
|
this.errors = this.dataset.messages;
|
|
39
39
|
}
|
|
40
|
-
_encodeAndHashFieldValue(field, value, contentType,
|
|
40
|
+
_encodeAndHashFieldValue(field, value, contentType, primaryKeyValuesEncoded, rowIdSeed) {
|
|
41
41
|
let result;
|
|
42
42
|
if (field.fieldParams.isPrimaryKey || field.fieldParams.isForeignKey) {
|
|
43
43
|
if (value && (field instanceof OINONumberDataField) && (this.datamodel.api.hashid) && ((this.queryParams?.aggregate === undefined) || (this.queryParams.aggregate.isAggregated(field.name) == false))) {
|
|
44
44
|
value = this.datamodel.api.hashid.encode(value, rowIdSeed);
|
|
45
45
|
}
|
|
46
46
|
if (field.fieldParams.isPrimaryKey) {
|
|
47
|
-
|
|
47
|
+
primaryKeyValuesEncoded.push(value || "");
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
result = OINOStr.encode(value, contentType);
|
|
@@ -55,7 +55,7 @@ export class OINOModelSet {
|
|
|
55
55
|
const model = this.datamodel;
|
|
56
56
|
const fields = model.fields;
|
|
57
57
|
let row_id_seed = model.getRowPrimarykeyValues(row).join(' ');
|
|
58
|
-
let
|
|
58
|
+
let encoded_primary_key_values = [];
|
|
59
59
|
let json_row = "";
|
|
60
60
|
for (let i = 0; i < fields.length; i++) {
|
|
61
61
|
const f = fields[i];
|
|
@@ -72,14 +72,14 @@ export class OINOModelSet {
|
|
|
72
72
|
else {
|
|
73
73
|
let is_hashed = (f.fieldParams.isPrimaryKey || f.fieldParams.isForeignKey) && (f instanceof OINONumberDataField) && (this.datamodel.api.hashid != null);
|
|
74
74
|
let is_value = (f instanceof OINOBooleanDataField) || ((f instanceof OINONumberDataField) && !is_hashed);
|
|
75
|
-
value = this._encodeAndHashFieldValue(f, value, OINOContentType.json,
|
|
75
|
+
value = this._encodeAndHashFieldValue(f, value, OINOContentType.json, encoded_primary_key_values, f.name + " " + row_id_seed);
|
|
76
76
|
if (is_value) {
|
|
77
77
|
value = value.substring(1, value.length - 1);
|
|
78
78
|
}
|
|
79
79
|
json_row += "," + OINOStr.encode(f.name, OINOContentType.json) + ":" + value;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
json_row = OINOStr.encode(OINOConfig.OINO_ID_FIELD, OINOContentType.json) + ":" + OINOStr.encode(OINOConfig.printOINOId(
|
|
82
|
+
json_row = OINOStr.encode(OINOConfig.OINO_ID_FIELD, OINOContentType.json) + ":" + OINOStr.encode(OINOConfig.printOINOId(encoded_primary_key_values), OINOContentType.json) + json_row;
|
|
83
83
|
return "{" + json_row + "}";
|
|
84
84
|
}
|
|
85
85
|
async _writeStringJson() {
|
|
@@ -111,7 +111,7 @@ export class OINOModelSet {
|
|
|
111
111
|
const model = this.datamodel;
|
|
112
112
|
const fields = model.fields;
|
|
113
113
|
let row_id_seed = model.getRowPrimarykeyValues(row).join(' ');
|
|
114
|
-
let
|
|
114
|
+
let encoded_primary_key_values = [];
|
|
115
115
|
let csv_row = "";
|
|
116
116
|
for (let i = 0; i < fields.length; i++) {
|
|
117
117
|
const f = fields[i];
|
|
@@ -123,11 +123,11 @@ export class OINOModelSet {
|
|
|
123
123
|
csv_row += "," + OINOStr.encode(value, OINOContentType.csv); // either null or undefined
|
|
124
124
|
}
|
|
125
125
|
else {
|
|
126
|
-
value = this._encodeAndHashFieldValue(f, value, OINOContentType.csv,
|
|
126
|
+
value = this._encodeAndHashFieldValue(f, value, OINOContentType.csv, encoded_primary_key_values, f.name + " " + row_id_seed);
|
|
127
127
|
csv_row += "," + value;
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
|
-
csv_row = OINOStr.encode(OINOConfig.printOINOId(
|
|
130
|
+
csv_row = OINOStr.encode(OINOConfig.printOINOId(encoded_primary_key_values), OINOContentType.csv) + csv_row;
|
|
131
131
|
return csv_row;
|
|
132
132
|
}
|
|
133
133
|
async _writeStringCsv() {
|
|
@@ -158,7 +158,7 @@ export class OINOModelSet {
|
|
|
158
158
|
const model = this.datamodel;
|
|
159
159
|
const fields = model.fields;
|
|
160
160
|
let row_id_seed = model.getRowPrimarykeyValues(row).join(' ');
|
|
161
|
-
let
|
|
161
|
+
let encoded_primary_key_values = [];
|
|
162
162
|
let result = "";
|
|
163
163
|
for (let i = 0; i < fields.length; i++) {
|
|
164
164
|
const f = fields[i];
|
|
@@ -175,7 +175,7 @@ export class OINOModelSet {
|
|
|
175
175
|
formdata_block = this._writeRowFormdataParameterBlock(fields[i].name, null, multipart_boundary);
|
|
176
176
|
}
|
|
177
177
|
else {
|
|
178
|
-
value = this._encodeAndHashFieldValue(f, value, OINOContentType.formdata,
|
|
178
|
+
value = this._encodeAndHashFieldValue(f, value, OINOContentType.formdata, encoded_primary_key_values, f.name + " " + row_id_seed);
|
|
179
179
|
if (is_file) {
|
|
180
180
|
formdata_block = this._writeRowFormdataFileBlock(f.name, value, multipart_boundary);
|
|
181
181
|
}
|
|
@@ -185,7 +185,7 @@ export class OINOModelSet {
|
|
|
185
185
|
}
|
|
186
186
|
result += formdata_block;
|
|
187
187
|
}
|
|
188
|
-
result = this._writeRowFormdataParameterBlock(OINOConfig.OINO_ID_FIELD, OINOConfig.printOINOId(
|
|
188
|
+
result = this._writeRowFormdataParameterBlock(OINOConfig.OINO_ID_FIELD, OINOConfig.printOINOId(encoded_primary_key_values), multipart_boundary) + result;
|
|
189
189
|
return result;
|
|
190
190
|
}
|
|
191
191
|
_writeStringFormdata() {
|
|
@@ -197,7 +197,7 @@ export class OINOModelSet {
|
|
|
197
197
|
const model = this.datamodel;
|
|
198
198
|
const fields = model.fields;
|
|
199
199
|
let row_id_seed = model.getRowPrimarykeyValues(row).join(' ');
|
|
200
|
-
let
|
|
200
|
+
let encoded_primary_key_values = [];
|
|
201
201
|
let urlencode_row = "";
|
|
202
202
|
for (let i = 0; i < fields.length; i++) {
|
|
203
203
|
const f = fields[i];
|
|
@@ -209,14 +209,14 @@ export class OINOModelSet {
|
|
|
209
209
|
// console.log("OINOModelSet._writeRowUrlencode undefined field value:" + fields[i].name)
|
|
210
210
|
}
|
|
211
211
|
else {
|
|
212
|
-
value = this._encodeAndHashFieldValue(f, value, OINOContentType.urlencode,
|
|
212
|
+
value = this._encodeAndHashFieldValue(f, value, OINOContentType.urlencode, encoded_primary_key_values, f.name + " " + row_id_seed);
|
|
213
213
|
if (urlencode_row != "") {
|
|
214
214
|
urlencode_row += "&";
|
|
215
215
|
}
|
|
216
216
|
urlencode_row += OINOStr.encode(f.name, OINOContentType.urlencode) + "=" + value;
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
|
-
urlencode_row = OINOStr.encode(OINOConfig.OINO_ID_FIELD, OINOContentType.urlencode) + "=" + OINOStr.encode(OINOConfig.printOINOId(
|
|
219
|
+
urlencode_row = OINOStr.encode(OINOConfig.OINO_ID_FIELD, OINOContentType.urlencode) + "=" + OINOStr.encode(OINOConfig.printOINOId(encoded_primary_key_values), OINOContentType.urlencode) + "&" + urlencode_row;
|
|
220
220
|
return urlencode_row;
|
|
221
221
|
}
|
|
222
222
|
async _writeStringUrlencode() {
|
|
@@ -238,12 +238,12 @@ export class OINOModelSet {
|
|
|
238
238
|
const model = this.datamodel;
|
|
239
239
|
const fields = model.fields;
|
|
240
240
|
let row_id_seed = model.getRowPrimarykeyValues(row).join(' ');
|
|
241
|
-
let
|
|
241
|
+
let encoded_primary_key_values = [];
|
|
242
242
|
let result = {};
|
|
243
243
|
for (let i = 0; i < fields.length; i++) {
|
|
244
244
|
const f = fields[i];
|
|
245
245
|
if (f.fieldParams.isPrimaryKey) {
|
|
246
|
-
|
|
246
|
+
encoded_primary_key_values.push(f.serializeCell(row[i]) || "");
|
|
247
247
|
}
|
|
248
248
|
if ((this.queryParams?.select?.isSelected(f.name) === false) && (f.fieldParams.isPrimaryKey == false)) {
|
|
249
249
|
continue;
|
|
@@ -259,7 +259,7 @@ export class OINOModelSet {
|
|
|
259
259
|
result[f.name] = value;
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
|
-
result[OINOConfig.OINO_ID_FIELD] = OINOConfig.printOINOId(
|
|
262
|
+
result[OINOConfig.OINO_ID_FIELD] = OINOConfig.printOINOId(encoded_primary_key_values);
|
|
263
263
|
return result;
|
|
264
264
|
}
|
|
265
265
|
/**
|
package/dist/types/OINOApi.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ export type OINOApiParams = {
|
|
|
38
38
|
hashidLength?: number;
|
|
39
39
|
/** Make hashids static per row/table */
|
|
40
40
|
hashidStaticIds?: boolean;
|
|
41
|
+
/** Defaults to api name but should be set to a domain unique value among those apis that need hashids to be compatible (e.g. hashid of a foreign key works in the main api) */
|
|
42
|
+
hashidDomain?: string;
|
|
41
43
|
/** Name of field that has the modified field */
|
|
42
44
|
cacheModifiedField?: string;
|
|
43
45
|
/** Return inserted id values */
|
|
@@ -51,10 +51,10 @@ export declare class OINODataField {
|
|
|
51
51
|
*/
|
|
52
52
|
printCellAsValue(cellVal: OINODataCell): string;
|
|
53
53
|
/**
|
|
54
|
-
* Print name of
|
|
54
|
+
* Print name of the field in datasource specific format.
|
|
55
55
|
*
|
|
56
56
|
*/
|
|
57
|
-
|
|
57
|
+
printFieldName(): string;
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Specialised class for a string column.
|
|
@@ -25,28 +25,21 @@ export declare abstract class OINODataSource {
|
|
|
25
25
|
*/
|
|
26
26
|
abstract disconnect(): Promise<void>;
|
|
27
27
|
/**
|
|
28
|
-
* Print a
|
|
28
|
+
* Print a column name with correct datasource specific formatting.
|
|
29
29
|
*
|
|
30
|
-
* @param
|
|
30
|
+
* @param column name of the column
|
|
31
31
|
*
|
|
32
32
|
*/
|
|
33
|
-
abstract
|
|
34
|
-
/**
|
|
35
|
-
* Print a column name with correct SQL escaping.
|
|
36
|
-
*
|
|
37
|
-
* @param sqlColumn name of the column
|
|
38
|
-
*
|
|
39
|
-
*/
|
|
40
|
-
abstract printColumnName(sqlColumn: string): string;
|
|
33
|
+
abstract printColumnName(column: string): string;
|
|
41
34
|
/**
|
|
42
35
|
* Print a single data value from serialization using the context of the native data
|
|
43
36
|
* type with the correct SQL escaping.
|
|
44
37
|
*
|
|
45
38
|
* @param cellValue data from sql results
|
|
46
|
-
* @param
|
|
39
|
+
* @param nativeType native type name for table column
|
|
47
40
|
*
|
|
48
41
|
*/
|
|
49
|
-
abstract printCellAsValue(cellValue: OINODataCell,
|
|
42
|
+
abstract printCellAsValue(cellValue: OINODataCell, nativeType: string): string;
|
|
50
43
|
/**
|
|
51
44
|
* Print a single string value as valid sql literal
|
|
52
45
|
*
|
|
@@ -59,10 +52,10 @@ export declare abstract class OINODataSource {
|
|
|
59
52
|
* type.
|
|
60
53
|
*
|
|
61
54
|
* @param sqlValue data from serialization
|
|
62
|
-
* @param
|
|
55
|
+
* @param nativeType native type name for table column
|
|
63
56
|
*
|
|
64
57
|
*/
|
|
65
|
-
abstract parseValueAsCell(sqlValue: OINODataCell,
|
|
58
|
+
abstract parseValueAsCell(sqlValue: OINODataCell, nativeType: string): OINODataCell;
|
|
66
59
|
/**
|
|
67
60
|
* Initialize a data model by getting the SQL schema and populating OINODataFields of
|
|
68
61
|
* the model.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oino-ts/common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "OINO TS package for common classes.",
|
|
5
5
|
"author": "Matias Kiviniemi (pragmatta)",
|
|
6
6
|
"license": "MPL-2.0",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@oino-ts/types": "1.0.
|
|
22
|
+
"@oino-ts/types": "1.0.2",
|
|
23
23
|
"@types/node": "^22.0.0",
|
|
24
24
|
"typescript": "~5.9.0"
|
|
25
25
|
},
|
package/src/OINOApi.ts
CHANGED
|
@@ -41,6 +41,8 @@ export type OINOApiParams = {
|
|
|
41
41
|
hashidLength?:number,
|
|
42
42
|
/** Make hashids static per row/table */
|
|
43
43
|
hashidStaticIds?: boolean,
|
|
44
|
+
/** Defaults to api name but should be set to a domain unique value among those apis that need hashids to be compatible (e.g. hashid of a foreign key works in the main api) */
|
|
45
|
+
hashidDomain?: string,
|
|
44
46
|
/** Name of field that has the modified field */
|
|
45
47
|
cacheModifiedField?:string,
|
|
46
48
|
/** Return inserted id values */
|
|
@@ -282,13 +284,21 @@ export class OINOApiHtmlTemplate extends OINOHtmlTemplate {
|
|
|
282
284
|
last_modified = Math.max(last_modified, new Date(row[modified_index] as Date).getTime())
|
|
283
285
|
}
|
|
284
286
|
let row_id_seed:string = datamodel.getRowPrimarykeyValues(row).join(' ')
|
|
285
|
-
let
|
|
287
|
+
let encoded_primary_key_values:string[] = []
|
|
286
288
|
this.clearVariables()
|
|
287
289
|
this.setVariableFromValue(OINOConfig.OINO_ID_FIELD, "")
|
|
288
290
|
for (let i=0; i<datamodel.fields.length; i++) {
|
|
289
291
|
const f:OINODataField = datamodel.fields[i]
|
|
290
292
|
let value:string|null|undefined
|
|
291
|
-
if (
|
|
293
|
+
if (f.fieldParams.isPrimaryKey || f.fieldParams.isForeignKey) {
|
|
294
|
+
value = f.serializeCell(row[i])
|
|
295
|
+
if (value && (f instanceof OINONumberDataField) && (datamodel.api.hashid)) {
|
|
296
|
+
value = datamodel.api.hashid.encode(value, f.name + " " + row_id_seed)
|
|
297
|
+
}
|
|
298
|
+
if (f.fieldParams.isPrimaryKey) {
|
|
299
|
+
encoded_primary_key_values.push(value || "")
|
|
300
|
+
}
|
|
301
|
+
} else if ((f instanceof OINODatetimeDataField) && (this._locale != null)) {
|
|
292
302
|
value = f.serializeCellWithLocale(row[i], this._locale)
|
|
293
303
|
|
|
294
304
|
} else if ((f instanceof OINONumberDataField) && (this._numberDecimals >= 0) && (typeof row[i] === "number")) {
|
|
@@ -298,18 +308,10 @@ export class OINOApiHtmlTemplate extends OINOHtmlTemplate {
|
|
|
298
308
|
} else {
|
|
299
309
|
value = f.serializeCell(row[i])
|
|
300
310
|
}
|
|
301
|
-
if (f.fieldParams.isPrimaryKey || f.fieldParams.isForeignKey) {
|
|
302
|
-
if (value && (f instanceof OINONumberDataField) && (datamodel.api.hashid)) {
|
|
303
|
-
value = datamodel.api.hashid.encode(value, f.name + " " + row_id_seed)
|
|
304
|
-
}
|
|
305
|
-
if (f.fieldParams.isPrimaryKey) {
|
|
306
|
-
primary_key_values.push(value || "")
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
311
|
this.setVariableFromValue(f.name, value || "")
|
|
310
312
|
}
|
|
311
313
|
this.setVariableFromProperties(overrideValues)
|
|
312
|
-
this.setVariableFromValue(OINOConfig.OINO_ID_FIELD, OINOConfig.printOINOId(
|
|
314
|
+
this.setVariableFromValue(OINOConfig.OINO_ID_FIELD, OINOConfig.printOINOId(encoded_primary_key_values))
|
|
313
315
|
html += this._renderHtml() + "\r\n"
|
|
314
316
|
await dataset.next()
|
|
315
317
|
}
|
|
@@ -350,7 +352,7 @@ export abstract class OINOApi {
|
|
|
350
352
|
this.params = params
|
|
351
353
|
|
|
352
354
|
if (this.params.hashidKey) {
|
|
353
|
-
this.hashid = new OINOHashid(this.params.hashidKey, this.params.apiName, this.params.hashidLength, this.params.hashidStaticIds)
|
|
355
|
+
this.hashid = new OINOHashid(this.params.hashidKey, this.params.hashidDomain || this.params.apiName, this.params.hashidLength, this.params.hashidStaticIds)
|
|
354
356
|
} else {
|
|
355
357
|
this.hashid = null
|
|
356
358
|
}
|
package/src/OINODataField.ts
CHANGED
|
@@ -89,10 +89,10 @@ export class OINODataField {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
|
-
* Print name of
|
|
92
|
+
* Print name of the field in datasource specific format.
|
|
93
93
|
*
|
|
94
94
|
*/
|
|
95
|
-
|
|
95
|
+
printFieldName():string {
|
|
96
96
|
return this.datasource.printColumnName(this.name)
|
|
97
97
|
}
|
|
98
98
|
}
|
package/src/OINODataSource.ts
CHANGED
|
@@ -31,30 +31,22 @@ export abstract class OINODataSource {
|
|
|
31
31
|
abstract disconnect(): Promise<void>
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
-
* Print a
|
|
34
|
+
* Print a column name with correct datasource specific formatting.
|
|
35
35
|
*
|
|
36
|
-
* @param
|
|
36
|
+
* @param column name of the column
|
|
37
37
|
*
|
|
38
38
|
*/
|
|
39
|
-
abstract
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Print a column name with correct SQL escaping.
|
|
43
|
-
*
|
|
44
|
-
* @param sqlColumn name of the column
|
|
45
|
-
*
|
|
46
|
-
*/
|
|
47
|
-
abstract printColumnName(sqlColumn:string): string
|
|
39
|
+
abstract printColumnName(column:string): string
|
|
48
40
|
|
|
49
41
|
/**
|
|
50
42
|
* Print a single data value from serialization using the context of the native data
|
|
51
43
|
* type with the correct SQL escaping.
|
|
52
44
|
*
|
|
53
45
|
* @param cellValue data from sql results
|
|
54
|
-
* @param
|
|
46
|
+
* @param nativeType native type name for table column
|
|
55
47
|
*
|
|
56
48
|
*/
|
|
57
|
-
abstract printCellAsValue(cellValue:OINODataCell,
|
|
49
|
+
abstract printCellAsValue(cellValue:OINODataCell, nativeType: string): string
|
|
58
50
|
|
|
59
51
|
/**
|
|
60
52
|
* Print a single string value as valid sql literal
|
|
@@ -69,10 +61,10 @@ export abstract class OINODataSource {
|
|
|
69
61
|
* type.
|
|
70
62
|
*
|
|
71
63
|
* @param sqlValue data from serialization
|
|
72
|
-
* @param
|
|
64
|
+
* @param nativeType native type name for table column
|
|
73
65
|
*
|
|
74
66
|
*/
|
|
75
|
-
abstract parseValueAsCell(sqlValue:OINODataCell,
|
|
67
|
+
abstract parseValueAsCell(sqlValue:OINODataCell, nativeType: string): OINODataCell
|
|
76
68
|
|
|
77
69
|
/**
|
|
78
70
|
* Initialize a data model by getting the SQL schema and populating OINODataFields of
|
package/src/OINOModelSet.ts
CHANGED
|
@@ -48,14 +48,14 @@ export class OINOModelSet {
|
|
|
48
48
|
this.errors = this.dataset.messages
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
private _encodeAndHashFieldValue(field:OINODataField, value:string|null, contentType:OINOContentType,
|
|
51
|
+
private _encodeAndHashFieldValue(field:OINODataField, value:string|null, contentType:OINOContentType, primaryKeyValuesEncoded:string[], rowIdSeed:string):string {
|
|
52
52
|
let result:string
|
|
53
53
|
if (field.fieldParams.isPrimaryKey || field.fieldParams.isForeignKey) {
|
|
54
54
|
if (value && (field instanceof OINONumberDataField) && (this.datamodel.api.hashid) && ((this.queryParams?.aggregate === undefined) || (this.queryParams.aggregate.isAggregated(field.name) == false))) {
|
|
55
55
|
value = this.datamodel.api.hashid.encode(value, rowIdSeed)
|
|
56
56
|
}
|
|
57
57
|
if (field.fieldParams.isPrimaryKey) {
|
|
58
|
-
|
|
58
|
+
primaryKeyValuesEncoded.push(value || "")
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
result = OINOStr.encode(value, contentType)
|
|
@@ -67,7 +67,7 @@ export class OINOModelSet {
|
|
|
67
67
|
const model:OINODataModel = this.datamodel
|
|
68
68
|
const fields:OINODataField[] = model.fields
|
|
69
69
|
let row_id_seed:string = model.getRowPrimarykeyValues(row).join(' ')
|
|
70
|
-
let
|
|
70
|
+
let encoded_primary_key_values:string[] = []
|
|
71
71
|
let json_row:string = ""
|
|
72
72
|
for (let i=0; i<fields.length; i++) {
|
|
73
73
|
const f = fields[i]
|
|
@@ -85,14 +85,14 @@ export class OINOModelSet {
|
|
|
85
85
|
|
|
86
86
|
let is_hashed:boolean = (f.fieldParams.isPrimaryKey || f.fieldParams.isForeignKey) && (f instanceof OINONumberDataField) && (this.datamodel.api.hashid != null)
|
|
87
87
|
let is_value = (f instanceof OINOBooleanDataField) || ((f instanceof OINONumberDataField) && !is_hashed)
|
|
88
|
-
value = this._encodeAndHashFieldValue(f, value, OINOContentType.json,
|
|
88
|
+
value = this._encodeAndHashFieldValue(f, value, OINOContentType.json, encoded_primary_key_values, f.name + " " + row_id_seed)
|
|
89
89
|
if (is_value) {
|
|
90
90
|
value = value.substring(1, value.length-1)
|
|
91
91
|
}
|
|
92
92
|
json_row += "," + OINOStr.encode(f.name, OINOContentType.json) + ":" + value
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
json_row = OINOStr.encode(OINOConfig.OINO_ID_FIELD, OINOContentType.json) + ":" + OINOStr.encode(OINOConfig.printOINOId(
|
|
95
|
+
json_row = OINOStr.encode(OINOConfig.OINO_ID_FIELD, OINOContentType.json) + ":" + OINOStr.encode(OINOConfig.printOINOId(encoded_primary_key_values), OINOContentType.json) + json_row
|
|
96
96
|
return "{" + json_row + "}"
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -127,7 +127,7 @@ export class OINOModelSet {
|
|
|
127
127
|
const model:OINODataModel = this.datamodel
|
|
128
128
|
const fields:OINODataField[] = model.fields
|
|
129
129
|
let row_id_seed:string = model.getRowPrimarykeyValues(row).join(' ')
|
|
130
|
-
let
|
|
130
|
+
let encoded_primary_key_values:string[] = []
|
|
131
131
|
let csv_row:string = ""
|
|
132
132
|
for (let i=0; i<fields.length; i++) {
|
|
133
133
|
const f = fields[i]
|
|
@@ -139,11 +139,11 @@ export class OINOModelSet {
|
|
|
139
139
|
csv_row += "," + OINOStr.encode(value, OINOContentType.csv) // either null or undefined
|
|
140
140
|
|
|
141
141
|
} else {
|
|
142
|
-
value = this._encodeAndHashFieldValue(f, value, OINOContentType.csv,
|
|
142
|
+
value = this._encodeAndHashFieldValue(f, value, OINOContentType.csv, encoded_primary_key_values, f.name + " " + row_id_seed)
|
|
143
143
|
csv_row += "," + value
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
csv_row = OINOStr.encode(OINOConfig.printOINOId(
|
|
146
|
+
csv_row = OINOStr.encode(OINOConfig.printOINOId(encoded_primary_key_values), OINOContentType.csv) + csv_row
|
|
147
147
|
return csv_row
|
|
148
148
|
}
|
|
149
149
|
|
|
@@ -177,7 +177,7 @@ export class OINOModelSet {
|
|
|
177
177
|
const model:OINODataModel = this.datamodel
|
|
178
178
|
const fields:OINODataField[] = model.fields
|
|
179
179
|
let row_id_seed:string = model.getRowPrimarykeyValues(row).join(' ')
|
|
180
|
-
let
|
|
180
|
+
let encoded_primary_key_values:string[] = []
|
|
181
181
|
let result:string = ""
|
|
182
182
|
for (let i=0; i<fields.length; i++) {
|
|
183
183
|
const f = fields[i]
|
|
@@ -195,7 +195,7 @@ export class OINOModelSet {
|
|
|
195
195
|
formdata_block = this._writeRowFormdataParameterBlock(fields[i].name, null, multipart_boundary)
|
|
196
196
|
|
|
197
197
|
} else {
|
|
198
|
-
value = this._encodeAndHashFieldValue(f, value, OINOContentType.formdata,
|
|
198
|
+
value = this._encodeAndHashFieldValue(f, value, OINOContentType.formdata, encoded_primary_key_values, f.name + " " + row_id_seed)
|
|
199
199
|
if (is_file) {
|
|
200
200
|
formdata_block = this._writeRowFormdataFileBlock(f.name, value, multipart_boundary)
|
|
201
201
|
} else {
|
|
@@ -205,7 +205,7 @@ export class OINOModelSet {
|
|
|
205
205
|
|
|
206
206
|
result += formdata_block
|
|
207
207
|
}
|
|
208
|
-
result = this._writeRowFormdataParameterBlock(OINOConfig.OINO_ID_FIELD, OINOConfig.printOINOId(
|
|
208
|
+
result = this._writeRowFormdataParameterBlock(OINOConfig.OINO_ID_FIELD, OINOConfig.printOINOId(encoded_primary_key_values), multipart_boundary) + result
|
|
209
209
|
return result
|
|
210
210
|
}
|
|
211
211
|
|
|
@@ -220,7 +220,7 @@ export class OINOModelSet {
|
|
|
220
220
|
const model:OINODataModel = this.datamodel
|
|
221
221
|
const fields:OINODataField[] = model.fields
|
|
222
222
|
let row_id_seed:string = model.getRowPrimarykeyValues(row).join(' ')
|
|
223
|
-
let
|
|
223
|
+
let encoded_primary_key_values:string[] = []
|
|
224
224
|
let urlencode_row:string = ""
|
|
225
225
|
for (let i=0; i<fields.length; i++) {
|
|
226
226
|
const f = fields[i]
|
|
@@ -231,14 +231,14 @@ export class OINOModelSet {
|
|
|
231
231
|
if ((value === undefined)) { // || (value === null)) {
|
|
232
232
|
// console.log("OINOModelSet._writeRowUrlencode undefined field value:" + fields[i].name)
|
|
233
233
|
} else {
|
|
234
|
-
value = this._encodeAndHashFieldValue(f, value, OINOContentType.urlencode,
|
|
234
|
+
value = this._encodeAndHashFieldValue(f, value, OINOContentType.urlencode, encoded_primary_key_values, f.name + " " + row_id_seed)
|
|
235
235
|
if (urlencode_row != "") {
|
|
236
236
|
urlencode_row += "&"
|
|
237
237
|
}
|
|
238
238
|
urlencode_row += OINOStr.encode(f.name, OINOContentType.urlencode) + "=" + value
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
|
-
urlencode_row = OINOStr.encode(OINOConfig.OINO_ID_FIELD, OINOContentType.urlencode) + "=" + OINOStr.encode(OINOConfig.printOINOId(
|
|
241
|
+
urlencode_row = OINOStr.encode(OINOConfig.OINO_ID_FIELD, OINOContentType.urlencode) + "=" + OINOStr.encode(OINOConfig.printOINOId(encoded_primary_key_values), OINOContentType.urlencode) + "&" + urlencode_row
|
|
242
242
|
return urlencode_row
|
|
243
243
|
}
|
|
244
244
|
|
|
@@ -262,12 +262,12 @@ export class OINOModelSet {
|
|
|
262
262
|
const model:OINODataModel = this.datamodel
|
|
263
263
|
const fields:OINODataField[] = model.fields
|
|
264
264
|
let row_id_seed:string = model.getRowPrimarykeyValues(row).join(' ')
|
|
265
|
-
let
|
|
265
|
+
let encoded_primary_key_values:string[] = []
|
|
266
266
|
let result:any = {}
|
|
267
267
|
for (let i=0; i<fields.length; i++) {
|
|
268
268
|
const f = fields[i]
|
|
269
269
|
if (f.fieldParams.isPrimaryKey) {
|
|
270
|
-
|
|
270
|
+
encoded_primary_key_values.push(f.serializeCell(row[i]) || "")
|
|
271
271
|
}
|
|
272
272
|
if ((this.queryParams?.select?.isSelected(f.name) === false) && (f.fieldParams.isPrimaryKey == false)) {
|
|
273
273
|
continue
|
|
@@ -283,7 +283,7 @@ export class OINOModelSet {
|
|
|
283
283
|
result[f.name] = value
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
|
-
result[OINOConfig.OINO_ID_FIELD] = OINOConfig.printOINOId(
|
|
286
|
+
result[OINOConfig.OINO_ID_FIELD] = OINOConfig.printOINOId(encoded_primary_key_values)
|
|
287
287
|
return result
|
|
288
288
|
}
|
|
289
289
|
|