remult 0.14.6 → 0.14.7
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/assign.js +5 -1
- package/classType.js +2 -1
- package/graphql.js +146 -84
- package/index.js +73 -25
- package/inputTypes.js +16 -9
- package/package.json +1 -2
- package/postgres/index.js +4 -1
- package/postgres/postgres-data-provider.d.ts +4 -1
- package/postgres/postgres-data-provider.js +364 -165
- package/postgres/postgresColumnSyntax.d.ts +1 -1
- package/postgres/postgresColumnSyntax.js +8 -4
- package/remult-express.js +10 -6
- package/remult-knex/index.d.ts +5 -2
- package/remult-knex/index.js +720 -300
- package/remult-middleware.js +29 -24
- package/remult-mongo.js +406 -172
- package/server/JsonEntityFileStorage.js +15 -10
- package/server/expressBridge.d.ts +4 -2
- package/server/expressBridge.js +570 -383
- package/server/index.js +11 -4
- package/server/register-actions-on-server.js +38 -12
- package/server/register-entities-on-server.js +13 -9
- package/src/__EntityValueProvider.js +2 -1
- package/src/__RowsOfDataForTesting.js +2 -1
- package/src/backend-tests/backend-database-test-setup.backend-spec.js +190 -72
- package/src/backend-tests/my-test.backend-spec.js +114 -45
- package/src/column-interfaces.js +6 -2
- package/src/column.js +113 -71
- package/src/context.js +330 -174
- package/src/data-api.js +326 -162
- package/src/data-interfaces.js +11 -7
- package/src/data-providers/array-entity-data-provider.js +286 -171
- package/src/data-providers/in-memory-database.js +27 -12
- package/src/data-providers/json-data-provider.js +77 -41
- package/src/data-providers/rest-data-provider.js +189 -102
- package/src/data-providers/sql-database.js +403 -223
- package/src/data-providers/web-sql-data-provider.js +139 -78
- package/src/entity.js +2 -1
- package/src/filter/filter-consumer-bridge-to-sql-request.d.ts +1 -1
- package/src/filter/filter-consumer-bridge-to-sql-request.js +248 -106
- package/src/filter/filter-consumer-bridge-to-url-builder.js +2 -1
- package/src/filter/filter-interfaces.js +440 -277
- package/src/id-entity.js +17 -8
- package/src/remult3/RepositoryImplementation.js +2367 -1191
- package/src/remult3/index.js +5 -2
- package/src/remult3/remult3.js +2 -1
- package/src/server-action.js +528 -294
- package/src/shared-tests/db-tests-setup.js +153 -49
- package/src/shared-tests/db-tests.db-tests.js +1566 -660
- package/src/shared-tests/deleteAll.js +20 -3
- package/src/shared-tests/entityWithValidations.js +79 -52
- package/src/shared-tests/index.js +6 -4
- package/src/shared-tests/test-custom-id-column.spec.js +85 -37
- package/src/shared-tests/test-special-value.spec.js +104 -64
- package/src/shared-tests/test-update-with-null.spec.js +49 -28
- package/src/sort.js +95 -38
- package/src/sql-command.js +2 -1
- package/src/tests/Done.js +13 -7
- package/src/tests/TestDataApiResponse.js +22 -15
- package/src/tests/c.js +27 -21
- package/src/tests/createData.js +48 -20
- package/src/tests/d.js +27 -19
- package/src/tests/dWithPrefilter.js +44 -31
- package/src/tests/entityForCustomFilter.js +66 -42
- package/src/tests/entityWithValidationsOnColumn.js +29 -21
- package/src/tests/frontend-database-tests-setup.spec.js +98 -35
- package/src/tests/h.js +44 -35
- package/src/tests/remult-3-entities.js +80 -71
- package/src/tests/tasks.js +29 -23
- package/src/tests/testHelper.spec.js +322 -170
- package/src/tests/testModel/models.js +33 -25
- package/src/validators.js +59 -32
- package/urlBuilder.js +14 -8
- package/valueConverters.js +160 -161
|
@@ -1,264 +1,379 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArrayEntityDataProvider = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var filter_interfaces_1 = require("../filter/filter-interfaces");
|
|
6
|
+
var column_1 = require("../column");
|
|
7
|
+
var ArrayEntityDataProvider = /** @class */ (function () {
|
|
8
|
+
function ArrayEntityDataProvider(entity, rows) {
|
|
9
|
+
var e_1, _a;
|
|
5
10
|
this.entity = entity;
|
|
6
11
|
this.rows = rows;
|
|
7
12
|
if (!rows)
|
|
8
13
|
rows = [];
|
|
9
14
|
else {
|
|
10
|
-
|
|
11
|
-
|
|
15
|
+
try {
|
|
16
|
+
for (var rows_1 = tslib_1.__values(rows), rows_1_1 = rows_1.next(); !rows_1_1.done; rows_1_1 = rows_1.next()) {
|
|
17
|
+
var r = rows_1_1.value;
|
|
18
|
+
this.verifyThatRowHasAllNotNullColumns(r);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
22
|
+
finally {
|
|
23
|
+
try {
|
|
24
|
+
if (rows_1_1 && !rows_1_1.done && (_a = rows_1.return)) _a.call(rows_1);
|
|
25
|
+
}
|
|
26
|
+
finally { if (e_1) throw e_1.error; }
|
|
12
27
|
}
|
|
13
28
|
}
|
|
14
29
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
30
|
+
ArrayEntityDataProvider.customFilter = function (filter) {
|
|
31
|
+
var _a;
|
|
32
|
+
return _a = {},
|
|
33
|
+
_a[filter_interfaces_1.customDatabaseFilterToken] = {
|
|
18
34
|
arrayFilter: filter
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
verifyThatRowHasAllNotNullColumns(r) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
},
|
|
36
|
+
_a;
|
|
37
|
+
};
|
|
38
|
+
ArrayEntityDataProvider.prototype.verifyThatRowHasAllNotNullColumns = function (r) {
|
|
39
|
+
var e_2, _a;
|
|
40
|
+
try {
|
|
41
|
+
for (var _b = tslib_1.__values(this.entity.fields), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
42
|
+
var f = _c.value;
|
|
43
|
+
if (!f.isServerExpression)
|
|
44
|
+
if (!f.allowNull) {
|
|
45
|
+
if (r[f.key] === undefined || r[f.key] === null) {
|
|
46
|
+
var val = undefined;
|
|
47
|
+
if (f.valueType === Boolean)
|
|
48
|
+
val = false;
|
|
49
|
+
else if (f.valueType === Number)
|
|
50
|
+
val = 0;
|
|
51
|
+
else if (f.valueType === String)
|
|
52
|
+
val = '';
|
|
53
|
+
r[f.key] = val;
|
|
54
|
+
}
|
|
35
55
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
r[f.key] = null;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
async count(where) {
|
|
42
|
-
let rows = this.rows;
|
|
43
|
-
let j = 0;
|
|
44
|
-
for (let i = 0; i < rows.length; i++) {
|
|
45
|
-
if (!where) {
|
|
46
|
-
j++;
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
let x = new FilterConsumerBridgeToObject(rows[i]);
|
|
50
|
-
where.__applyToConsumer(x);
|
|
51
|
-
if (x.ok)
|
|
52
|
-
j++;
|
|
56
|
+
else if (r[f.key] === undefined)
|
|
57
|
+
r[f.key] = null;
|
|
53
58
|
}
|
|
54
59
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (options) {
|
|
60
|
-
if (options.where) {
|
|
61
|
-
rows = rows.filter(i => {
|
|
62
|
-
let x = new FilterConsumerBridgeToObject(i);
|
|
63
|
-
options.where.__applyToConsumer(x);
|
|
64
|
-
return x.ok;
|
|
65
|
-
});
|
|
60
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
61
|
+
finally {
|
|
62
|
+
try {
|
|
63
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
66
64
|
}
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
65
|
+
finally { if (e_2) throw e_2.error; }
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
ArrayEntityDataProvider.prototype.count = function (where) {
|
|
69
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
70
|
+
var rows, j, i, x;
|
|
71
|
+
return tslib_1.__generator(this, function (_a) {
|
|
72
|
+
rows = this.rows;
|
|
73
|
+
j = 0;
|
|
74
|
+
for (i = 0; i < rows.length; i++) {
|
|
75
|
+
if (!where) {
|
|
76
|
+
j++;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
x = new FilterConsumerBridgeToObject(rows[i]);
|
|
80
|
+
where.__applyToConsumer(x);
|
|
81
|
+
if (x.ok)
|
|
82
|
+
j++;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return [2 /*return*/, j];
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
ArrayEntityDataProvider.prototype.find = function (options) {
|
|
90
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
91
|
+
var rows;
|
|
92
|
+
var _this = this;
|
|
93
|
+
return tslib_1.__generator(this, function (_a) {
|
|
94
|
+
rows = this.rows;
|
|
95
|
+
if (options) {
|
|
96
|
+
if (options.where) {
|
|
97
|
+
rows = rows.filter(function (i) {
|
|
98
|
+
var x = new FilterConsumerBridgeToObject(i);
|
|
99
|
+
options.where.__applyToConsumer(x);
|
|
100
|
+
return x.ok;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (options.orderBy) {
|
|
104
|
+
rows = rows.sort(function (a, b) {
|
|
105
|
+
var r = 0;
|
|
106
|
+
for (var i = 0; i < options.orderBy.Segments.length; i++) {
|
|
107
|
+
var seg = options.orderBy.Segments[i];
|
|
108
|
+
var left = a[seg.field.key];
|
|
109
|
+
var right = b[seg.field.key];
|
|
110
|
+
if (left > right)
|
|
111
|
+
r = 1;
|
|
112
|
+
else if (left < right)
|
|
113
|
+
r = -1;
|
|
114
|
+
if (r != 0) {
|
|
115
|
+
if (seg.isDescending)
|
|
116
|
+
r *= -1;
|
|
117
|
+
return r;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
81
120
|
return r;
|
|
82
|
-
}
|
|
121
|
+
});
|
|
83
122
|
}
|
|
84
|
-
|
|
85
|
-
}
|
|
123
|
+
rows = pageArray(rows, options);
|
|
124
|
+
}
|
|
125
|
+
if (rows)
|
|
126
|
+
return [2 /*return*/, rows.map(function (i) {
|
|
127
|
+
return _this.translateFromJson(i);
|
|
128
|
+
})];
|
|
129
|
+
return [2 /*return*/];
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
ArrayEntityDataProvider.prototype.translateFromJson = function (row) {
|
|
134
|
+
var e_3, _a;
|
|
135
|
+
var result = {};
|
|
136
|
+
try {
|
|
137
|
+
for (var _b = tslib_1.__values(this.entity.fields), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
138
|
+
var col = _c.value;
|
|
139
|
+
result[col.key] = col.valueConverter.fromJson(row[col.key]);
|
|
86
140
|
}
|
|
87
|
-
rows = pageArray(rows, options);
|
|
88
141
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
let result = {};
|
|
96
|
-
for (const col of this.entity.fields) {
|
|
97
|
-
result[col.key] = col.valueConverter.fromJson(row[col.key]);
|
|
142
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
143
|
+
finally {
|
|
144
|
+
try {
|
|
145
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
146
|
+
}
|
|
147
|
+
finally { if (e_3) throw e_3.error; }
|
|
98
148
|
}
|
|
99
149
|
return result;
|
|
100
|
-
}
|
|
101
|
-
translateToJson(row) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
150
|
+
};
|
|
151
|
+
ArrayEntityDataProvider.prototype.translateToJson = function (row) {
|
|
152
|
+
var e_4, _a;
|
|
153
|
+
var result = {};
|
|
154
|
+
try {
|
|
155
|
+
for (var _b = tslib_1.__values(this.entity.fields), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
156
|
+
var col = _c.value;
|
|
157
|
+
result[col.key] = col.valueConverter.toJson(row[col.key]);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
161
|
+
finally {
|
|
162
|
+
try {
|
|
163
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
164
|
+
}
|
|
165
|
+
finally { if (e_4) throw e_4.error; }
|
|
105
166
|
}
|
|
106
167
|
return result;
|
|
107
|
-
}
|
|
108
|
-
idMatches(id) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
168
|
+
};
|
|
169
|
+
ArrayEntityDataProvider.prototype.idMatches = function (id) {
|
|
170
|
+
var _this = this;
|
|
171
|
+
return function (item) {
|
|
172
|
+
var x = new FilterConsumerBridgeToObject(item);
|
|
173
|
+
filter_interfaces_1.Filter.fromEntityFilter(_this.entity, _this.entity.idMetadata.getIdFilter(id)).__applyToConsumer(x);
|
|
112
174
|
return x.ok;
|
|
113
175
|
};
|
|
114
|
-
}
|
|
115
|
-
update(id, data) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
176
|
+
};
|
|
177
|
+
ArrayEntityDataProvider.prototype.update = function (id, data) {
|
|
178
|
+
var e_5, _a;
|
|
179
|
+
var idMatches = this.idMatches(id);
|
|
180
|
+
var keys = Object.keys(data);
|
|
181
|
+
for (var i = 0; i < this.rows.length; i++) {
|
|
182
|
+
var r = this.rows[i];
|
|
120
183
|
if (idMatches(r)) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
184
|
+
var newR = tslib_1.__assign({}, r);
|
|
185
|
+
try {
|
|
186
|
+
for (var _b = (e_5 = void 0, tslib_1.__values(this.entity.fields)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
187
|
+
var f = _c.value;
|
|
188
|
+
if (!f.dbReadOnly && !f.isServerExpression) {
|
|
189
|
+
if (keys.includes(f.key)) {
|
|
190
|
+
newR[f.key] = f.valueConverter.toJson(data[f.key]);
|
|
191
|
+
}
|
|
126
192
|
}
|
|
127
193
|
}
|
|
128
194
|
}
|
|
195
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
196
|
+
finally {
|
|
197
|
+
try {
|
|
198
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
199
|
+
}
|
|
200
|
+
finally { if (e_5) throw e_5.error; }
|
|
201
|
+
}
|
|
129
202
|
this.verifyThatRowHasAllNotNullColumns(newR);
|
|
130
203
|
this.rows[i] = newR;
|
|
131
204
|
return Promise.resolve(this.translateFromJson(this.rows[i]));
|
|
132
205
|
}
|
|
133
206
|
}
|
|
134
207
|
throw new Error("couldn't find id to update: " + id);
|
|
135
|
-
}
|
|
136
|
-
delete(id) {
|
|
137
|
-
|
|
138
|
-
for (
|
|
208
|
+
};
|
|
209
|
+
ArrayEntityDataProvider.prototype.delete = function (id) {
|
|
210
|
+
var idMatches = this.idMatches(id);
|
|
211
|
+
for (var i = 0; i < this.rows.length; i++) {
|
|
139
212
|
if (idMatches(this.rows[i])) {
|
|
140
213
|
this.rows.splice(i, 1);
|
|
141
214
|
return Promise.resolve();
|
|
142
215
|
}
|
|
143
216
|
}
|
|
144
217
|
throw new Error("couldn't find id to delete: " + id);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
218
|
+
};
|
|
219
|
+
ArrayEntityDataProvider.prototype.insert = function (data) {
|
|
220
|
+
var _a;
|
|
221
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
222
|
+
var idf, _b, _c, row, j;
|
|
223
|
+
var e_6, _d;
|
|
224
|
+
return tslib_1.__generator(this, function (_e) {
|
|
225
|
+
idf = this.entity.idMetadata.field;
|
|
226
|
+
if (!(idf instanceof column_1.CompoundIdField)) {
|
|
227
|
+
if (((_a = idf.options.valueConverter) === null || _a === void 0 ? void 0 : _a.fieldTypeInDb) === 'autoincrement') {
|
|
228
|
+
data[idf.key] = 1;
|
|
229
|
+
try {
|
|
230
|
+
for (_b = tslib_1.__values(this.rows), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
231
|
+
row = _c.value;
|
|
232
|
+
if (row[idf.key] >= data[idf.key])
|
|
233
|
+
data[idf.key] = row[idf.key] + 1;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
237
|
+
finally {
|
|
238
|
+
try {
|
|
239
|
+
if (_c && !_c.done && (_d = _b.return)) _d.call(_b);
|
|
240
|
+
}
|
|
241
|
+
finally { if (e_6) throw e_6.error; }
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (data[idf.key])
|
|
245
|
+
this.rows.forEach(function (i) {
|
|
246
|
+
if (data[idf.key] == i[idf.key])
|
|
247
|
+
throw Error("id already exists");
|
|
248
|
+
});
|
|
154
249
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
this.rows.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
return Promise.resolve(this.translateFromJson(j));
|
|
166
|
-
}
|
|
167
|
-
}
|
|
250
|
+
j = this.translateToJson(data);
|
|
251
|
+
this.verifyThatRowHasAllNotNullColumns(j);
|
|
252
|
+
this.rows.push(j);
|
|
253
|
+
return [2 /*return*/, Promise.resolve(this.translateFromJson(j))];
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
};
|
|
257
|
+
return ArrayEntityDataProvider;
|
|
258
|
+
}());
|
|
259
|
+
exports.ArrayEntityDataProvider = ArrayEntityDataProvider;
|
|
168
260
|
function pageArray(rows, options) {
|
|
169
261
|
if (!options)
|
|
170
262
|
return rows;
|
|
171
263
|
if (!options.limit)
|
|
172
264
|
return rows;
|
|
173
|
-
|
|
265
|
+
var page = 1;
|
|
174
266
|
if (options.page)
|
|
175
267
|
page = options.page;
|
|
176
268
|
if (page < 1)
|
|
177
269
|
page = 1;
|
|
178
|
-
|
|
179
|
-
return rows.filter(i
|
|
270
|
+
var x = 0;
|
|
271
|
+
return rows.filter(function (i) {
|
|
180
272
|
x++;
|
|
181
|
-
|
|
182
|
-
|
|
273
|
+
var max = page * options.limit;
|
|
274
|
+
var min = max - options.limit;
|
|
183
275
|
return x > min && x <= max;
|
|
184
276
|
});
|
|
185
277
|
}
|
|
186
|
-
|
|
187
|
-
|
|
278
|
+
var FilterConsumerBridgeToObject = /** @class */ (function () {
|
|
279
|
+
function FilterConsumerBridgeToObject(row) {
|
|
188
280
|
this.row = row;
|
|
189
281
|
this.ok = true;
|
|
190
282
|
}
|
|
191
|
-
databaseCustom(databaseCustom) {
|
|
283
|
+
FilterConsumerBridgeToObject.prototype.databaseCustom = function (databaseCustom) {
|
|
192
284
|
if (databaseCustom && databaseCustom.arrayFilter) {
|
|
193
285
|
if (!databaseCustom.arrayFilter(this.row))
|
|
194
286
|
this.ok = false;
|
|
195
287
|
}
|
|
196
|
-
}
|
|
197
|
-
custom(key, customItem) {
|
|
288
|
+
};
|
|
289
|
+
FilterConsumerBridgeToObject.prototype.custom = function (key, customItem) {
|
|
198
290
|
throw new Error('Custom Filter should be translated before it gets here');
|
|
199
|
-
}
|
|
200
|
-
or(orElements) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
291
|
+
};
|
|
292
|
+
FilterConsumerBridgeToObject.prototype.or = function (orElements) {
|
|
293
|
+
var e_7, _a;
|
|
294
|
+
try {
|
|
295
|
+
for (var orElements_1 = tslib_1.__values(orElements), orElements_1_1 = orElements_1.next(); !orElements_1_1.done; orElements_1_1 = orElements_1.next()) {
|
|
296
|
+
var element = orElements_1_1.value;
|
|
297
|
+
var filter = new FilterConsumerBridgeToObject(this.row);
|
|
298
|
+
element.__applyToConsumer(filter);
|
|
299
|
+
if (filter.ok) {
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
305
|
+
finally {
|
|
306
|
+
try {
|
|
307
|
+
if (orElements_1_1 && !orElements_1_1.done && (_a = orElements_1.return)) _a.call(orElements_1);
|
|
206
308
|
}
|
|
309
|
+
finally { if (e_7) throw e_7.error; }
|
|
207
310
|
}
|
|
208
311
|
this.ok = false;
|
|
209
|
-
}
|
|
210
|
-
isNull(col) {
|
|
312
|
+
};
|
|
313
|
+
FilterConsumerBridgeToObject.prototype.isNull = function (col) {
|
|
211
314
|
if (this.row[col.key] != null)
|
|
212
315
|
this.ok = false;
|
|
213
|
-
}
|
|
214
|
-
isNotNull(col) {
|
|
316
|
+
};
|
|
317
|
+
FilterConsumerBridgeToObject.prototype.isNotNull = function (col) {
|
|
215
318
|
if (this.row[col.key] == null)
|
|
216
319
|
this.ok = false;
|
|
217
|
-
}
|
|
218
|
-
isIn(col, val) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
320
|
+
};
|
|
321
|
+
FilterConsumerBridgeToObject.prototype.isIn = function (col, val) {
|
|
322
|
+
var e_8, _a;
|
|
323
|
+
try {
|
|
324
|
+
for (var val_1 = tslib_1.__values(val), val_1_1 = val_1.next(); !val_1_1.done; val_1_1 = val_1.next()) {
|
|
325
|
+
var v = val_1_1.value;
|
|
326
|
+
if (this.row[col.key] == col.valueConverter.toJson(v)) {
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
222
329
|
}
|
|
223
330
|
}
|
|
331
|
+
catch (e_8_1) { e_8 = { error: e_8_1 }; }
|
|
332
|
+
finally {
|
|
333
|
+
try {
|
|
334
|
+
if (val_1_1 && !val_1_1.done && (_a = val_1.return)) _a.call(val_1);
|
|
335
|
+
}
|
|
336
|
+
finally { if (e_8) throw e_8.error; }
|
|
337
|
+
}
|
|
224
338
|
this.ok = false;
|
|
225
|
-
}
|
|
226
|
-
isEqualTo(col, val) {
|
|
339
|
+
};
|
|
340
|
+
FilterConsumerBridgeToObject.prototype.isEqualTo = function (col, val) {
|
|
227
341
|
if (this.row[col.key] != col.valueConverter.toJson(val))
|
|
228
342
|
this.ok = false;
|
|
229
|
-
}
|
|
230
|
-
isDifferentFrom(col, val) {
|
|
343
|
+
};
|
|
344
|
+
FilterConsumerBridgeToObject.prototype.isDifferentFrom = function (col, val) {
|
|
231
345
|
if (this.row[col.key] == col.valueConverter.toJson(val))
|
|
232
346
|
this.ok = false;
|
|
233
|
-
}
|
|
234
|
-
isGreaterOrEqualTo(col, val) {
|
|
347
|
+
};
|
|
348
|
+
FilterConsumerBridgeToObject.prototype.isGreaterOrEqualTo = function (col, val) {
|
|
235
349
|
if (this.row[col.key] < col.valueConverter.toJson(val))
|
|
236
350
|
this.ok = false;
|
|
237
|
-
}
|
|
238
|
-
isGreaterThan(col, val) {
|
|
351
|
+
};
|
|
352
|
+
FilterConsumerBridgeToObject.prototype.isGreaterThan = function (col, val) {
|
|
239
353
|
if (this.row[col.key] <= col.valueConverter.toJson(val))
|
|
240
354
|
this.ok = false;
|
|
241
|
-
}
|
|
242
|
-
isLessOrEqualTo(col, val) {
|
|
355
|
+
};
|
|
356
|
+
FilterConsumerBridgeToObject.prototype.isLessOrEqualTo = function (col, val) {
|
|
243
357
|
if (this.row[col.key] > col.valueConverter.toJson(val))
|
|
244
358
|
this.ok = false;
|
|
245
|
-
}
|
|
246
|
-
isLessThan(col, val) {
|
|
359
|
+
};
|
|
360
|
+
FilterConsumerBridgeToObject.prototype.isLessThan = function (col, val) {
|
|
247
361
|
if (this.row[col.key] >= col.valueConverter.toJson(val))
|
|
248
362
|
this.ok = false;
|
|
249
|
-
}
|
|
250
|
-
containsCaseInsensitive(col, val) {
|
|
251
|
-
|
|
363
|
+
};
|
|
364
|
+
FilterConsumerBridgeToObject.prototype.containsCaseInsensitive = function (col, val) {
|
|
365
|
+
var v = this.row[col.key];
|
|
252
366
|
if (!v) {
|
|
253
367
|
this.ok = false;
|
|
254
368
|
return;
|
|
255
369
|
}
|
|
256
|
-
|
|
370
|
+
var s = '' + v;
|
|
257
371
|
if (val)
|
|
258
372
|
val = col.valueConverter.toJson(val);
|
|
259
373
|
if (val)
|
|
260
374
|
val = val.toString().toLowerCase();
|
|
261
375
|
if (s.toLowerCase().indexOf(val) < 0)
|
|
262
376
|
this.ok = false;
|
|
263
|
-
}
|
|
264
|
-
|
|
377
|
+
};
|
|
378
|
+
return FilterConsumerBridgeToObject;
|
|
379
|
+
}());
|
|
@@ -1,16 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InMemoryDataProvider = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var array_entity_data_provider_1 = require("./array-entity-data-provider");
|
|
6
|
+
var InMemoryDataProvider = /** @class */ (function () {
|
|
7
|
+
function InMemoryDataProvider() {
|
|
4
8
|
this.rows = {};
|
|
5
9
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
InMemoryDataProvider.prototype.transaction = function (action) {
|
|
11
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
12
|
+
return tslib_1.__generator(this, function (_a) {
|
|
13
|
+
switch (_a.label) {
|
|
14
|
+
case 0: return [4 /*yield*/, action(this)];
|
|
15
|
+
case 1:
|
|
16
|
+
_a.sent();
|
|
17
|
+
return [2 /*return*/];
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
InMemoryDataProvider.prototype.getEntityDataProvider = function (entity) {
|
|
23
|
+
var name = entity.key;
|
|
11
24
|
if (!this.rows[name])
|
|
12
25
|
this.rows[name] = [];
|
|
13
|
-
return new ArrayEntityDataProvider(entity, this.rows[name]);
|
|
14
|
-
}
|
|
15
|
-
toString() { return "InMemoryDataProvider"; }
|
|
16
|
-
|
|
26
|
+
return new array_entity_data_provider_1.ArrayEntityDataProvider(entity, this.rows[name]);
|
|
27
|
+
};
|
|
28
|
+
InMemoryDataProvider.prototype.toString = function () { return "InMemoryDataProvider"; };
|
|
29
|
+
return InMemoryDataProvider;
|
|
30
|
+
}());
|
|
31
|
+
exports.InMemoryDataProvider = InMemoryDataProvider;
|