remult 0.12.6 → 0.12.9
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 +7 -1
- package/src/backend-tests/my-test.backend-spec.js +112 -0
- package/src/remult3/RepositoryImplementation.js +15 -5
- package/src/remult3/remult3.d.ts +1 -1
- package/src/shared-tests/db-tests.db-tests.js +0 -112
- package/src/shared-tests/test-custom-id-column.spec.js +22 -0
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -3,12 +3,18 @@
|
|
|
3
3
|
<img src="https://github.com/remult/remult/raw/master/docs/.vuepress/public/logo.png" width="140" height="140">
|
|
4
4
|
</a>
|
|
5
5
|
<h1>Remult</h1>
|
|
6
|
+
<a href="https://circleci.com/gh/remult/remult/tree/master">
|
|
7
|
+
<img alt="CircleCI" src="https://circleci.com/gh/remult/remult/tree/master.svg?style=svg">
|
|
8
|
+
</a>
|
|
6
9
|
<a href="https://raw.githubusercontent.com/remult/remult/master/LICENSE">
|
|
7
10
|
<img alt="GitHub license" src="https://img.shields.io/badge/license-MIT-blue.svg">
|
|
8
11
|
</a>
|
|
9
|
-
<a href="https://
|
|
12
|
+
<a href="https://www.npmjs.com/package/remult">
|
|
10
13
|
<img alt="npm version" src="https://badge.fury.io/js/remult.svg">
|
|
11
14
|
</a>
|
|
15
|
+
<a href="https://www.npmjs.com/package/remult">
|
|
16
|
+
<img alt="npm downloads" src="https://img.shields.io/npm/dm/remult">
|
|
17
|
+
</a>
|
|
12
18
|
</div>
|
|
13
19
|
|
|
14
20
|
## What is Remult?
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var tslib_1 = require("tslib");
|
|
4
|
+
var __1 = require("../..");
|
|
4
5
|
var context_1 = require("../context");
|
|
5
6
|
var remult_knex_1 = require("../../remult-knex");
|
|
6
7
|
var Knex = require("knex");
|
|
7
8
|
var dotenv_1 = require("dotenv");
|
|
9
|
+
var backend_database_test_setup_backend_spec_1 = require("./backend-database-test-setup.backend-spec");
|
|
10
|
+
var entityWithValidations_1 = require("../shared-tests/entityWithValidations");
|
|
8
11
|
dotenv_1.config();
|
|
9
12
|
describe("test", function () {
|
|
10
13
|
var remult;
|
|
@@ -21,3 +24,112 @@ describe("test", function () {
|
|
|
21
24
|
});
|
|
22
25
|
}); });
|
|
23
26
|
});
|
|
27
|
+
backend_database_test_setup_backend_spec_1.testPostgresImplementation("sql filter", function (_a) {
|
|
28
|
+
var createEntity = _a.createEntity;
|
|
29
|
+
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
30
|
+
var s, _b;
|
|
31
|
+
return tslib_1.__generator(this, function (_c) {
|
|
32
|
+
switch (_c.label) {
|
|
33
|
+
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
34
|
+
case 1:
|
|
35
|
+
s = _c.sent();
|
|
36
|
+
_b = expect;
|
|
37
|
+
return [4 /*yield*/, s.find({
|
|
38
|
+
where: __1.SqlDatabase.customFilter(function (build) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
39
|
+
return tslib_1.__generator(this, function (_a) {
|
|
40
|
+
build.sql = s.metadata.fields.myId.options.dbName + ' in (1,3)';
|
|
41
|
+
return [2 /*return*/];
|
|
42
|
+
});
|
|
43
|
+
}); })
|
|
44
|
+
})];
|
|
45
|
+
case 2:
|
|
46
|
+
_b.apply(void 0, [(_c.sent()).length]).toBe(2);
|
|
47
|
+
return [2 /*return*/];
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}, false);
|
|
52
|
+
backend_database_test_setup_backend_spec_1.testPostgresImplementation("sql filter2", function (_a) {
|
|
53
|
+
var createEntity = _a.createEntity;
|
|
54
|
+
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
55
|
+
var s, _b;
|
|
56
|
+
return tslib_1.__generator(this, function (_c) {
|
|
57
|
+
switch (_c.label) {
|
|
58
|
+
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
59
|
+
case 1:
|
|
60
|
+
s = _c.sent();
|
|
61
|
+
_b = expect;
|
|
62
|
+
return [4 /*yield*/, s.find({
|
|
63
|
+
where: {
|
|
64
|
+
$or: [
|
|
65
|
+
__1.SqlDatabase.customFilter(function (build) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
66
|
+
return tslib_1.__generator(this, function (_a) {
|
|
67
|
+
build.sql = s.metadata.fields.myId.options.dbName + ' in (1,3)';
|
|
68
|
+
return [2 /*return*/];
|
|
69
|
+
});
|
|
70
|
+
}); }),
|
|
71
|
+
{
|
|
72
|
+
myId: 2
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
})];
|
|
77
|
+
case 2:
|
|
78
|
+
_b.apply(void 0, [(_c.sent()).length]).toBe(3);
|
|
79
|
+
return [2 /*return*/];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
}, false);
|
|
84
|
+
backend_database_test_setup_backend_spec_1.testKnexPGSqlImpl("knex filter", function (_a) {
|
|
85
|
+
var createEntity = _a.createEntity;
|
|
86
|
+
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
87
|
+
var s, _b;
|
|
88
|
+
return tslib_1.__generator(this, function (_c) {
|
|
89
|
+
switch (_c.label) {
|
|
90
|
+
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
91
|
+
case 1:
|
|
92
|
+
s = _c.sent();
|
|
93
|
+
_b = expect;
|
|
94
|
+
return [4 /*yield*/, s.find({
|
|
95
|
+
where: remult_knex_1.KnexDataProvider.customFilter(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
96
|
+
return tslib_1.__generator(this, function (_a) {
|
|
97
|
+
return [2 /*return*/, function (build) { return build.whereIn(s.metadata.fields.myId.options.dbName, [1, 3]); }];
|
|
98
|
+
});
|
|
99
|
+
}); })
|
|
100
|
+
})];
|
|
101
|
+
case 2:
|
|
102
|
+
_b.apply(void 0, [(_c.sent()).length]).toBe(2);
|
|
103
|
+
return [2 /*return*/];
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
}, false);
|
|
108
|
+
backend_database_test_setup_backend_spec_1.testKnexPGSqlImpl("knex filter2", function (_a) {
|
|
109
|
+
var createEntity = _a.createEntity;
|
|
110
|
+
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
111
|
+
var s, _b;
|
|
112
|
+
return tslib_1.__generator(this, function (_c) {
|
|
113
|
+
switch (_c.label) {
|
|
114
|
+
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
115
|
+
case 1:
|
|
116
|
+
s = _c.sent();
|
|
117
|
+
_b = expect;
|
|
118
|
+
return [4 /*yield*/, s.find({
|
|
119
|
+
where: {
|
|
120
|
+
$or: [remult_knex_1.KnexDataProvider.customFilter(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
121
|
+
return tslib_1.__generator(this, function (_a) {
|
|
122
|
+
return [2 /*return*/, function (build) { return build.whereIn(s.metadata.fields.myId.options.dbName, [1, 3]); }];
|
|
123
|
+
});
|
|
124
|
+
}); }), {
|
|
125
|
+
myId: 4
|
|
126
|
+
}]
|
|
127
|
+
}
|
|
128
|
+
})];
|
|
129
|
+
case 2:
|
|
130
|
+
_b.apply(void 0, [(_c.sent()).length]).toBe(3);
|
|
131
|
+
return [2 /*return*/];
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
}, false);
|
|
@@ -616,6 +616,7 @@ function getEntityKey(entity) {
|
|
|
616
616
|
exports.getEntityKey = getEntityKey;
|
|
617
617
|
exports.columnsOfType = new Map();
|
|
618
618
|
function createOldEntity(entity, remult) {
|
|
619
|
+
var _this = this;
|
|
619
620
|
var r = exports.columnsOfType.get(entity);
|
|
620
621
|
if (!r)
|
|
621
622
|
exports.columnsOfType.set(entity, r = []);
|
|
@@ -634,12 +635,21 @@ function createOldEntity(entity, remult) {
|
|
|
634
635
|
info = tslib_1.__assign(tslib_1.__assign({}, baseSettings_1), info);
|
|
635
636
|
var functions = ["saving", "saved", "deleting", "deleted", "validation"];
|
|
636
637
|
var _loop_2 = function (key_1) {
|
|
637
|
-
if (baseSettings_1[key_1]) {
|
|
638
|
+
if (baseSettings_1[key_1] && baseSettings_1[key_1] !== info[key_1]) {
|
|
638
639
|
var x_1 = info[key_1];
|
|
639
|
-
info[key_1] = function (a, b) {
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
640
|
+
info[key_1] = function (a, b) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
641
|
+
return tslib_1.__generator(this, function (_a) {
|
|
642
|
+
switch (_a.label) {
|
|
643
|
+
case 0: return [4 /*yield*/, x_1(a, b)];
|
|
644
|
+
case 1:
|
|
645
|
+
_a.sent();
|
|
646
|
+
return [4 /*yield*/, baseSettings_1[key_1](a, b)];
|
|
647
|
+
case 2:
|
|
648
|
+
_a.sent();
|
|
649
|
+
return [2 /*return*/];
|
|
650
|
+
}
|
|
651
|
+
});
|
|
652
|
+
}); };
|
|
643
653
|
}
|
|
644
654
|
};
|
|
645
655
|
try {
|
package/src/remult3/remult3.d.ts
CHANGED
|
@@ -50,7 +50,7 @@ export declare type Fields<entityType> = {
|
|
|
50
50
|
toArray(): FieldRef<entityType, any>[];
|
|
51
51
|
};
|
|
52
52
|
export declare type FieldsMetadata<entityType> = {
|
|
53
|
-
[Properties in keyof OmitEB<entityType>]: FieldMetadata
|
|
53
|
+
[Properties in keyof OmitEB<entityType>]: FieldMetadata<entityType[Properties]>;
|
|
54
54
|
} & {
|
|
55
55
|
find(fieldMetadataOrKey: FieldMetadata | string): FieldMetadata;
|
|
56
56
|
[Symbol.iterator]: () => IterableIterator<FieldMetadata>;
|
|
@@ -20,9 +20,6 @@ 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 backend_database_test_setup_backend_spec_1 = require("../backend-tests/backend-database-test-setup.backend-spec");
|
|
24
|
-
var __1 = require("../..");
|
|
25
|
-
var remult_knex_1 = require("../../remult-knex");
|
|
26
23
|
db_tests_setup_1.testAll("what", function (_a) {
|
|
27
24
|
var remult = _a.remult, createEntity = _a.createEntity;
|
|
28
25
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
@@ -1237,115 +1234,6 @@ db_tests_setup_1.testAll("filter", function (_a) {
|
|
|
1237
1234
|
});
|
|
1238
1235
|
});
|
|
1239
1236
|
}, false);
|
|
1240
|
-
backend_database_test_setup_backend_spec_1.testPostgresImplementation("sql filter", function (_a) {
|
|
1241
|
-
var createEntity = _a.createEntity;
|
|
1242
|
-
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
1243
|
-
var s, _b;
|
|
1244
|
-
return tslib_1.__generator(this, function (_c) {
|
|
1245
|
-
switch (_c.label) {
|
|
1246
|
-
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
1247
|
-
case 1:
|
|
1248
|
-
s = _c.sent();
|
|
1249
|
-
_b = expect;
|
|
1250
|
-
return [4 /*yield*/, s.find({
|
|
1251
|
-
where: __1.SqlDatabase.customFilter(function (build) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
1252
|
-
return tslib_1.__generator(this, function (_a) {
|
|
1253
|
-
build.sql = s.metadata.fields.myId.options.dbName + ' in (1,3)';
|
|
1254
|
-
return [2 /*return*/];
|
|
1255
|
-
});
|
|
1256
|
-
}); })
|
|
1257
|
-
})];
|
|
1258
|
-
case 2:
|
|
1259
|
-
_b.apply(void 0, [(_c.sent()).length]).toBe(2);
|
|
1260
|
-
return [2 /*return*/];
|
|
1261
|
-
}
|
|
1262
|
-
});
|
|
1263
|
-
});
|
|
1264
|
-
}, false);
|
|
1265
|
-
backend_database_test_setup_backend_spec_1.testPostgresImplementation("sql filter2", function (_a) {
|
|
1266
|
-
var createEntity = _a.createEntity;
|
|
1267
|
-
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
1268
|
-
var s, _b;
|
|
1269
|
-
return tslib_1.__generator(this, function (_c) {
|
|
1270
|
-
switch (_c.label) {
|
|
1271
|
-
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
1272
|
-
case 1:
|
|
1273
|
-
s = _c.sent();
|
|
1274
|
-
_b = expect;
|
|
1275
|
-
return [4 /*yield*/, s.find({
|
|
1276
|
-
where: {
|
|
1277
|
-
$or: [
|
|
1278
|
-
__1.SqlDatabase.customFilter(function (build) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
1279
|
-
return tslib_1.__generator(this, function (_a) {
|
|
1280
|
-
build.sql = s.metadata.fields.myId.options.dbName + ' in (1,3)';
|
|
1281
|
-
return [2 /*return*/];
|
|
1282
|
-
});
|
|
1283
|
-
}); }),
|
|
1284
|
-
{
|
|
1285
|
-
myId: 2
|
|
1286
|
-
}
|
|
1287
|
-
]
|
|
1288
|
-
}
|
|
1289
|
-
})];
|
|
1290
|
-
case 2:
|
|
1291
|
-
_b.apply(void 0, [(_c.sent()).length]).toBe(3);
|
|
1292
|
-
return [2 /*return*/];
|
|
1293
|
-
}
|
|
1294
|
-
});
|
|
1295
|
-
});
|
|
1296
|
-
}, false);
|
|
1297
|
-
backend_database_test_setup_backend_spec_1.testKnexPGSqlImpl("knex filter", function (_a) {
|
|
1298
|
-
var createEntity = _a.createEntity;
|
|
1299
|
-
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
1300
|
-
var s, _b;
|
|
1301
|
-
return tslib_1.__generator(this, function (_c) {
|
|
1302
|
-
switch (_c.label) {
|
|
1303
|
-
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
1304
|
-
case 1:
|
|
1305
|
-
s = _c.sent();
|
|
1306
|
-
_b = expect;
|
|
1307
|
-
return [4 /*yield*/, s.find({
|
|
1308
|
-
where: remult_knex_1.KnexDataProvider.customFilter(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
1309
|
-
return tslib_1.__generator(this, function (_a) {
|
|
1310
|
-
return [2 /*return*/, function (build) { return build.whereIn(s.metadata.fields.myId.options.dbName, [1, 3]); }];
|
|
1311
|
-
});
|
|
1312
|
-
}); })
|
|
1313
|
-
})];
|
|
1314
|
-
case 2:
|
|
1315
|
-
_b.apply(void 0, [(_c.sent()).length]).toBe(2);
|
|
1316
|
-
return [2 /*return*/];
|
|
1317
|
-
}
|
|
1318
|
-
});
|
|
1319
|
-
});
|
|
1320
|
-
}, false);
|
|
1321
|
-
backend_database_test_setup_backend_spec_1.testKnexPGSqlImpl("knex filter2", function (_a) {
|
|
1322
|
-
var createEntity = _a.createEntity;
|
|
1323
|
-
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
1324
|
-
var s, _b;
|
|
1325
|
-
return tslib_1.__generator(this, function (_c) {
|
|
1326
|
-
switch (_c.label) {
|
|
1327
|
-
case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
|
|
1328
|
-
case 1:
|
|
1329
|
-
s = _c.sent();
|
|
1330
|
-
_b = expect;
|
|
1331
|
-
return [4 /*yield*/, s.find({
|
|
1332
|
-
where: {
|
|
1333
|
-
$or: [remult_knex_1.KnexDataProvider.customFilter(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
1334
|
-
return tslib_1.__generator(this, function (_a) {
|
|
1335
|
-
return [2 /*return*/, function (build) { return build.whereIn(s.metadata.fields.myId.options.dbName, [1, 3]); }];
|
|
1336
|
-
});
|
|
1337
|
-
}); }), {
|
|
1338
|
-
myId: 4
|
|
1339
|
-
}]
|
|
1340
|
-
}
|
|
1341
|
-
})];
|
|
1342
|
-
case 2:
|
|
1343
|
-
_b.apply(void 0, [(_c.sent()).length]).toBe(3);
|
|
1344
|
-
return [2 /*return*/];
|
|
1345
|
-
}
|
|
1346
|
-
});
|
|
1347
|
-
});
|
|
1348
|
-
}, false);
|
|
1349
1237
|
var testFilter = /** @class */ (function () {
|
|
1350
1238
|
function testFilter() {
|
|
1351
1239
|
this.id = 0;
|
|
@@ -86,3 +86,25 @@ describe("custom id column", function () {
|
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
88
|
});
|
|
89
|
+
//typing game
|
|
90
|
+
// var z = <Z>(y: Z) => {
|
|
91
|
+
// }
|
|
92
|
+
// z<number>(1);
|
|
93
|
+
// function myBackendMethod<T>(types: T, values: values<T>) {
|
|
94
|
+
// }
|
|
95
|
+
// type values<T> = {
|
|
96
|
+
// [Property in keyof T]: T[Property] extends new (...args: any[]) => infer R ? R : any;
|
|
97
|
+
// };
|
|
98
|
+
// const a1 = AccountManager;
|
|
99
|
+
// const a = {
|
|
100
|
+
// a: String.prototype,
|
|
101
|
+
// b: AccountManager.prototype
|
|
102
|
+
// };
|
|
103
|
+
// var zzz: AccountManager = undefined!;
|
|
104
|
+
// myBackendMethod({
|
|
105
|
+
// a: String,
|
|
106
|
+
// b: AccountManager
|
|
107
|
+
// }, {
|
|
108
|
+
// b: new AccountManager(),
|
|
109
|
+
// a: "asdf"
|
|
110
|
+
// })
|