remult 0.13.16 → 0.13.17

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remult",
3
- "version": "0.13.16",
3
+ "version": "0.13.17",
4
4
  "description": "remult core lib",
5
5
  "homepage": "https://remult.dev/",
6
6
  "repository": {
package/readme.md CHANGED
@@ -21,6 +21,8 @@
21
21
  <a href="https://snyk.io/test/npm/remult">
22
22
  <img alt="snyk" src="https://snyk.io/test/npm/remult/badge.svg"/>
23
23
  </a>
24
+ <a href="https://github.com/remult/remult/pulse" alt="Activity">
25
+ <img src="https://img.shields.io/github/commit-activity/m/remult/remult" /></a>
24
26
  </div>
25
27
 
26
28
  ## What is Remult?
@@ -18,28 +18,28 @@ var KnexDataProvider = /** @class */ (function () {
18
18
  };
19
19
  KnexDataProvider.prototype.transaction = function (action) {
20
20
  return tslib_1.__awaiter(this, void 0, void 0, function () {
21
- var t, _a;
22
- return tslib_1.__generator(this, function (_b) {
23
- switch (_b.label) {
21
+ var t, err_1;
22
+ return tslib_1.__generator(this, function (_a) {
23
+ switch (_a.label) {
24
24
  case 0: return [4 /*yield*/, this.knex.transaction()];
25
25
  case 1:
26
- t = _b.sent();
27
- _b.label = 2;
26
+ t = _a.sent();
27
+ _a.label = 2;
28
28
  case 2:
29
- _b.trys.push([2, 5, , 7]);
29
+ _a.trys.push([2, 5, , 7]);
30
30
  return [4 /*yield*/, action(new KnexDataProvider(t))];
31
31
  case 3:
32
- _b.sent();
32
+ _a.sent();
33
33
  return [4 /*yield*/, t.commit()];
34
34
  case 4:
35
- _b.sent();
35
+ _a.sent();
36
36
  return [3 /*break*/, 7];
37
37
  case 5:
38
- _a = _b.sent();
38
+ err_1 = _a.sent();
39
39
  return [4 /*yield*/, t.rollback()];
40
40
  case 6:
41
- _b.sent();
42
- return [3 /*break*/, 7];
41
+ _a.sent();
42
+ throw err_1;
43
43
  case 7: return [2 /*return*/];
44
44
  }
45
45
  });
@@ -516,7 +516,7 @@ var KnexSchemaBuilder = /** @class */ (function () {
516
516
  }
517
517
  KnexSchemaBuilder.prototype.verifyStructureOfAllEntities = function (remult) {
518
518
  return tslib_1.__awaiter(this, void 0, void 0, function () {
519
- var allEntities_1, allEntities_1_1, entity, metadata, err_1, _a, _b, _c, e_6_1;
519
+ var allEntities_1, allEntities_1_1, entity, metadata, err_2, _a, _b, _c, e_6_1;
520
520
  var e_6, _d;
521
521
  return tslib_1.__generator(this, function (_e) {
522
522
  switch (_e.label) {
@@ -547,12 +547,12 @@ var KnexSchemaBuilder = /** @class */ (function () {
547
547
  _e.label = 7;
548
548
  case 7: return [3 /*break*/, 10];
549
549
  case 8:
550
- err_1 = _e.sent();
550
+ err_2 = _e.sent();
551
551
  _b = (_a = console).log;
552
552
  _c = "failed verify structure of ";
553
553
  return [4 /*yield*/, metadata.getDbName()];
554
554
  case 9:
555
- _b.apply(_a, [_c + (_e.sent()) + " ", err_1]);
555
+ _b.apply(_a, [_c + (_e.sent()) + " ", err_2]);
556
556
  return [3 /*break*/, 10];
557
557
  case 10:
558
558
  allEntities_1_1 = allEntities_1.next();
@@ -662,7 +662,7 @@ var KnexSchemaBuilder = /** @class */ (function () {
662
662
  };
663
663
  KnexSchemaBuilder.prototype.verifyAllColumns = function (entity) {
664
664
  return tslib_1.__awaiter(this, void 0, void 0, function () {
665
- var e, _loop_2, this_2, _a, _b, col, e_9_1, err_2;
665
+ var e, _loop_2, this_2, _a, _b, col, e_9_1, err_3;
666
666
  var e_9, _c;
667
667
  return tslib_1.__generator(this, function (_d) {
668
668
  switch (_d.label) {
@@ -714,8 +714,8 @@ var KnexSchemaBuilder = /** @class */ (function () {
714
714
  return [7 /*endfinally*/];
715
715
  case 10: return [3 /*break*/, 12];
716
716
  case 11:
717
- err_2 = _d.sent();
718
- console.log(err_2);
717
+ err_3 = _d.sent();
718
+ console.log(err_3);
719
719
  return [3 /*break*/, 12];
720
720
  case 12: return [2 /*return*/];
721
721
  }
package/remult-mongo.js CHANGED
@@ -14,29 +14,29 @@ var MongoDataProvider = /** @class */ (function () {
14
14
  };
15
15
  MongoDataProvider.prototype.transaction = function (action) {
16
16
  return tslib_1.__awaiter(this, void 0, void 0, function () {
17
- var session, _a;
18
- return tslib_1.__generator(this, function (_b) {
19
- switch (_b.label) {
17
+ var session, err_1;
18
+ return tslib_1.__generator(this, function (_a) {
19
+ switch (_a.label) {
20
20
  case 0: return [4 /*yield*/, this.client.startSession()];
21
21
  case 1:
22
- session = _b.sent();
22
+ session = _a.sent();
23
23
  session.startTransaction();
24
- _b.label = 2;
24
+ _a.label = 2;
25
25
  case 2:
26
- _b.trys.push([2, 5, , 7]);
26
+ _a.trys.push([2, 5, , 7]);
27
27
  return [4 /*yield*/, action(new MongoDataProvider(this.db, undefined))];
28
28
  case 3:
29
- _b.sent();
29
+ _a.sent();
30
30
  return [4 /*yield*/, session.commitTransaction()];
31
31
  case 4:
32
- _b.sent();
32
+ _a.sent();
33
33
  return [3 /*break*/, 7];
34
34
  case 5:
35
- _a = _b.sent();
35
+ err_1 = _a.sent();
36
36
  return [4 /*yield*/, session.abortTransaction()];
37
37
  case 6:
38
- _b.sent();
39
- return [3 /*break*/, 7];
38
+ _a.sent();
39
+ throw err_1;
40
40
  case 7: return [2 /*return*/];
41
41
  }
42
42
  });
@@ -46,6 +46,7 @@ export declare class RepositoryImplementation<entityType> implements Repository<
46
46
  count(where?: EntityFilter<entityType>): Promise<number>;
47
47
  private cache;
48
48
  findFirst(where?: EntityFilter<entityType>, options?: FindFirstOptions<entityType>): Promise<entityType>;
49
+ private fieldsOf;
49
50
  create(item?: Partial<OmitEB<entityType>>): entityType;
50
51
  fromJson(json: any, newRow?: boolean): Promise<entityType>;
51
52
  findId(id: any, options?: FindFirstOptionsBase<entityType>): Promise<entityType>;
@@ -239,7 +239,7 @@ var RepositoryImplementation = /** @class */ (function () {
239
239
  if (!ref) {
240
240
  var instance = new this.entity(this.remult);
241
241
  try {
242
- for (var _b = tslib_1.__values(this.metadata.fields), _c = _b.next(); !_c.done; _c = _b.next()) {
242
+ for (var _b = tslib_1.__values(this.fieldsOf(entity)), _c = _b.next(); !_c.done; _c = _b.next()) {
243
243
  var field = _c.value;
244
244
  instance[field.key] = entity[field.key];
245
245
  }
@@ -521,12 +521,16 @@ var RepositoryImplementation = /** @class */ (function () {
521
521
  });
522
522
  });
523
523
  };
524
+ RepositoryImplementation.prototype.fieldsOf = function (item) {
525
+ var keys = Object.keys(item);
526
+ return this.metadata.fields.toArray().filter(function (x) { return keys.includes(x.key); });
527
+ };
524
528
  RepositoryImplementation.prototype.create = function (item) {
525
529
  var e_8, _a;
526
530
  var r = new this.entity(this.remult);
527
531
  if (item)
528
532
  try {
529
- for (var _b = tslib_1.__values(this.metadata.fields), _c = _b.next(); !_c.done; _c = _b.next()) {
533
+ for (var _b = tslib_1.__values(this.fieldsOf(item)), _c = _b.next(); !_c.done; _c = _b.next()) {
530
534
  var field = _c.value;
531
535
  r[field.key] = item[field.key];
532
536
  }
@@ -550,7 +554,7 @@ var RepositoryImplementation = /** @class */ (function () {
550
554
  case 0:
551
555
  obj = {};
552
556
  try {
553
- for (_a = tslib_1.__values(this.metadata.fields), _b = _a.next(); !_b.done; _b = _a.next()) {
557
+ for (_a = tslib_1.__values(this.fieldsOf(json)), _b = _a.next(); !_b.done; _b = _a.next()) {
554
558
  col = _b.value;
555
559
  if (json[col.key] !== undefined) {
556
560
  obj[col.key] = col.valueConverter.fromJson(json[col.key]);
@@ -1546,3 +1546,33 @@ db_tests_setup_1.testAll("task with enum string", function (_a) {
1546
1546
  });
1547
1547
  });
1548
1548
  });
1549
+ db_tests_setup_1.testAll("test transaction rollback", function (_a) {
1550
+ var db = _a.db;
1551
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1552
+ var fail, _b;
1553
+ return tslib_1.__generator(this, function (_c) {
1554
+ switch (_c.label) {
1555
+ case 0:
1556
+ fail = true;
1557
+ _c.label = 1;
1558
+ case 1:
1559
+ _c.trys.push([1, 3, , 4]);
1560
+ return [4 /*yield*/, db.transaction(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1561
+ return tslib_1.__generator(this, function (_a) {
1562
+ throw "error";
1563
+ });
1564
+ }); })];
1565
+ case 2:
1566
+ _c.sent();
1567
+ fail = false;
1568
+ return [3 /*break*/, 4];
1569
+ case 3:
1570
+ _b = _c.sent();
1571
+ return [3 /*break*/, 4];
1572
+ case 4:
1573
+ expect(fail).toBe(true);
1574
+ return [2 /*return*/];
1575
+ }
1576
+ });
1577
+ });
1578
+ });