remult 0.13.4 → 0.13.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/package.json +1 -1
- package/readme.md +15 -15
- package/remult-knex/index.js +6 -2
- package/remult-mongo.js +12 -9
- package/server/expressBridge.js +8 -8
- package/src/backend-tests/my-test.backend-spec.js +0 -17
- package/src/context.d.ts +2 -1
- package/src/context.js +1 -0
- package/src/filter/filter-consumer-bridge-to-sql-request.js +2 -0
- package/src/id-entity.js +1 -1
- package/src/remult3/RepositoryImplementation.d.ts +12 -10
- package/src/remult3/RepositoryImplementation.js +85 -51
- package/src/shared-tests/db-tests.db-tests.js +56 -20
- package/src/shared-tests/entityWithValidations.js +2 -2
- package/src/shared-tests/test-custom-id-column.spec.js +4 -4
- package/src/shared-tests/test-special-value.spec.js +1 -1
- package/src/shared-tests/test-update-with-null.spec.js +1 -1
- package/src/tests/c.js +2 -2
- package/src/tests/d.js +2 -2
- package/src/tests/dWithPrefilter.js +2 -2
- package/src/tests/entityForCustomFilter.js +1 -1
- package/src/tests/entityWithValidationsOnColumn.js +2 -2
- package/src/tests/h.js +2 -2
- package/src/tests/remult-3-entities.js +10 -10
- package/src/tests/tasks.js +3 -3
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -54,17 +54,17 @@ app.listen(port, () => {
|
|
|
54
54
|
|
|
55
55
|
## Define model classes
|
|
56
56
|
```ts
|
|
57
|
-
import { Entity, EntityBase,
|
|
57
|
+
import { Entity, EntityBase, Fields } from 'remult';
|
|
58
58
|
|
|
59
59
|
@Entity('products', {
|
|
60
60
|
allowApiCrud: true
|
|
61
61
|
})
|
|
62
62
|
export class Product extends EntityBase {
|
|
63
|
-
@
|
|
64
|
-
name
|
|
63
|
+
@Fields.string()
|
|
64
|
+
name = '';
|
|
65
65
|
|
|
66
|
-
@
|
|
67
|
-
unitPrice
|
|
66
|
+
@Fields.number()
|
|
67
|
+
unitPrice = 0;
|
|
68
68
|
}
|
|
69
69
|
```
|
|
70
70
|
|
|
@@ -106,17 +106,17 @@ import { Min } from 'class-validator';
|
|
|
106
106
|
allowApiCrud: true
|
|
107
107
|
})
|
|
108
108
|
export class Product extends EntityBase {
|
|
109
|
-
@
|
|
109
|
+
@Fields.string<Product>({
|
|
110
110
|
validate: p => {
|
|
111
111
|
if (p.name.trim().length == 0)
|
|
112
112
|
p.$.name.error = 'required';
|
|
113
113
|
}
|
|
114
114
|
})
|
|
115
|
-
name
|
|
115
|
+
name = '';
|
|
116
116
|
|
|
117
|
-
@
|
|
117
|
+
@Fields.number()
|
|
118
118
|
@Min(0)
|
|
119
|
-
unitPrice
|
|
119
|
+
unitPrice = 0;
|
|
120
120
|
}
|
|
121
121
|
```
|
|
122
122
|
|
|
@@ -147,13 +147,13 @@ catch {
|
|
|
147
147
|
allowApiUpdate: (remult, article) => article.author.id == remult.user.id
|
|
148
148
|
})
|
|
149
149
|
export class Article extends EntityBase {
|
|
150
|
-
@
|
|
151
|
-
slug
|
|
150
|
+
@Fields.string({ allowApiUpdate: false })
|
|
151
|
+
slug = '';
|
|
152
152
|
|
|
153
|
-
@Field({ allowApiUpdate: false })
|
|
154
|
-
author
|
|
153
|
+
@Field(() => Profile, { allowApiUpdate: false })
|
|
154
|
+
author!: Profile;
|
|
155
155
|
|
|
156
|
-
@
|
|
157
|
-
content
|
|
156
|
+
@Fields.string()
|
|
157
|
+
content = '';
|
|
158
158
|
}
|
|
159
159
|
```
|
package/remult-knex/index.js
CHANGED
|
@@ -375,7 +375,7 @@ var FilterConsumerBridgeToKnexRequest = /** @class */ (function () {
|
|
|
375
375
|
FilterConsumerBridgeToKnexRequest.prototype.or = function (orElements) {
|
|
376
376
|
var _this = this;
|
|
377
377
|
this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
378
|
-
var result, _loop_1, this_1, orElements_1, orElements_1_1, element, e_5_1;
|
|
378
|
+
var result, _loop_1, this_1, orElements_1, orElements_1_1, element, state_1, e_5_1;
|
|
379
379
|
var e_5, _a;
|
|
380
380
|
return tslib_1.__generator(this, function (_b) {
|
|
381
381
|
switch (_b.label) {
|
|
@@ -399,6 +399,8 @@ var FilterConsumerBridgeToKnexRequest = /** @class */ (function () {
|
|
|
399
399
|
});
|
|
400
400
|
});
|
|
401
401
|
}
|
|
402
|
+
else
|
|
403
|
+
return [2 /*return*/, { value: void 0 }]; //empty or means all rows
|
|
402
404
|
return [2 /*return*/];
|
|
403
405
|
}
|
|
404
406
|
});
|
|
@@ -414,7 +416,9 @@ var FilterConsumerBridgeToKnexRequest = /** @class */ (function () {
|
|
|
414
416
|
element = orElements_1_1.value;
|
|
415
417
|
return [5 /*yield**/, _loop_1(element)];
|
|
416
418
|
case 3:
|
|
417
|
-
_b.sent();
|
|
419
|
+
state_1 = _b.sent();
|
|
420
|
+
if (typeof state_1 === "object")
|
|
421
|
+
return [2 /*return*/, state_1.value];
|
|
418
422
|
_b.label = 4;
|
|
419
423
|
case 4:
|
|
420
424
|
orElements_1_1 = orElements_1.next();
|
package/remult-mongo.js
CHANGED
|
@@ -339,15 +339,16 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
339
339
|
this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
340
340
|
var result, orElements_1, orElements_1_1, element, f, where, e_7_1;
|
|
341
341
|
var e_7, _a;
|
|
342
|
-
|
|
343
|
-
|
|
342
|
+
var _b;
|
|
343
|
+
return tslib_1.__generator(this, function (_c) {
|
|
344
|
+
switch (_c.label) {
|
|
344
345
|
case 0:
|
|
345
346
|
result = [];
|
|
346
|
-
|
|
347
|
+
_c.label = 1;
|
|
347
348
|
case 1:
|
|
348
|
-
|
|
349
|
+
_c.trys.push([1, 6, 7, 8]);
|
|
349
350
|
orElements_1 = tslib_1.__values(orElements), orElements_1_1 = orElements_1.next();
|
|
350
|
-
|
|
351
|
+
_c.label = 2;
|
|
351
352
|
case 2:
|
|
352
353
|
if (!!orElements_1_1.done) return [3 /*break*/, 5];
|
|
353
354
|
element = orElements_1_1.value;
|
|
@@ -356,17 +357,19 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
356
357
|
element.__applyToConsumer(f);
|
|
357
358
|
return [4 /*yield*/, f.resolveWhere()];
|
|
358
359
|
case 3:
|
|
359
|
-
where =
|
|
360
|
-
if ((where === null || where === void 0 ? void 0 : where.$and.length) > 0) {
|
|
360
|
+
where = _c.sent();
|
|
361
|
+
if (((_b = where === null || where === void 0 ? void 0 : where.$and) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
361
362
|
result.push(where);
|
|
362
363
|
}
|
|
363
|
-
|
|
364
|
+
else
|
|
365
|
+
return [2 /*return*/]; //since empty or is all rows;
|
|
366
|
+
_c.label = 4;
|
|
364
367
|
case 4:
|
|
365
368
|
orElements_1_1 = orElements_1.next();
|
|
366
369
|
return [3 /*break*/, 2];
|
|
367
370
|
case 5: return [3 /*break*/, 8];
|
|
368
371
|
case 6:
|
|
369
|
-
e_7_1 =
|
|
372
|
+
e_7_1 = _c.sent();
|
|
370
373
|
e_7 = { error: e_7_1 };
|
|
371
374
|
return [3 /*break*/, 8];
|
|
372
375
|
case 7:
|
package/server/expressBridge.js
CHANGED
|
@@ -806,35 +806,35 @@ var JobsInQueueEntity = /** @class */ (function (_super) {
|
|
|
806
806
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
807
807
|
}
|
|
808
808
|
tslib_1.__decorate([
|
|
809
|
-
remult3_1.Fields.
|
|
809
|
+
remult3_1.Fields.string(),
|
|
810
810
|
tslib_1.__metadata("design:type", String)
|
|
811
811
|
], JobsInQueueEntity.prototype, "userId", void 0);
|
|
812
812
|
tslib_1.__decorate([
|
|
813
|
-
remult3_1.Fields.
|
|
813
|
+
remult3_1.Fields.string(),
|
|
814
814
|
tslib_1.__metadata("design:type", String)
|
|
815
815
|
], JobsInQueueEntity.prototype, "url", void 0);
|
|
816
816
|
tslib_1.__decorate([
|
|
817
|
-
remult3_1.Fields.
|
|
817
|
+
remult3_1.Fields.date(),
|
|
818
818
|
tslib_1.__metadata("design:type", Date)
|
|
819
819
|
], JobsInQueueEntity.prototype, "submitTime", void 0);
|
|
820
820
|
tslib_1.__decorate([
|
|
821
|
-
remult3_1.Fields.
|
|
821
|
+
remult3_1.Fields.date(),
|
|
822
822
|
tslib_1.__metadata("design:type", Date)
|
|
823
823
|
], JobsInQueueEntity.prototype, "doneTime", void 0);
|
|
824
824
|
tslib_1.__decorate([
|
|
825
|
-
remult3_1.Fields.
|
|
825
|
+
remult3_1.Fields.string(),
|
|
826
826
|
tslib_1.__metadata("design:type", String)
|
|
827
827
|
], JobsInQueueEntity.prototype, "result", void 0);
|
|
828
828
|
tslib_1.__decorate([
|
|
829
|
-
remult3_1.Fields.
|
|
829
|
+
remult3_1.Fields.boolean(),
|
|
830
830
|
tslib_1.__metadata("design:type", Boolean)
|
|
831
831
|
], JobsInQueueEntity.prototype, "done", void 0);
|
|
832
832
|
tslib_1.__decorate([
|
|
833
|
-
remult3_1.Fields.
|
|
833
|
+
remult3_1.Fields.boolean(),
|
|
834
834
|
tslib_1.__metadata("design:type", Boolean)
|
|
835
835
|
], JobsInQueueEntity.prototype, "error", void 0);
|
|
836
836
|
tslib_1.__decorate([
|
|
837
|
-
remult3_1.Fields.
|
|
837
|
+
remult3_1.Fields.number(),
|
|
838
838
|
tslib_1.__metadata("design:type", Number)
|
|
839
839
|
], JobsInQueueEntity.prototype, "progress", void 0);
|
|
840
840
|
JobsInQueueEntity = tslib_1.__decorate([
|
|
@@ -2,28 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var tslib_1 = require("tslib");
|
|
4
4
|
var __1 = require("../..");
|
|
5
|
-
var context_1 = require("../context");
|
|
6
5
|
var remult_knex_1 = require("../../remult-knex");
|
|
7
|
-
var Knex = require("knex");
|
|
8
6
|
var dotenv_1 = require("dotenv");
|
|
9
7
|
var backend_database_test_setup_backend_spec_1 = require("./backend-database-test-setup.backend-spec");
|
|
10
8
|
var entityWithValidations_1 = require("../shared-tests/entityWithValidations");
|
|
11
9
|
dotenv_1.config();
|
|
12
|
-
describe("test", function () {
|
|
13
|
-
var remult;
|
|
14
|
-
var knex;
|
|
15
|
-
beforeAll(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
16
|
-
return tslib_1.__generator(this, function (_a) {
|
|
17
|
-
knex =
|
|
18
|
-
Knex.default({
|
|
19
|
-
client: 'pg',
|
|
20
|
-
connection: process.env.DATABASE_URL
|
|
21
|
-
});
|
|
22
|
-
remult = new context_1.Remult(new remult_knex_1.KnexDataProvider(knex));
|
|
23
|
-
return [2 /*return*/];
|
|
24
|
-
});
|
|
25
|
-
}); });
|
|
26
|
-
});
|
|
27
10
|
backend_database_test_setup_backend_spec_1.testPostgresImplementation("sql filter", function (_a) {
|
|
28
11
|
var createEntity = _a.createEntity;
|
|
29
12
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
package/src/context.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DataProvider } from "./data-interfaces";
|
|
2
|
-
import { EntityRef, Repository } from "./remult3";
|
|
2
|
+
import { EntityMetadata, EntityRef, FindOptions, Repository } from "./remult3";
|
|
3
3
|
import { ClassType } from "../classType";
|
|
4
4
|
export interface HttpProvider {
|
|
5
5
|
post(url: string, data: any): Promise<any> | {
|
|
@@ -21,6 +21,7 @@ export declare function toPromise<T>(p: Promise<T> | {
|
|
|
21
21
|
export declare function processHttpException(ex: any): Promise<any>;
|
|
22
22
|
export declare function isBackend(): boolean;
|
|
23
23
|
export declare class Remult {
|
|
24
|
+
static onFind: (metadata: EntityMetadata, options: FindOptions<any>) => void;
|
|
24
25
|
clearAllCache(): any;
|
|
25
26
|
static entityRefInit?: (ref: EntityRef<any>, row: any) => void;
|
|
26
27
|
authenticated(): boolean;
|
package/src/context.js
CHANGED
|
@@ -76,6 +76,8 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
|
|
|
76
76
|
return [4 /*yield*/, f.resolveWhere()];
|
|
77
77
|
case 2:
|
|
78
78
|
where = _b.sent();
|
|
79
|
+
if (!where)
|
|
80
|
+
return [2 /*return*/]; //since if any member of or is empty, then the entire or is irrelevant
|
|
79
81
|
if (where.length > 0) {
|
|
80
82
|
if (statement.length > 0) {
|
|
81
83
|
statement += " or ";
|
package/src/id-entity.js
CHANGED
|
@@ -9,7 +9,7 @@ var IdEntity = /** @class */ (function (_super) {
|
|
|
9
9
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
10
10
|
}
|
|
11
11
|
tslib_1.__decorate([
|
|
12
|
-
remult3_1.Fields.
|
|
12
|
+
remult3_1.Fields.uuid(),
|
|
13
13
|
tslib_1.__metadata("design:type", String)
|
|
14
14
|
], IdEntity.prototype, "id", void 0);
|
|
15
15
|
return IdEntity;
|
|
@@ -210,21 +210,21 @@ export declare const Fields1: {
|
|
|
210
210
|
String: () => (a: any) => void;
|
|
211
211
|
};
|
|
212
212
|
export declare class Fields {
|
|
213
|
-
static
|
|
214
|
-
static
|
|
215
|
-
static
|
|
216
|
-
static
|
|
217
|
-
static
|
|
218
|
-
static
|
|
219
|
-
static
|
|
220
|
-
static
|
|
221
|
-
static
|
|
213
|
+
static object<entityType = any, valueType = any>(...options: (FieldOptions<entityType, valueType> | ((options: FieldOptions<entityType, valueType>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
|
|
214
|
+
static dateOnly<entityType = any>(...options: (FieldOptions<entityType, Date> | ((options: FieldOptions<entityType, Date>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
|
|
215
|
+
static date<entityType = any>(...options: (FieldOptions<entityType, Date> | ((options: FieldOptions<entityType, Date>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
|
|
216
|
+
static integer<entityType = any>(...options: (FieldOptions<entityType, Number> | ((options: FieldOptions<entityType, Number>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
|
|
217
|
+
static autoIncrement<entityType = any>(...options: (FieldOptions<entityType, Number> | ((options: FieldOptions<entityType, Number>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
|
|
218
|
+
static number<entityType = any>(...options: (FieldOptions<entityType, Number> | ((options: FieldOptions<entityType, Number>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
|
|
219
|
+
static uuid<entityType = any>(...options: (FieldOptions<entityType, string> | ((options: FieldOptions<entityType, string>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
|
|
220
|
+
static string<entityType = any>(...options: (StringFieldOptions<entityType> | ((options: StringFieldOptions<entityType>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
|
|
221
|
+
static boolean<entityType = any>(...options: (FieldOptions<entityType, boolean> | ((options: FieldOptions<entityType, boolean>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
|
|
222
222
|
}
|
|
223
223
|
export declare function isAutoIncrement(f: FieldMetadata): boolean;
|
|
224
224
|
export interface StringFieldOptions<entityType = any> extends FieldOptions<entityType, string> {
|
|
225
225
|
maxLength?: number;
|
|
226
226
|
}
|
|
227
|
-
export declare function ValueListFieldType<entityType = any, valueType extends ValueListItem = any>(...options: (ValueListFieldOptions<entityType, valueType> | ((options: FieldOptions<entityType, valueType>, remult: Remult) => void))[]): (type: ClassType<valueType>) =>
|
|
227
|
+
export declare function ValueListFieldType<entityType = any, valueType extends ValueListItem = any>(...options: (ValueListFieldOptions<entityType, valueType> | ((options: FieldOptions<entityType, valueType>, remult: Remult) => void))[]): (type: ClassType<valueType>) => void;
|
|
228
228
|
export interface ValueListFieldOptions<entityType, valueType> extends FieldOptions<entityType, valueType> {
|
|
229
229
|
getValues?: () => valueType[];
|
|
230
230
|
}
|
|
@@ -235,6 +235,8 @@ export declare class ValueListInfo<T extends ValueListItem> implements ValueConv
|
|
|
235
235
|
private values;
|
|
236
236
|
isNumeric: boolean;
|
|
237
237
|
private constructor();
|
|
238
|
+
private loadedFromOptions;
|
|
239
|
+
loadFromDecoratorOptions(): void;
|
|
238
240
|
getValues(): T[];
|
|
239
241
|
byId(key: any): T;
|
|
240
242
|
fromJson(val: any): T;
|
|
@@ -274,12 +274,41 @@ var RepositoryImplementation = /** @class */ (function () {
|
|
|
274
274
|
};
|
|
275
275
|
RepositoryImplementation.prototype.find = function (options) {
|
|
276
276
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
277
|
-
|
|
278
|
-
|
|
277
|
+
function loadManyToOne(repo, toLoad) {
|
|
278
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
279
|
+
var rows, rows_1, rows_1_1, r;
|
|
280
|
+
var _a, e_6, _b;
|
|
281
|
+
return tslib_1.__generator(this, function (_c) {
|
|
282
|
+
switch (_c.label) {
|
|
283
|
+
case 0: return [4 /*yield*/, repo.find({ where: (_a = repo.metadata.idMetadata).getIdFilter.apply(_a, tslib_1.__spread(toLoad)) })];
|
|
284
|
+
case 1:
|
|
285
|
+
rows = _c.sent();
|
|
286
|
+
try {
|
|
287
|
+
for (rows_1 = tslib_1.__values(rows), rows_1_1 = rows_1.next(); !rows_1_1.done; rows_1_1 = rows_1.next()) {
|
|
288
|
+
r = rows_1_1.value;
|
|
289
|
+
repo.addToCache(r);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
293
|
+
finally {
|
|
294
|
+
try {
|
|
295
|
+
if (rows_1_1 && !rows_1_1.done && (_b = rows_1.return)) _b.call(rows_1);
|
|
296
|
+
}
|
|
297
|
+
finally { if (e_6) throw e_6.error; }
|
|
298
|
+
}
|
|
299
|
+
return [2 /*return*/];
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
var opt, _a, rawRows, loadFields, _b, _c, col, ei, load, repo, toLoad, rawRows_1, rawRows_1_1, r, val, e_4_1, result;
|
|
305
|
+
var e_4, _d, e_5, _e;
|
|
279
306
|
var _this = this;
|
|
280
|
-
return tslib_1.__generator(this, function (
|
|
281
|
-
switch (
|
|
307
|
+
return tslib_1.__generator(this, function (_f) {
|
|
308
|
+
switch (_f.label) {
|
|
282
309
|
case 0:
|
|
310
|
+
context_1.Remult.onFind(this._info, options);
|
|
311
|
+
;
|
|
283
312
|
opt = {};
|
|
284
313
|
if (!options)
|
|
285
314
|
options = {};
|
|
@@ -290,21 +319,21 @@ var RepositoryImplementation = /** @class */ (function () {
|
|
|
290
319
|
_a = opt;
|
|
291
320
|
return [4 /*yield*/, this.translateWhereToFilter(options.where)];
|
|
292
321
|
case 1:
|
|
293
|
-
_a.where =
|
|
322
|
+
_a.where = _f.sent();
|
|
294
323
|
opt.orderBy = sort_1.Sort.translateOrderByToSort(this.metadata, options.orderBy);
|
|
295
324
|
opt.limit = options.limit;
|
|
296
325
|
opt.page = options.page;
|
|
297
326
|
return [4 /*yield*/, this.edp.find(opt)];
|
|
298
327
|
case 2:
|
|
299
|
-
rawRows =
|
|
328
|
+
rawRows = _f.sent();
|
|
300
329
|
loadFields = undefined;
|
|
301
330
|
if (options.load)
|
|
302
331
|
loadFields = options.load(this.metadata.fields);
|
|
303
|
-
|
|
332
|
+
_f.label = 3;
|
|
304
333
|
case 3:
|
|
305
|
-
|
|
334
|
+
_f.trys.push([3, 8, 9, 10]);
|
|
306
335
|
_b = tslib_1.__values(this.metadata.fields), _c = _b.next();
|
|
307
|
-
|
|
336
|
+
_f.label = 4;
|
|
308
337
|
case 4:
|
|
309
338
|
if (!!_c.done) return [3 /*break*/, 7];
|
|
310
339
|
col = _c.value;
|
|
@@ -333,29 +362,16 @@ var RepositoryImplementation = /** @class */ (function () {
|
|
|
333
362
|
finally { if (e_5) throw e_5.error; }
|
|
334
363
|
}
|
|
335
364
|
if (!(toLoad.length > 0)) return [3 /*break*/, 6];
|
|
336
|
-
return [4 /*yield*/,
|
|
365
|
+
return [4 /*yield*/, loadManyToOne(repo, toLoad)];
|
|
337
366
|
case 5:
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
for (rows_1 = (e_6 = void 0, tslib_1.__values(rows)), rows_1_1 = rows_1.next(); !rows_1_1.done; rows_1_1 = rows_1.next()) {
|
|
341
|
-
r = rows_1_1.value;
|
|
342
|
-
repo.addToCache(r);
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
346
|
-
finally {
|
|
347
|
-
try {
|
|
348
|
-
if (rows_1_1 && !rows_1_1.done && (_g = rows_1.return)) _g.call(rows_1);
|
|
349
|
-
}
|
|
350
|
-
finally { if (e_6) throw e_6.error; }
|
|
351
|
-
}
|
|
352
|
-
_h.label = 6;
|
|
367
|
+
_f.sent();
|
|
368
|
+
_f.label = 6;
|
|
353
369
|
case 6:
|
|
354
370
|
_c = _b.next();
|
|
355
371
|
return [3 /*break*/, 4];
|
|
356
372
|
case 7: return [3 /*break*/, 10];
|
|
357
373
|
case 8:
|
|
358
|
-
e_4_1 =
|
|
374
|
+
e_4_1 = _f.sent();
|
|
359
375
|
e_4 = { error: e_4_1 };
|
|
360
376
|
return [3 /*break*/, 10];
|
|
361
377
|
case 9:
|
|
@@ -371,7 +387,7 @@ var RepositoryImplementation = /** @class */ (function () {
|
|
|
371
387
|
}
|
|
372
388
|
}); }); }))];
|
|
373
389
|
case 11:
|
|
374
|
-
result =
|
|
390
|
+
result = _f.sent();
|
|
375
391
|
return [2 /*return*/, result];
|
|
376
392
|
}
|
|
377
393
|
});
|
|
@@ -2165,14 +2181,14 @@ exports.Fields1 = {
|
|
|
2165
2181
|
var Fields = /** @class */ (function () {
|
|
2166
2182
|
function Fields() {
|
|
2167
2183
|
}
|
|
2168
|
-
Fields.
|
|
2184
|
+
Fields.object = function () {
|
|
2169
2185
|
var options = [];
|
|
2170
2186
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2171
2187
|
options[_i] = arguments[_i];
|
|
2172
2188
|
}
|
|
2173
2189
|
return Field.apply(void 0, tslib_1.__spread([undefined], options));
|
|
2174
2190
|
};
|
|
2175
|
-
Fields.
|
|
2191
|
+
Fields.dateOnly = function () {
|
|
2176
2192
|
var options = [];
|
|
2177
2193
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2178
2194
|
options[_i] = arguments[_i];
|
|
@@ -2181,14 +2197,14 @@ var Fields = /** @class */ (function () {
|
|
|
2181
2197
|
valueConverter: valueConverters_1.ValueConverters.DateOnly
|
|
2182
2198
|
}], options));
|
|
2183
2199
|
};
|
|
2184
|
-
Fields.
|
|
2200
|
+
Fields.date = function () {
|
|
2185
2201
|
var options = [];
|
|
2186
2202
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2187
2203
|
options[_i] = arguments[_i];
|
|
2188
2204
|
}
|
|
2189
2205
|
return Field.apply(void 0, tslib_1.__spread([function () { return Date; }], options));
|
|
2190
2206
|
};
|
|
2191
|
-
Fields.
|
|
2207
|
+
Fields.integer = function () {
|
|
2192
2208
|
var options = [];
|
|
2193
2209
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2194
2210
|
options[_i] = arguments[_i];
|
|
@@ -2197,7 +2213,7 @@ var Fields = /** @class */ (function () {
|
|
|
2197
2213
|
valueConverter: valueConverters_1.ValueConverters.Integer
|
|
2198
2214
|
}], options));
|
|
2199
2215
|
};
|
|
2200
|
-
Fields.
|
|
2216
|
+
Fields.autoIncrement = function () {
|
|
2201
2217
|
var options = [];
|
|
2202
2218
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2203
2219
|
options[_i] = arguments[_i];
|
|
@@ -2208,14 +2224,14 @@ var Fields = /** @class */ (function () {
|
|
|
2208
2224
|
valueConverter: tslib_1.__assign(tslib_1.__assign({}, valueConverters_1.ValueConverters.Integer), { fieldTypeInDb: 'autoincrement' })
|
|
2209
2225
|
}], options));
|
|
2210
2226
|
};
|
|
2211
|
-
Fields.
|
|
2227
|
+
Fields.number = function () {
|
|
2212
2228
|
var options = [];
|
|
2213
2229
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2214
2230
|
options[_i] = arguments[_i];
|
|
2215
2231
|
}
|
|
2216
2232
|
return Field.apply(void 0, tslib_1.__spread([function () { return Number; }], options));
|
|
2217
2233
|
};
|
|
2218
|
-
Fields.
|
|
2234
|
+
Fields.uuid = function () {
|
|
2219
2235
|
var options = [];
|
|
2220
2236
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2221
2237
|
options[_i] = arguments[_i];
|
|
@@ -2225,14 +2241,14 @@ var Fields = /** @class */ (function () {
|
|
|
2225
2241
|
defaultValue: function () { return uuid_1.v4(); }
|
|
2226
2242
|
}], options));
|
|
2227
2243
|
};
|
|
2228
|
-
Fields.
|
|
2244
|
+
Fields.string = function () {
|
|
2229
2245
|
var options = [];
|
|
2230
2246
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2231
2247
|
options[_i] = arguments[_i];
|
|
2232
2248
|
}
|
|
2233
2249
|
return Field.apply(void 0, tslib_1.__spread([function () { return String; }], options));
|
|
2234
2250
|
};
|
|
2235
|
-
Fields.
|
|
2251
|
+
Fields.boolean = function () {
|
|
2236
2252
|
var options = [];
|
|
2237
2253
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2238
2254
|
options[_i] = arguments[_i];
|
|
@@ -2253,29 +2269,30 @@ function ValueListFieldType() {
|
|
|
2253
2269
|
options[_i] = arguments[_i];
|
|
2254
2270
|
}
|
|
2255
2271
|
return function (type) {
|
|
2256
|
-
|
|
2272
|
+
FieldType.apply(void 0, tslib_1.__spread([function (o) {
|
|
2257
2273
|
o.valueConverter = ValueListInfo.get(type),
|
|
2258
2274
|
o.displayValue = function (item, val) { return val.caption; };
|
|
2259
2275
|
}], options))(type);
|
|
2276
|
+
ValueListInfo.get(type).loadFromDecoratorOptions();
|
|
2260
2277
|
};
|
|
2261
2278
|
}
|
|
2262
2279
|
exports.ValueListFieldType = ValueListFieldType;
|
|
2263
2280
|
var ValueListInfo = /** @class */ (function () {
|
|
2264
2281
|
function ValueListInfo(valueListType) {
|
|
2265
|
-
var e_30, _a;
|
|
2266
2282
|
this.valueListType = valueListType;
|
|
2267
2283
|
this.byIdMap = new Map();
|
|
2268
2284
|
this.values = [];
|
|
2269
2285
|
this.isNumeric = false;
|
|
2286
|
+
this.loadedFromOptions = false;
|
|
2270
2287
|
for (var member in this.valueListType) {
|
|
2271
2288
|
var s = this.valueListType[member];
|
|
2272
2289
|
if (s instanceof this.valueListType) {
|
|
2273
2290
|
if (s.id === undefined)
|
|
2274
2291
|
s.id = member;
|
|
2275
|
-
if (s.caption === undefined)
|
|
2276
|
-
s.caption = column_1.makeTitle(member);
|
|
2277
2292
|
if (typeof s.id === 'number')
|
|
2278
2293
|
this.isNumeric = true;
|
|
2294
|
+
if (s.caption === undefined)
|
|
2295
|
+
s.caption = column_1.makeTitle(s.id !== undefined ? s.id.toString() : member);
|
|
2279
2296
|
this.byIdMap.set(s.id, s);
|
|
2280
2297
|
this.values.push(s);
|
|
2281
2298
|
}
|
|
@@ -2283,13 +2300,32 @@ var ValueListInfo = /** @class */ (function () {
|
|
|
2283
2300
|
if (this.isNumeric) {
|
|
2284
2301
|
this.fieldTypeInDb = 'integer';
|
|
2285
2302
|
}
|
|
2286
|
-
|
|
2287
|
-
|
|
2303
|
+
}
|
|
2304
|
+
ValueListInfo.get = function (type) {
|
|
2305
|
+
var r = typeCache.get(type);
|
|
2306
|
+
if (!r) {
|
|
2307
|
+
r = new ValueListInfo(type);
|
|
2308
|
+
typeCache.set(type, r);
|
|
2309
|
+
}
|
|
2310
|
+
return r;
|
|
2311
|
+
};
|
|
2312
|
+
ValueListInfo.prototype.loadFromDecoratorOptions = function () {
|
|
2313
|
+
var e_30, _a, _b;
|
|
2314
|
+
if (this.loadedFromOptions)
|
|
2315
|
+
return;
|
|
2316
|
+
var options = Reflect.getMetadata(exports.storableMember, this.valueListType);
|
|
2317
|
+
if (options) {
|
|
2318
|
+
this.loadedFromOptions = true;
|
|
2288
2319
|
try {
|
|
2289
2320
|
for (var options_1 = tslib_1.__values(options), options_1_1 = options_1.next(); !options_1_1.done; options_1_1 = options_1.next()) {
|
|
2290
2321
|
var op = options_1_1.value;
|
|
2291
|
-
if (op === null || op === void 0 ? void 0 : op.getValues)
|
|
2292
|
-
this.values
|
|
2322
|
+
if (op === null || op === void 0 ? void 0 : op.getValues) {
|
|
2323
|
+
(_b = this.values).splice.apply(_b, tslib_1.__spread([0, this.values.length], op.getValues()));
|
|
2324
|
+
this.values.forEach(function (s) {
|
|
2325
|
+
if (s.caption === undefined && s.id !== undefined)
|
|
2326
|
+
s.caption = column_1.makeTitle(s.id);
|
|
2327
|
+
});
|
|
2328
|
+
}
|
|
2293
2329
|
}
|
|
2294
2330
|
}
|
|
2295
2331
|
catch (e_30_1) { e_30 = { error: e_30_1 }; }
|
|
@@ -2299,18 +2335,16 @@ var ValueListInfo = /** @class */ (function () {
|
|
|
2299
2335
|
}
|
|
2300
2336
|
finally { if (e_30) throw e_30.error; }
|
|
2301
2337
|
}
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
if (!r)
|
|
2306
|
-
r = new ValueListInfo(type);
|
|
2307
|
-
typeCache.set(type, r);
|
|
2308
|
-
return r;
|
|
2338
|
+
if (this.values.find(function (s) { return s.id === undefined; }))
|
|
2339
|
+
throw new Error("Type " + this.valueListType + " has values without an id");
|
|
2340
|
+
}
|
|
2309
2341
|
};
|
|
2310
2342
|
ValueListInfo.prototype.getValues = function () {
|
|
2343
|
+
this.loadFromDecoratorOptions();
|
|
2311
2344
|
return this.values;
|
|
2312
2345
|
};
|
|
2313
2346
|
ValueListInfo.prototype.byId = function (key) {
|
|
2347
|
+
this.loadFromDecoratorOptions();
|
|
2314
2348
|
if (this.isNumeric)
|
|
2315
2349
|
key = +key;
|
|
2316
2350
|
return this.byIdMap.get(key);
|
|
@@ -111,6 +111,42 @@ db_tests_setup_1.testAll("filter works on all db or", function (_a) {
|
|
|
111
111
|
});
|
|
112
112
|
});
|
|
113
113
|
}, false);
|
|
114
|
+
db_tests_setup_1.testAll("filter works on all db or_1", function (_a) {
|
|
115
|
+
var createEntity = _a.createEntity;
|
|
116
|
+
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
117
|
+
var s, _b;
|
|
118
|
+
return tslib_1.__generator(this, function (_c) {
|
|
119
|
+
switch (_c.label) {
|
|
120
|
+
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
121
|
+
case 1:
|
|
122
|
+
s = _c.sent();
|
|
123
|
+
_b = expect;
|
|
124
|
+
return [4 /*yield*/, s.find({ where: { $or: [{}, {}] } })];
|
|
125
|
+
case 2:
|
|
126
|
+
_b.apply(void 0, [(_c.sent()).length]).toBe(4);
|
|
127
|
+
return [2 /*return*/];
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
}, false);
|
|
132
|
+
db_tests_setup_1.testAll("filter works on all db or_2", function (_a) {
|
|
133
|
+
var createEntity = _a.createEntity;
|
|
134
|
+
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
135
|
+
var s, _b;
|
|
136
|
+
return tslib_1.__generator(this, function (_c) {
|
|
137
|
+
switch (_c.label) {
|
|
138
|
+
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
139
|
+
case 1:
|
|
140
|
+
s = _c.sent();
|
|
141
|
+
_b = expect;
|
|
142
|
+
return [4 /*yield*/, s.find({ where: { $or: [{}, { myId: 3 }] } })];
|
|
143
|
+
case 2:
|
|
144
|
+
_b.apply(void 0, [(_c.sent()).length]).toBe(4);
|
|
145
|
+
return [2 /*return*/];
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
}, false);
|
|
114
150
|
db_tests_setup_1.testAll("entity with different id column still works well", function (_a) {
|
|
115
151
|
var createEntity = _a.createEntity;
|
|
116
152
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
@@ -290,11 +326,11 @@ var testDateWithNull = /** @class */ (function (_super) {
|
|
|
290
326
|
return _this;
|
|
291
327
|
}
|
|
292
328
|
tslib_1.__decorate([
|
|
293
|
-
remult3_1.Fields.
|
|
329
|
+
remult3_1.Fields.integer(),
|
|
294
330
|
tslib_1.__metadata("design:type", Number)
|
|
295
331
|
], testDateWithNull.prototype, "id", void 0);
|
|
296
332
|
tslib_1.__decorate([
|
|
297
|
-
remult3_1.Fields.
|
|
333
|
+
remult3_1.Fields.dateOnly({ allowNull: true }),
|
|
298
334
|
tslib_1.__metadata("design:type", Date)
|
|
299
335
|
], testDateWithNull.prototype, "d", void 0);
|
|
300
336
|
testDateWithNull = tslib_1.__decorate([
|
|
@@ -778,7 +814,7 @@ db_tests_setup_1.testAll("Test unique Validation,", function (_a) {
|
|
|
778
814
|
return class_1;
|
|
779
815
|
}(remult_3_entities_1.Categories));
|
|
780
816
|
remult3_1.Entity('categories')(type);
|
|
781
|
-
remult3_1.Fields.
|
|
817
|
+
remult3_1.Fields.string({
|
|
782
818
|
validate: function (en, col) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
783
819
|
return tslib_1.__generator(this, function (_a) {
|
|
784
820
|
switch (_a.label) {
|
|
@@ -840,7 +876,7 @@ db_tests_setup_1.testAll("Test unique Validation 2", function (_a) {
|
|
|
840
876
|
return class_2;
|
|
841
877
|
}(remult_3_entities_1.Categories));
|
|
842
878
|
remult3_1.Entity('sdfgds')(type);
|
|
843
|
-
remult3_1.Fields.
|
|
879
|
+
remult3_1.Fields.string({
|
|
844
880
|
validate: validators_1.Validators.unique
|
|
845
881
|
})(type.prototype, "a");
|
|
846
882
|
return [4 /*yield*/, createEntity(type)];
|
|
@@ -879,11 +915,11 @@ var testNumbers = /** @class */ (function (_super) {
|
|
|
879
915
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
880
916
|
}
|
|
881
917
|
tslib_1.__decorate([
|
|
882
|
-
remult3_1.Fields.
|
|
918
|
+
remult3_1.Fields.integer(),
|
|
883
919
|
tslib_1.__metadata("design:type", Number)
|
|
884
920
|
], testNumbers.prototype, "id", void 0);
|
|
885
921
|
tslib_1.__decorate([
|
|
886
|
-
remult3_1.Fields.
|
|
922
|
+
remult3_1.Fields.number(),
|
|
887
923
|
tslib_1.__metadata("design:type", Number)
|
|
888
924
|
], testNumbers.prototype, "a", void 0);
|
|
889
925
|
testNumbers = tslib_1.__decorate([
|
|
@@ -1123,8 +1159,8 @@ db_tests_setup_1.testAll("saves correctly to db", function (_a) {
|
|
|
1123
1159
|
return class_3;
|
|
1124
1160
|
}(remult3_1.EntityBase));
|
|
1125
1161
|
remult3_1.Entity('asdf', { allowApiCrud: true })(type);
|
|
1126
|
-
remult3_1.Fields.
|
|
1127
|
-
remult3_1.Fields.
|
|
1162
|
+
remult3_1.Fields.number()(type.prototype, 'id');
|
|
1163
|
+
remult3_1.Fields.boolean()(type.prototype, "ok");
|
|
1128
1164
|
return [4 /*yield*/, createEntity(type)];
|
|
1129
1165
|
case 1:
|
|
1130
1166
|
r = (_b.sent()).create();
|
|
@@ -1150,11 +1186,11 @@ var autoIncrement = /** @class */ (function (_super) {
|
|
|
1150
1186
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
1151
1187
|
}
|
|
1152
1188
|
tslib_1.__decorate([
|
|
1153
|
-
remult3_1.Fields.
|
|
1189
|
+
remult3_1.Fields.autoIncrement(),
|
|
1154
1190
|
tslib_1.__metadata("design:type", Number)
|
|
1155
1191
|
], autoIncrement.prototype, "id", void 0);
|
|
1156
1192
|
tslib_1.__decorate([
|
|
1157
|
-
remult3_1.Fields.
|
|
1193
|
+
remult3_1.Fields.integer(),
|
|
1158
1194
|
tslib_1.__metadata("design:type", Number)
|
|
1159
1195
|
], autoIncrement.prototype, "stam", void 0);
|
|
1160
1196
|
autoIncrement = tslib_1.__decorate([
|
|
@@ -1270,19 +1306,19 @@ var testFilter = /** @class */ (function () {
|
|
|
1270
1306
|
}]
|
|
1271
1307
|
}); });
|
|
1272
1308
|
tslib_1.__decorate([
|
|
1273
|
-
remult3_1.Fields.
|
|
1309
|
+
remult3_1.Fields.integer(),
|
|
1274
1310
|
tslib_1.__metadata("design:type", Number)
|
|
1275
1311
|
], testFilter.prototype, "id", void 0);
|
|
1276
1312
|
tslib_1.__decorate([
|
|
1277
|
-
remult3_1.Fields.
|
|
1313
|
+
remult3_1.Fields.string(),
|
|
1278
1314
|
tslib_1.__metadata("design:type", String)
|
|
1279
1315
|
], testFilter.prototype, "a", void 0);
|
|
1280
1316
|
tslib_1.__decorate([
|
|
1281
|
-
remult3_1.Fields.
|
|
1317
|
+
remult3_1.Fields.string(),
|
|
1282
1318
|
tslib_1.__metadata("design:type", String)
|
|
1283
1319
|
], testFilter.prototype, "b", void 0);
|
|
1284
1320
|
tslib_1.__decorate([
|
|
1285
|
-
remult3_1.Fields.
|
|
1321
|
+
remult3_1.Fields.string(),
|
|
1286
1322
|
tslib_1.__metadata("design:type", String)
|
|
1287
1323
|
], testFilter.prototype, "c", void 0);
|
|
1288
1324
|
testFilter = tslib_1.__decorate([
|
|
@@ -1298,11 +1334,11 @@ var testStringWithNull = /** @class */ (function (_super) {
|
|
|
1298
1334
|
return _this;
|
|
1299
1335
|
}
|
|
1300
1336
|
tslib_1.__decorate([
|
|
1301
|
-
remult3_1.Fields.
|
|
1337
|
+
remult3_1.Fields.integer(),
|
|
1302
1338
|
tslib_1.__metadata("design:type", Number)
|
|
1303
1339
|
], testStringWithNull.prototype, "id", void 0);
|
|
1304
1340
|
tslib_1.__decorate([
|
|
1305
|
-
remult3_1.Fields.
|
|
1341
|
+
remult3_1.Fields.string({ allowNull: true }),
|
|
1306
1342
|
tslib_1.__metadata("design:type", String)
|
|
1307
1343
|
], testStringWithNull.prototype, "d", void 0);
|
|
1308
1344
|
testStringWithNull = tslib_1.__decorate([
|
|
@@ -1319,11 +1355,11 @@ var stam = /** @class */ (function (_super) {
|
|
|
1319
1355
|
return _this;
|
|
1320
1356
|
}
|
|
1321
1357
|
tslib_1.__decorate([
|
|
1322
|
-
remult3_1.Fields.
|
|
1358
|
+
remult3_1.Fields.integer(),
|
|
1323
1359
|
tslib_1.__metadata("design:type", Number)
|
|
1324
1360
|
], stam.prototype, "id", void 0);
|
|
1325
1361
|
tslib_1.__decorate([
|
|
1326
|
-
remult3_1.Fields.
|
|
1362
|
+
remult3_1.Fields.string({ maxLength: 1500 }),
|
|
1327
1363
|
tslib_1.__metadata("design:type", String)
|
|
1328
1364
|
], stam.prototype, "title", void 0);
|
|
1329
1365
|
stam = tslib_1.__decorate([
|
|
@@ -1340,11 +1376,11 @@ var p = /** @class */ (function (_super) {
|
|
|
1340
1376
|
return _this;
|
|
1341
1377
|
}
|
|
1342
1378
|
tslib_1.__decorate([
|
|
1343
|
-
remult3_1.Fields.
|
|
1379
|
+
remult3_1.Fields.integer(),
|
|
1344
1380
|
tslib_1.__metadata("design:type", Number)
|
|
1345
1381
|
], p.prototype, "id", void 0);
|
|
1346
1382
|
tslib_1.__decorate([
|
|
1347
|
-
remult3_1.Fields.
|
|
1383
|
+
remult3_1.Fields.string(),
|
|
1348
1384
|
tslib_1.__metadata("design:type", String)
|
|
1349
1385
|
], p.prototype, "name", void 0);
|
|
1350
1386
|
tslib_1.__decorate([
|
|
@@ -53,11 +53,11 @@ var entityWithValidations = /** @class */ (function (_super) {
|
|
|
53
53
|
var entityWithValidations_1;
|
|
54
54
|
entityWithValidations.savingRowCount = 0;
|
|
55
55
|
tslib_1.__decorate([
|
|
56
|
-
remult3_1.Fields.
|
|
56
|
+
remult3_1.Fields.integer(),
|
|
57
57
|
tslib_1.__metadata("design:type", Number)
|
|
58
58
|
], entityWithValidations.prototype, "myId", void 0);
|
|
59
59
|
tslib_1.__decorate([
|
|
60
|
-
remult3_1.Fields.
|
|
60
|
+
remult3_1.Fields.string(),
|
|
61
61
|
tslib_1.__metadata("design:type", String)
|
|
62
62
|
], entityWithValidations.prototype, "name", void 0);
|
|
63
63
|
entityWithValidations = entityWithValidations_1 = tslib_1.__decorate([
|
|
@@ -19,8 +19,8 @@ describe("custom id column", function () {
|
|
|
19
19
|
return class_1;
|
|
20
20
|
}(remult3_1.EntityBase));
|
|
21
21
|
remult3_1.BuildEntity(type, 'custom', {
|
|
22
|
-
a: remult3_1.Fields.
|
|
23
|
-
b: remult3_1.Fields.
|
|
22
|
+
a: remult3_1.Fields.number(),
|
|
23
|
+
b: remult3_1.Fields.number()
|
|
24
24
|
}, { allowApiCrud: true });
|
|
25
25
|
return [4 /*yield*/, createEntity(type)];
|
|
26
26
|
case 1:
|
|
@@ -58,8 +58,8 @@ describe("custom id column", function () {
|
|
|
58
58
|
return class_2;
|
|
59
59
|
}(remult3_1.EntityBase));
|
|
60
60
|
remult3_1.Entity('custom2', { allowApiCrud: true })(type);
|
|
61
|
-
remult3_1.Fields.
|
|
62
|
-
remult3_1.Fields.
|
|
61
|
+
remult3_1.Fields.number()(type.prototype, 'a');
|
|
62
|
+
remult3_1.Fields.number()(type.prototype, 'id');
|
|
63
63
|
return [4 /*yield*/, createEntity(type)];
|
|
64
64
|
case 1:
|
|
65
65
|
c = _c.sent();
|
|
@@ -66,7 +66,7 @@ var testGroups = /** @class */ (function (_super) {
|
|
|
66
66
|
return _this;
|
|
67
67
|
}
|
|
68
68
|
tslib_1.__decorate([
|
|
69
|
-
remult3_1.Fields.
|
|
69
|
+
remult3_1.Fields.integer(),
|
|
70
70
|
tslib_1.__metadata("design:type", Number)
|
|
71
71
|
], testGroups.prototype, "id", void 0);
|
|
72
72
|
tslib_1.__decorate([
|
|
@@ -11,7 +11,7 @@ var testNull = /** @class */ (function (_super) {
|
|
|
11
11
|
return _this;
|
|
12
12
|
}
|
|
13
13
|
tslib_1.__decorate([
|
|
14
|
-
remult3_1.Fields.
|
|
14
|
+
remult3_1.Fields.integer(),
|
|
15
15
|
tslib_1.__metadata("design:type", Number)
|
|
16
16
|
], testNull.prototype, "id", void 0);
|
|
17
17
|
tslib_1.__decorate([
|
package/src/tests/c.js
CHANGED
|
@@ -12,11 +12,11 @@ var c = /** @class */ (function (_super) {
|
|
|
12
12
|
return _this;
|
|
13
13
|
}
|
|
14
14
|
tslib_1.__decorate([
|
|
15
|
-
remult3_1.Fields.
|
|
15
|
+
remult3_1.Fields.integer(),
|
|
16
16
|
tslib_1.__metadata("design:type", Number)
|
|
17
17
|
], c.prototype, "id", void 0);
|
|
18
18
|
tslib_1.__decorate([
|
|
19
|
-
remult3_1.Fields.
|
|
19
|
+
remult3_1.Fields.string(),
|
|
20
20
|
tslib_1.__metadata("design:type", String)
|
|
21
21
|
], c.prototype, "name", void 0);
|
|
22
22
|
c = tslib_1.__decorate([
|
package/src/tests/d.js
CHANGED
|
@@ -20,11 +20,11 @@ var d = /** @class */ (function (_super) {
|
|
|
20
20
|
};
|
|
21
21
|
d.count = 0;
|
|
22
22
|
tslib_1.__decorate([
|
|
23
|
-
remult3_1.Fields.
|
|
23
|
+
remult3_1.Fields.integer(),
|
|
24
24
|
tslib_1.__metadata("design:type", Number)
|
|
25
25
|
], d.prototype, "id", void 0);
|
|
26
26
|
tslib_1.__decorate([
|
|
27
|
-
remult3_1.Fields.
|
|
27
|
+
remult3_1.Fields.integer(),
|
|
28
28
|
tslib_1.__metadata("design:type", Number)
|
|
29
29
|
], d.prototype, "b", void 0);
|
|
30
30
|
tslib_1.__decorate([
|
|
@@ -21,11 +21,11 @@ var dWithPrefilter = /** @class */ (function (_super) {
|
|
|
21
21
|
var dWithPrefilter_1;
|
|
22
22
|
dWithPrefilter.count = 0;
|
|
23
23
|
tslib_1.__decorate([
|
|
24
|
-
remult3_1.Fields.
|
|
24
|
+
remult3_1.Fields.integer(),
|
|
25
25
|
tslib_1.__metadata("design:type", Number)
|
|
26
26
|
], dWithPrefilter.prototype, "id", void 0);
|
|
27
27
|
tslib_1.__decorate([
|
|
28
|
-
remult3_1.Fields.
|
|
28
|
+
remult3_1.Fields.integer(),
|
|
29
29
|
tslib_1.__metadata("design:type", Number)
|
|
30
30
|
], dWithPrefilter.prototype, "b", void 0);
|
|
31
31
|
tslib_1.__decorate([
|
|
@@ -46,7 +46,7 @@ var entityForCustomFilter = /** @class */ (function (_super) {
|
|
|
46
46
|
entityForCustomFilter.testNumericValue = filter_interfaces_1.Filter.createCustom(function (r, val) { return ({ id: val }); });
|
|
47
47
|
entityForCustomFilter.testObjectValue = filter_interfaces_1.Filter.createCustom(function (r, val) { return ({ id: val.val }); });
|
|
48
48
|
tslib_1.__decorate([
|
|
49
|
-
remult3_1.Fields.
|
|
49
|
+
remult3_1.Fields.integer(),
|
|
50
50
|
tslib_1.__metadata("design:type", Number)
|
|
51
51
|
], entityForCustomFilter.prototype, "id", void 0);
|
|
52
52
|
entityForCustomFilter = entityForCustomFilter_1 = tslib_1.__decorate([
|
|
@@ -9,11 +9,11 @@ var entityWithValidationsOnColumn = /** @class */ (function (_super) {
|
|
|
9
9
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
10
10
|
}
|
|
11
11
|
tslib_1.__decorate([
|
|
12
|
-
remult3_1.Fields.
|
|
12
|
+
remult3_1.Fields.integer(),
|
|
13
13
|
tslib_1.__metadata("design:type", Number)
|
|
14
14
|
], entityWithValidationsOnColumn.prototype, "myId", void 0);
|
|
15
15
|
tslib_1.__decorate([
|
|
16
|
-
remult3_1.Fields.
|
|
16
|
+
remult3_1.Fields.string({
|
|
17
17
|
validate: function (t, c) {
|
|
18
18
|
if (!t.name || t.name.length < 3)
|
|
19
19
|
c.error = 'invalid on column';
|
package/src/tests/h.js
CHANGED
|
@@ -11,7 +11,7 @@ var h = /** @class */ (function (_super) {
|
|
|
11
11
|
h_1 = h;
|
|
12
12
|
var h_1;
|
|
13
13
|
tslib_1.__decorate([
|
|
14
|
-
remult3_1.Fields.
|
|
14
|
+
remult3_1.Fields.string(),
|
|
15
15
|
tslib_1.__metadata("design:type", String)
|
|
16
16
|
], h.prototype, "id", void 0);
|
|
17
17
|
tslib_1.__decorate([
|
|
@@ -19,7 +19,7 @@ var h = /** @class */ (function (_super) {
|
|
|
19
19
|
tslib_1.__metadata("design:type", h)
|
|
20
20
|
], h.prototype, "refH", void 0);
|
|
21
21
|
tslib_1.__decorate([
|
|
22
|
-
remult3_1.Fields.
|
|
22
|
+
remult3_1.Fields.string(),
|
|
23
23
|
tslib_1.__metadata("design:type", String)
|
|
24
24
|
], h.prototype, "refHId", void 0);
|
|
25
25
|
h = h_1 = tslib_1.__decorate([
|
|
@@ -8,23 +8,23 @@ var Products = /** @class */ (function () {
|
|
|
8
8
|
function Products() {
|
|
9
9
|
}
|
|
10
10
|
tslib_1.__decorate([
|
|
11
|
-
remult3_1.Fields.
|
|
11
|
+
remult3_1.Fields.integer(),
|
|
12
12
|
tslib_1.__metadata("design:type", Number)
|
|
13
13
|
], Products.prototype, "id", void 0);
|
|
14
14
|
tslib_1.__decorate([
|
|
15
|
-
remult3_1.Fields.
|
|
15
|
+
remult3_1.Fields.string(),
|
|
16
16
|
tslib_1.__metadata("design:type", String)
|
|
17
17
|
], Products.prototype, "name", void 0);
|
|
18
18
|
tslib_1.__decorate([
|
|
19
|
-
remult3_1.Fields.
|
|
19
|
+
remult3_1.Fields.number(),
|
|
20
20
|
tslib_1.__metadata("design:type", Number)
|
|
21
21
|
], Products.prototype, "price", void 0);
|
|
22
22
|
tslib_1.__decorate([
|
|
23
|
-
remult3_1.Fields.
|
|
23
|
+
remult3_1.Fields.boolean(),
|
|
24
24
|
tslib_1.__metadata("design:type", Boolean)
|
|
25
25
|
], Products.prototype, "archived", void 0);
|
|
26
26
|
tslib_1.__decorate([
|
|
27
|
-
remult3_1.Fields.
|
|
27
|
+
remult3_1.Fields.date(),
|
|
28
28
|
tslib_1.__metadata("design:type", Date)
|
|
29
29
|
], Products.prototype, "availableFrom", void 0);
|
|
30
30
|
Products = tslib_1.__decorate([
|
|
@@ -42,27 +42,27 @@ var Categories = /** @class */ (function (_super) {
|
|
|
42
42
|
return _this;
|
|
43
43
|
}
|
|
44
44
|
tslib_1.__decorate([
|
|
45
|
-
remult3_1.Fields.
|
|
45
|
+
remult3_1.Fields.number({
|
|
46
46
|
dbName: 'CategoryID'
|
|
47
47
|
}),
|
|
48
48
|
tslib_1.__metadata("design:type", Number)
|
|
49
49
|
], Categories.prototype, "id", void 0);
|
|
50
50
|
tslib_1.__decorate([
|
|
51
|
-
remult3_1.Fields.
|
|
51
|
+
remult3_1.Fields.string({ allowNull: true }),
|
|
52
52
|
tslib_1.__metadata("design:type", String)
|
|
53
53
|
], Categories.prototype, "categoryName", void 0);
|
|
54
54
|
tslib_1.__decorate([
|
|
55
|
-
remult3_1.Fields.
|
|
55
|
+
remult3_1.Fields.string(),
|
|
56
56
|
tslib_1.__metadata("design:type", String)
|
|
57
57
|
], Categories.prototype, "description", void 0);
|
|
58
58
|
tslib_1.__decorate([
|
|
59
|
-
remult3_1.Fields.
|
|
59
|
+
remult3_1.Fields.number({
|
|
60
60
|
serverExpression: function (c) { return c.categoryName ? c.categoryName.length : undefined; }
|
|
61
61
|
}),
|
|
62
62
|
tslib_1.__metadata("design:type", Number)
|
|
63
63
|
], Categories.prototype, "categoryNameLength", void 0);
|
|
64
64
|
tslib_1.__decorate([
|
|
65
|
-
remult3_1.Fields.
|
|
65
|
+
remult3_1.Fields.number({
|
|
66
66
|
serverExpression: function (c) { return Promise.resolve(c.categoryName ? c.categoryName.length : undefined); }
|
|
67
67
|
}),
|
|
68
68
|
tslib_1.__metadata("design:type", Number)
|
package/src/tests/tasks.js
CHANGED
|
@@ -11,15 +11,15 @@ var tasks = /** @class */ (function (_super) {
|
|
|
11
11
|
return _this;
|
|
12
12
|
}
|
|
13
13
|
tslib_1.__decorate([
|
|
14
|
-
remult3_1.Fields.
|
|
14
|
+
remult3_1.Fields.integer(),
|
|
15
15
|
tslib_1.__metadata("design:type", Number)
|
|
16
16
|
], tasks.prototype, "id", void 0);
|
|
17
17
|
tslib_1.__decorate([
|
|
18
|
-
remult3_1.Fields.
|
|
18
|
+
remult3_1.Fields.string(),
|
|
19
19
|
tslib_1.__metadata("design:type", String)
|
|
20
20
|
], tasks.prototype, "name", void 0);
|
|
21
21
|
tslib_1.__decorate([
|
|
22
|
-
remult3_1.Fields.
|
|
22
|
+
remult3_1.Fields.boolean(),
|
|
23
23
|
tslib_1.__metadata("design:type", Boolean)
|
|
24
24
|
], tasks.prototype, "completed", void 0);
|
|
25
25
|
tasks = tslib_1.__decorate([
|