remult 0.13.5 → 0.13.8
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 +10 -10
- package/src/remult3/RepositoryImplementation.js +73 -46
- package/src/shared-tests/db-tests.db-tests.d.ts +11 -0
- package/src/shared-tests/db-tests.db-tests.js +117 -21
- 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/src/tests/testModel/models.js +9 -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
|
}
|
|
@@ -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,7 +2269,7 @@ 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);
|
|
@@ -2262,7 +2278,7 @@ function ValueListFieldType() {
|
|
|
2262
2278
|
exports.ValueListFieldType = ValueListFieldType;
|
|
2263
2279
|
var ValueListInfo = /** @class */ (function () {
|
|
2264
2280
|
function ValueListInfo(valueListType) {
|
|
2265
|
-
var e_30, _a;
|
|
2281
|
+
var e_30, _a, _b;
|
|
2266
2282
|
this.valueListType = valueListType;
|
|
2267
2283
|
this.byIdMap = new Map();
|
|
2268
2284
|
this.values = [];
|
|
@@ -2272,10 +2288,10 @@ var ValueListInfo = /** @class */ (function () {
|
|
|
2272
2288
|
if (s instanceof this.valueListType) {
|
|
2273
2289
|
if (s.id === undefined)
|
|
2274
2290
|
s.id = member;
|
|
2275
|
-
if (s.caption === undefined)
|
|
2276
|
-
s.caption = column_1.makeTitle(member);
|
|
2277
2291
|
if (typeof s.id === 'number')
|
|
2278
2292
|
this.isNumeric = true;
|
|
2293
|
+
if (s.caption === undefined)
|
|
2294
|
+
s.caption = column_1.makeTitle(s.id !== undefined ? s.id.toString() : member);
|
|
2279
2295
|
this.byIdMap.set(s.id, s);
|
|
2280
2296
|
this.values.push(s);
|
|
2281
2297
|
}
|
|
@@ -2283,13 +2299,18 @@ var ValueListInfo = /** @class */ (function () {
|
|
|
2283
2299
|
if (this.isNumeric) {
|
|
2284
2300
|
this.fieldTypeInDb = 'integer';
|
|
2285
2301
|
}
|
|
2286
|
-
var options = Reflect.getMetadata(exports.storableMember, valueListType);
|
|
2287
|
-
if (options)
|
|
2302
|
+
var options = Reflect.getMetadata(exports.storableMember, this.valueListType);
|
|
2303
|
+
if (options) {
|
|
2288
2304
|
try {
|
|
2289
2305
|
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
2306
|
var op = options_1_1.value;
|
|
2291
|
-
if (op === null || op === void 0 ? void 0 : op.getValues)
|
|
2292
|
-
this.values
|
|
2307
|
+
if (op === null || op === void 0 ? void 0 : op.getValues) {
|
|
2308
|
+
(_b = this.values).splice.apply(_b, tslib_1.__spread([0, this.values.length], op.getValues()));
|
|
2309
|
+
this.values.forEach(function (s) {
|
|
2310
|
+
if (s.caption === undefined && s.id !== undefined)
|
|
2311
|
+
s.caption = column_1.makeTitle(s.id);
|
|
2312
|
+
});
|
|
2313
|
+
}
|
|
2293
2314
|
}
|
|
2294
2315
|
}
|
|
2295
2316
|
catch (e_30_1) { e_30 = { error: e_30_1 }; }
|
|
@@ -2299,12 +2320,18 @@ var ValueListInfo = /** @class */ (function () {
|
|
|
2299
2320
|
}
|
|
2300
2321
|
finally { if (e_30) throw e_30.error; }
|
|
2301
2322
|
}
|
|
2323
|
+
if (this.values.find(function (s) { return s.id === undefined; }))
|
|
2324
|
+
throw new Error("ValueType " + this.valueListType + " has values without an id");
|
|
2325
|
+
}
|
|
2326
|
+
else
|
|
2327
|
+
throw new Error("ValueType not yet initialized, did you forget to call @ValueListFieldType on " + valueListType);
|
|
2302
2328
|
}
|
|
2303
2329
|
ValueListInfo.get = function (type) {
|
|
2304
2330
|
var r = typeCache.get(type);
|
|
2305
|
-
if (!r)
|
|
2331
|
+
if (!r) {
|
|
2306
2332
|
r = new ValueListInfo(type);
|
|
2307
|
-
|
|
2333
|
+
typeCache.set(type, r);
|
|
2334
|
+
}
|
|
2308
2335
|
return r;
|
|
2309
2336
|
};
|
|
2310
2337
|
ValueListInfo.prototype.getValues = function () {
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { EntityBase } from "../remult3";
|
|
2
|
+
import { IdEntity } from "../id-entity";
|
|
2
3
|
export declare class stam extends EntityBase {
|
|
3
4
|
id: number;
|
|
4
5
|
title: string;
|
|
5
6
|
}
|
|
7
|
+
export declare class tasksWithEnum extends IdEntity {
|
|
8
|
+
title: string;
|
|
9
|
+
completed: boolean;
|
|
10
|
+
priority: Priority;
|
|
11
|
+
}
|
|
12
|
+
export declare enum Priority {
|
|
13
|
+
Low = 0,
|
|
14
|
+
High = 1,
|
|
15
|
+
Critical = 2
|
|
16
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.stam = void 0;
|
|
3
|
+
exports.Priority = exports.tasksWithEnum = exports.stam = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var data_api_1 = require("../data-api");
|
|
6
6
|
var remult3_1 = require("../remult3");
|
|
@@ -20,6 +20,7 @@ var entityForCustomFilter_1 = require("../tests/entityForCustomFilter");
|
|
|
20
20
|
var entityWithValidationsOnColumn_1 = require("../tests/entityWithValidationsOnColumn");
|
|
21
21
|
var validators_1 = require("../validators");
|
|
22
22
|
var models_1 = require("../tests/testModel/models");
|
|
23
|
+
var id_entity_1 = require("../id-entity");
|
|
23
24
|
db_tests_setup_1.testAll("what", function (_a) {
|
|
24
25
|
var remult = _a.remult, createEntity = _a.createEntity;
|
|
25
26
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
@@ -111,6 +112,42 @@ db_tests_setup_1.testAll("filter works on all db or", function (_a) {
|
|
|
111
112
|
});
|
|
112
113
|
});
|
|
113
114
|
}, false);
|
|
115
|
+
db_tests_setup_1.testAll("filter works on all db or_1", function (_a) {
|
|
116
|
+
var createEntity = _a.createEntity;
|
|
117
|
+
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
118
|
+
var s, _b;
|
|
119
|
+
return tslib_1.__generator(this, function (_c) {
|
|
120
|
+
switch (_c.label) {
|
|
121
|
+
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
122
|
+
case 1:
|
|
123
|
+
s = _c.sent();
|
|
124
|
+
_b = expect;
|
|
125
|
+
return [4 /*yield*/, s.find({ where: { $or: [{}, {}] } })];
|
|
126
|
+
case 2:
|
|
127
|
+
_b.apply(void 0, [(_c.sent()).length]).toBe(4);
|
|
128
|
+
return [2 /*return*/];
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}, false);
|
|
133
|
+
db_tests_setup_1.testAll("filter works on all db or_2", function (_a) {
|
|
134
|
+
var createEntity = _a.createEntity;
|
|
135
|
+
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
136
|
+
var s, _b;
|
|
137
|
+
return tslib_1.__generator(this, function (_c) {
|
|
138
|
+
switch (_c.label) {
|
|
139
|
+
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
140
|
+
case 1:
|
|
141
|
+
s = _c.sent();
|
|
142
|
+
_b = expect;
|
|
143
|
+
return [4 /*yield*/, s.find({ where: { $or: [{}, { myId: 3 }] } })];
|
|
144
|
+
case 2:
|
|
145
|
+
_b.apply(void 0, [(_c.sent()).length]).toBe(4);
|
|
146
|
+
return [2 /*return*/];
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
}, false);
|
|
114
151
|
db_tests_setup_1.testAll("entity with different id column still works well", function (_a) {
|
|
115
152
|
var createEntity = _a.createEntity;
|
|
116
153
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
@@ -290,11 +327,11 @@ var testDateWithNull = /** @class */ (function (_super) {
|
|
|
290
327
|
return _this;
|
|
291
328
|
}
|
|
292
329
|
tslib_1.__decorate([
|
|
293
|
-
remult3_1.Fields.
|
|
330
|
+
remult3_1.Fields.integer(),
|
|
294
331
|
tslib_1.__metadata("design:type", Number)
|
|
295
332
|
], testDateWithNull.prototype, "id", void 0);
|
|
296
333
|
tslib_1.__decorate([
|
|
297
|
-
remult3_1.Fields.
|
|
334
|
+
remult3_1.Fields.dateOnly({ allowNull: true }),
|
|
298
335
|
tslib_1.__metadata("design:type", Date)
|
|
299
336
|
], testDateWithNull.prototype, "d", void 0);
|
|
300
337
|
testDateWithNull = tslib_1.__decorate([
|
|
@@ -778,7 +815,7 @@ db_tests_setup_1.testAll("Test unique Validation,", function (_a) {
|
|
|
778
815
|
return class_1;
|
|
779
816
|
}(remult_3_entities_1.Categories));
|
|
780
817
|
remult3_1.Entity('categories')(type);
|
|
781
|
-
remult3_1.Fields.
|
|
818
|
+
remult3_1.Fields.string({
|
|
782
819
|
validate: function (en, col) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
783
820
|
return tslib_1.__generator(this, function (_a) {
|
|
784
821
|
switch (_a.label) {
|
|
@@ -840,7 +877,7 @@ db_tests_setup_1.testAll("Test unique Validation 2", function (_a) {
|
|
|
840
877
|
return class_2;
|
|
841
878
|
}(remult_3_entities_1.Categories));
|
|
842
879
|
remult3_1.Entity('sdfgds')(type);
|
|
843
|
-
remult3_1.Fields.
|
|
880
|
+
remult3_1.Fields.string({
|
|
844
881
|
validate: validators_1.Validators.unique
|
|
845
882
|
})(type.prototype, "a");
|
|
846
883
|
return [4 /*yield*/, createEntity(type)];
|
|
@@ -879,11 +916,11 @@ var testNumbers = /** @class */ (function (_super) {
|
|
|
879
916
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
880
917
|
}
|
|
881
918
|
tslib_1.__decorate([
|
|
882
|
-
remult3_1.Fields.
|
|
919
|
+
remult3_1.Fields.integer(),
|
|
883
920
|
tslib_1.__metadata("design:type", Number)
|
|
884
921
|
], testNumbers.prototype, "id", void 0);
|
|
885
922
|
tslib_1.__decorate([
|
|
886
|
-
remult3_1.Fields.
|
|
923
|
+
remult3_1.Fields.number(),
|
|
887
924
|
tslib_1.__metadata("design:type", Number)
|
|
888
925
|
], testNumbers.prototype, "a", void 0);
|
|
889
926
|
testNumbers = tslib_1.__decorate([
|
|
@@ -1123,8 +1160,8 @@ db_tests_setup_1.testAll("saves correctly to db", function (_a) {
|
|
|
1123
1160
|
return class_3;
|
|
1124
1161
|
}(remult3_1.EntityBase));
|
|
1125
1162
|
remult3_1.Entity('asdf', { allowApiCrud: true })(type);
|
|
1126
|
-
remult3_1.Fields.
|
|
1127
|
-
remult3_1.Fields.
|
|
1163
|
+
remult3_1.Fields.number()(type.prototype, 'id');
|
|
1164
|
+
remult3_1.Fields.boolean()(type.prototype, "ok");
|
|
1128
1165
|
return [4 /*yield*/, createEntity(type)];
|
|
1129
1166
|
case 1:
|
|
1130
1167
|
r = (_b.sent()).create();
|
|
@@ -1150,11 +1187,11 @@ var autoIncrement = /** @class */ (function (_super) {
|
|
|
1150
1187
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
1151
1188
|
}
|
|
1152
1189
|
tslib_1.__decorate([
|
|
1153
|
-
remult3_1.Fields.
|
|
1190
|
+
remult3_1.Fields.autoIncrement(),
|
|
1154
1191
|
tslib_1.__metadata("design:type", Number)
|
|
1155
1192
|
], autoIncrement.prototype, "id", void 0);
|
|
1156
1193
|
tslib_1.__decorate([
|
|
1157
|
-
remult3_1.Fields.
|
|
1194
|
+
remult3_1.Fields.integer(),
|
|
1158
1195
|
tslib_1.__metadata("design:type", Number)
|
|
1159
1196
|
], autoIncrement.prototype, "stam", void 0);
|
|
1160
1197
|
autoIncrement = tslib_1.__decorate([
|
|
@@ -1270,19 +1307,19 @@ var testFilter = /** @class */ (function () {
|
|
|
1270
1307
|
}]
|
|
1271
1308
|
}); });
|
|
1272
1309
|
tslib_1.__decorate([
|
|
1273
|
-
remult3_1.Fields.
|
|
1310
|
+
remult3_1.Fields.integer(),
|
|
1274
1311
|
tslib_1.__metadata("design:type", Number)
|
|
1275
1312
|
], testFilter.prototype, "id", void 0);
|
|
1276
1313
|
tslib_1.__decorate([
|
|
1277
|
-
remult3_1.Fields.
|
|
1314
|
+
remult3_1.Fields.string(),
|
|
1278
1315
|
tslib_1.__metadata("design:type", String)
|
|
1279
1316
|
], testFilter.prototype, "a", void 0);
|
|
1280
1317
|
tslib_1.__decorate([
|
|
1281
|
-
remult3_1.Fields.
|
|
1318
|
+
remult3_1.Fields.string(),
|
|
1282
1319
|
tslib_1.__metadata("design:type", String)
|
|
1283
1320
|
], testFilter.prototype, "b", void 0);
|
|
1284
1321
|
tslib_1.__decorate([
|
|
1285
|
-
remult3_1.Fields.
|
|
1322
|
+
remult3_1.Fields.string(),
|
|
1286
1323
|
tslib_1.__metadata("design:type", String)
|
|
1287
1324
|
], testFilter.prototype, "c", void 0);
|
|
1288
1325
|
testFilter = tslib_1.__decorate([
|
|
@@ -1298,11 +1335,11 @@ var testStringWithNull = /** @class */ (function (_super) {
|
|
|
1298
1335
|
return _this;
|
|
1299
1336
|
}
|
|
1300
1337
|
tslib_1.__decorate([
|
|
1301
|
-
remult3_1.Fields.
|
|
1338
|
+
remult3_1.Fields.integer(),
|
|
1302
1339
|
tslib_1.__metadata("design:type", Number)
|
|
1303
1340
|
], testStringWithNull.prototype, "id", void 0);
|
|
1304
1341
|
tslib_1.__decorate([
|
|
1305
|
-
remult3_1.Fields.
|
|
1342
|
+
remult3_1.Fields.string({ allowNull: true }),
|
|
1306
1343
|
tslib_1.__metadata("design:type", String)
|
|
1307
1344
|
], testStringWithNull.prototype, "d", void 0);
|
|
1308
1345
|
testStringWithNull = tslib_1.__decorate([
|
|
@@ -1319,11 +1356,11 @@ var stam = /** @class */ (function (_super) {
|
|
|
1319
1356
|
return _this;
|
|
1320
1357
|
}
|
|
1321
1358
|
tslib_1.__decorate([
|
|
1322
|
-
remult3_1.Fields.
|
|
1359
|
+
remult3_1.Fields.integer(),
|
|
1323
1360
|
tslib_1.__metadata("design:type", Number)
|
|
1324
1361
|
], stam.prototype, "id", void 0);
|
|
1325
1362
|
tslib_1.__decorate([
|
|
1326
|
-
remult3_1.Fields.
|
|
1363
|
+
remult3_1.Fields.string({ maxLength: 1500 }),
|
|
1327
1364
|
tslib_1.__metadata("design:type", String)
|
|
1328
1365
|
], stam.prototype, "title", void 0);
|
|
1329
1366
|
stam = tslib_1.__decorate([
|
|
@@ -1340,11 +1377,11 @@ var p = /** @class */ (function (_super) {
|
|
|
1340
1377
|
return _this;
|
|
1341
1378
|
}
|
|
1342
1379
|
tslib_1.__decorate([
|
|
1343
|
-
remult3_1.Fields.
|
|
1380
|
+
remult3_1.Fields.integer(),
|
|
1344
1381
|
tslib_1.__metadata("design:type", Number)
|
|
1345
1382
|
], p.prototype, "id", void 0);
|
|
1346
1383
|
tslib_1.__decorate([
|
|
1347
|
-
remult3_1.Fields.
|
|
1384
|
+
remult3_1.Fields.string(),
|
|
1348
1385
|
tslib_1.__metadata("design:type", String)
|
|
1349
1386
|
], p.prototype, "name", void 0);
|
|
1350
1387
|
tslib_1.__decorate([
|
|
@@ -1357,3 +1394,62 @@ var p = /** @class */ (function (_super) {
|
|
|
1357
1394
|
], p);
|
|
1358
1395
|
return p;
|
|
1359
1396
|
}(remult3_1.EntityBase));
|
|
1397
|
+
var tasksWithEnum = /** @class */ (function (_super) {
|
|
1398
|
+
tslib_1.__extends(tasksWithEnum, _super);
|
|
1399
|
+
function tasksWithEnum() {
|
|
1400
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
1401
|
+
_this.title = '';
|
|
1402
|
+
_this.completed = false;
|
|
1403
|
+
_this.priority = Priority.Low;
|
|
1404
|
+
return _this;
|
|
1405
|
+
}
|
|
1406
|
+
tslib_1.__decorate([
|
|
1407
|
+
remult3_1.Fields.string(),
|
|
1408
|
+
tslib_1.__metadata("design:type", Object)
|
|
1409
|
+
], tasksWithEnum.prototype, "title", void 0);
|
|
1410
|
+
tslib_1.__decorate([
|
|
1411
|
+
remult3_1.Fields.boolean(),
|
|
1412
|
+
tslib_1.__metadata("design:type", Object)
|
|
1413
|
+
], tasksWithEnum.prototype, "completed", void 0);
|
|
1414
|
+
tslib_1.__decorate([
|
|
1415
|
+
remult3_1.Fields.object(),
|
|
1416
|
+
tslib_1.__metadata("design:type", Object)
|
|
1417
|
+
], tasksWithEnum.prototype, "priority", void 0);
|
|
1418
|
+
tasksWithEnum = tslib_1.__decorate([
|
|
1419
|
+
remult3_1.Entity('tasksWithEnum', {
|
|
1420
|
+
allowApiCrud: true
|
|
1421
|
+
})
|
|
1422
|
+
], tasksWithEnum);
|
|
1423
|
+
return tasksWithEnum;
|
|
1424
|
+
}(id_entity_1.IdEntity));
|
|
1425
|
+
exports.tasksWithEnum = tasksWithEnum;
|
|
1426
|
+
var Priority;
|
|
1427
|
+
(function (Priority) {
|
|
1428
|
+
Priority[Priority["Low"] = 0] = "Low";
|
|
1429
|
+
Priority[Priority["High"] = 1] = "High";
|
|
1430
|
+
Priority[Priority["Critical"] = 2] = "Critical";
|
|
1431
|
+
})(Priority = exports.Priority || (exports.Priority = {}));
|
|
1432
|
+
db_tests_setup_1.testAll("task with enum", function (_a) {
|
|
1433
|
+
var createEntity = _a.createEntity;
|
|
1434
|
+
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
1435
|
+
var r, item;
|
|
1436
|
+
return tslib_1.__generator(this, function (_b) {
|
|
1437
|
+
switch (_b.label) {
|
|
1438
|
+
case 0: return [4 /*yield*/, createEntity(tasksWithEnum)];
|
|
1439
|
+
case 1:
|
|
1440
|
+
r = _b.sent();
|
|
1441
|
+
return [4 /*yield*/, r.insert({
|
|
1442
|
+
title: 'a',
|
|
1443
|
+
priority: Priority.Critical
|
|
1444
|
+
})];
|
|
1445
|
+
case 2:
|
|
1446
|
+
_b.sent();
|
|
1447
|
+
return [4 /*yield*/, r.findFirst()];
|
|
1448
|
+
case 3:
|
|
1449
|
+
item = _b.sent();
|
|
1450
|
+
expect(item.priority).toBe(Priority.Critical);
|
|
1451
|
+
return [2 /*return*/];
|
|
1452
|
+
}
|
|
1453
|
+
});
|
|
1454
|
+
});
|
|
1455
|
+
});
|
|
@@ -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([
|
|
@@ -28,9 +28,15 @@ var TestStatus = /** @class */ (function () {
|
|
|
28
28
|
this.id = id;
|
|
29
29
|
this.caption = caption;
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
TestStatus.
|
|
31
|
+
TestStatus_1 = TestStatus;
|
|
32
|
+
var TestStatus_1;
|
|
33
|
+
TestStatus.open = new TestStatus_1();
|
|
34
|
+
TestStatus.closed = new TestStatus_1('cc');
|
|
35
|
+
TestStatus.hold = new TestStatus_1(undefined, 'hh');
|
|
36
|
+
TestStatus = TestStatus_1 = tslib_1.__decorate([
|
|
37
|
+
remult3_1.ValueListFieldType(),
|
|
38
|
+
tslib_1.__metadata("design:paramtypes", [String, String])
|
|
39
|
+
], TestStatus);
|
|
34
40
|
return TestStatus;
|
|
35
41
|
}());
|
|
36
42
|
exports.TestStatus = TestStatus;
|