remult 0.10.12 → 0.11.2

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.
Files changed (140) hide show
  1. package/assign.js +0 -1
  2. package/classType.js +0 -1
  3. package/graphql.js +0 -1
  4. package/index.js +0 -1
  5. package/inputTypes.js +0 -1
  6. package/package.json +1 -1
  7. package/postgres/index.js +0 -1
  8. package/postgres/postgres-data-provider.d.ts +3 -3
  9. package/postgres/postgres-data-provider.js +136 -191
  10. package/postgres/postgresColumnSyntax.js +0 -1
  11. package/remult-express.js +0 -1
  12. package/remult-knex/index.d.ts +6 -5
  13. package/remult-knex/index.js +243 -287
  14. package/remult-mongo.js +150 -218
  15. package/server/JsonEntityFileStorage.js +0 -1
  16. package/server/expressBridge.d.ts +5 -0
  17. package/server/expressBridge.js +17 -2
  18. package/server/index.js +0 -1
  19. package/server/register-actions-on-server.js +0 -1
  20. package/server/register-entities-on-server.js +0 -1
  21. package/src/__EntityValueProvider.js +0 -1
  22. package/src/__RowsOfDataForTesting.js +0 -1
  23. package/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +1 -1
  24. package/src/backend-tests/backend-database-test-setup.backend-spec.js +75 -53
  25. package/src/backend-tests/my-test.backend-spec.js +0 -1
  26. package/src/column-interfaces.js +0 -1
  27. package/src/column.js +0 -1
  28. package/src/context.js +0 -1
  29. package/src/data-api.js +0 -1
  30. package/src/data-interfaces.d.ts +0 -2
  31. package/src/data-interfaces.js +0 -1
  32. package/src/data-providers/array-entity-data-provider.js +0 -1
  33. package/src/data-providers/in-memory-database.js +0 -1
  34. package/src/data-providers/json-data-provider.js +0 -1
  35. package/src/data-providers/rest-data-provider.js +0 -1
  36. package/src/data-providers/sql-database.d.ts +0 -2
  37. package/src/data-providers/sql-database.js +199 -299
  38. package/src/data-providers/web-sql-data-provider.js +38 -57
  39. package/src/entity.js +0 -1
  40. package/src/filter/filter-consumer-bridge-to-sql-request.d.ts +15 -1
  41. package/src/filter/filter-consumer-bridge-to-sql-request.js +80 -51
  42. package/src/filter/filter-consumer-bridge-to-url-builder.js +0 -1
  43. package/src/filter/filter-interfaces.js +0 -1
  44. package/src/id-entity.js +0 -1
  45. package/src/remult3/RepositoryImplementation.d.ts +9 -1
  46. package/src/remult3/RepositoryImplementation.js +50 -19
  47. package/src/remult3/index.js +0 -1
  48. package/src/remult3/remult3.d.ts +5 -3
  49. package/src/remult3/remult3.js +0 -1
  50. package/src/server-action.js +0 -1
  51. package/src/shared-tests/db-tests-setup.js +0 -1
  52. package/src/shared-tests/db-tests.db-tests.js +2 -3
  53. package/src/shared-tests/deleteAll.js +0 -1
  54. package/src/shared-tests/entityWithValidations.js +0 -1
  55. package/src/shared-tests/index.js +0 -1
  56. package/src/shared-tests/test-custom-id-column.spec.js +0 -1
  57. package/src/shared-tests/test-special-value.spec.js +0 -1
  58. package/src/shared-tests/test-update-with-null.spec.js +0 -1
  59. package/src/sort.js +0 -1
  60. package/src/sql-command.js +0 -1
  61. package/src/tests/Done.js +0 -1
  62. package/src/tests/TestDataApiResponse.js +0 -1
  63. package/src/tests/c.js +0 -1
  64. package/src/tests/createData.js +0 -1
  65. package/src/tests/d.js +0 -1
  66. package/src/tests/dWithPrefilter.js +0 -1
  67. package/src/tests/entityForCustomFilter.js +24 -23
  68. package/src/tests/entityWithValidationsOnColumn.js +0 -1
  69. package/src/tests/h.js +0 -1
  70. package/src/tests/remult-3-entities.js +0 -1
  71. package/src/tests/tasks.js +0 -1
  72. package/src/tests/testModel/models.js +0 -1
  73. package/src/validators.js +0 -1
  74. package/urlBuilder.js +0 -1
  75. package/valueConverters.js +1 -2
  76. package/assign.js.map +0 -1
  77. package/classType.js.map +0 -1
  78. package/graphql.js.map +0 -1
  79. package/index.js.map +0 -1
  80. package/inputTypes.js.map +0 -1
  81. package/postgres/index.js.map +0 -1
  82. package/postgres/postgres-data-provider.js.map +0 -1
  83. package/postgres/postgresColumnSyntax.js.map +0 -1
  84. package/remult-express.js.map +0 -1
  85. package/remult-knex/index.js.map +0 -1
  86. package/remult-mongo.js.map +0 -1
  87. package/server/JsonEntityFileStorage.js.map +0 -1
  88. package/server/expressBridge.js.map +0 -1
  89. package/server/index.js.map +0 -1
  90. package/server/register-actions-on-server.js.map +0 -1
  91. package/server/register-entities-on-server.js.map +0 -1
  92. package/src/__EntityValueProvider.js.map +0 -1
  93. package/src/__RowsOfDataForTesting.js.map +0 -1
  94. package/src/backend-tests/backend-database-test-setup.backend-spec.js.map +0 -1
  95. package/src/backend-tests/my-test.backend-spec.js.map +0 -1
  96. package/src/column-interfaces.js.map +0 -1
  97. package/src/column.js.map +0 -1
  98. package/src/context.js.map +0 -1
  99. package/src/data-api.js.map +0 -1
  100. package/src/data-interfaces.js.map +0 -1
  101. package/src/data-providers/array-entity-data-provider.js.map +0 -1
  102. package/src/data-providers/in-memory-database.js.map +0 -1
  103. package/src/data-providers/json-data-provider.js.map +0 -1
  104. package/src/data-providers/rest-data-provider.js.map +0 -1
  105. package/src/data-providers/sql-database.js.map +0 -1
  106. package/src/data-providers/web-sql-data-provider.js.map +0 -1
  107. package/src/entity.js.map +0 -1
  108. package/src/filter/filter-consumer-bridge-to-sql-request.js.map +0 -1
  109. package/src/filter/filter-consumer-bridge-to-url-builder.js.map +0 -1
  110. package/src/filter/filter-interfaces.js.map +0 -1
  111. package/src/id-entity.js.map +0 -1
  112. package/src/remult3/RepositoryImplementation.js.map +0 -1
  113. package/src/remult3/index.js.map +0 -1
  114. package/src/remult3/remult3.js.map +0 -1
  115. package/src/server-action.js.map +0 -1
  116. package/src/shared-tests/db-tests-setup.js.map +0 -1
  117. package/src/shared-tests/db-tests.db-tests.js.map +0 -1
  118. package/src/shared-tests/deleteAll.js.map +0 -1
  119. package/src/shared-tests/entityWithValidations.js.map +0 -1
  120. package/src/shared-tests/index.js.map +0 -1
  121. package/src/shared-tests/test-custom-id-column.spec.js.map +0 -1
  122. package/src/shared-tests/test-special-value.spec.js.map +0 -1
  123. package/src/shared-tests/test-update-with-null.spec.js.map +0 -1
  124. package/src/sort.js.map +0 -1
  125. package/src/sql-command.js.map +0 -1
  126. package/src/tests/Done.js.map +0 -1
  127. package/src/tests/TestDataApiResponse.js.map +0 -1
  128. package/src/tests/c.js.map +0 -1
  129. package/src/tests/createData.js.map +0 -1
  130. package/src/tests/d.js.map +0 -1
  131. package/src/tests/dWithPrefilter.js.map +0 -1
  132. package/src/tests/entityForCustomFilter.js.map +0 -1
  133. package/src/tests/entityWithValidationsOnColumn.js.map +0 -1
  134. package/src/tests/h.js.map +0 -1
  135. package/src/tests/remult-3-entities.js.map +0 -1
  136. package/src/tests/tasks.js.map +0 -1
  137. package/src/tests/testModel/models.js.map +0 -1
  138. package/src/validators.js.map +0 -1
  139. package/urlBuilder.js.map +0 -1
  140. package/valueConverters.js.map +0 -1
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WebSqlDataProvider = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var sql_database_1 = require("./sql-database");
6
+ var filter_consumer_bridge_to_sql_request_1 = require("../filter/filter-consumer-bridge-to-sql-request");
6
7
  //SqlDatabase.LogToConsole = true;
7
8
  var WebSqlDataProvider = /** @class */ (function () {
8
9
  function WebSqlDataProvider(databaseName) {
@@ -27,19 +28,18 @@ var WebSqlDataProvider = /** @class */ (function () {
27
28
  };
28
29
  WebSqlDataProvider.prototype.dropTable = function (entity) {
29
30
  return tslib_1.__awaiter(this, void 0, void 0, function () {
30
- var sql, _a;
31
- return tslib_1.__generator(this, function (_b) {
32
- switch (_b.label) {
33
- case 0:
34
- _a = 'drop table if exists ';
35
- return [4 /*yield*/, entity.getDbName()];
31
+ var e, sql;
32
+ return tslib_1.__generator(this, function (_a) {
33
+ switch (_a.label) {
34
+ case 0: return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.getDbNameProvider(entity)];
36
35
  case 1:
37
- sql = _a + (_b.sent());
36
+ e = _a.sent();
37
+ sql = 'drop table if exists ' + e.entityName;
38
38
  if (sql_database_1.SqlDatabase.LogToConsole)
39
39
  console.log(sql);
40
40
  return [4 /*yield*/, this.createCommand().execute(sql)];
41
41
  case 2:
42
- _b.sent();
42
+ _a.sent();
43
43
  return [2 /*return*/];
44
44
  }
45
45
  });
@@ -47,62 +47,44 @@ var WebSqlDataProvider = /** @class */ (function () {
47
47
  };
48
48
  WebSqlDataProvider.prototype.createTable = function (entity) {
49
49
  return tslib_1.__awaiter(this, void 0, void 0, function () {
50
- var result, _a, _b, x, _c, _d, _e, e_1_1, sql, _f;
51
- var e_1, _g;
52
- return tslib_1.__generator(this, function (_h) {
53
- switch (_h.label) {
50
+ var result, e, _a, _b, x, sql;
51
+ var e_1, _c;
52
+ return tslib_1.__generator(this, function (_d) {
53
+ switch (_d.label) {
54
54
  case 0:
55
55
  result = '';
56
- _h.label = 1;
56
+ return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.getDbNameProvider(entity)];
57
57
  case 1:
58
- _h.trys.push([1, 7, 8, 9]);
59
- _a = tslib_1.__values(entity.fields), _b = _a.next();
60
- _h.label = 2;
61
- case 2:
62
- if (!!_b.done) return [3 /*break*/, 6];
63
- x = _b.value;
64
- return [4 /*yield*/, sql_database_1.isDbReadonly(x)];
65
- case 3:
66
- if (!!(_h.sent())) return [3 /*break*/, 5];
67
- if (result.length != 0)
68
- result += ',';
69
- result += '\r\n ';
70
- _c = result;
71
- _d = this.addColumnSqlSyntax;
72
- _e = [x];
73
- return [4 /*yield*/, x.getDbName()];
74
- case 4:
75
- result = _c + _d.apply(this, _e.concat([_h.sent()]));
76
- if (x.key == entity.idMetadata.field.key) {
77
- result += ' primary key';
78
- if (entity.options.dbAutoIncrementId)
79
- result += " autoincrement";
80
- }
81
- _h.label = 5;
82
- case 5:
83
- _b = _a.next();
84
- return [3 /*break*/, 2];
85
- case 6: return [3 /*break*/, 9];
86
- case 7:
87
- e_1_1 = _h.sent();
88
- e_1 = { error: e_1_1 };
89
- return [3 /*break*/, 9];
90
- case 8:
58
+ e = _d.sent();
91
59
  try {
92
- if (_b && !_b.done && (_g = _a.return)) _g.call(_a);
60
+ for (_a = tslib_1.__values(entity.fields), _b = _a.next(); !_b.done; _b = _a.next()) {
61
+ x = _b.value;
62
+ if (!e.isDbReadonly(x)) {
63
+ if (result.length != 0)
64
+ result += ',';
65
+ result += '\r\n ';
66
+ result += this.addColumnSqlSyntax(x, e.nameOf(x));
67
+ if (x.key == entity.idMetadata.field.key) {
68
+ result += ' primary key';
69
+ if (entity.options.dbAutoIncrementId)
70
+ result += " autoincrement";
71
+ }
72
+ }
73
+ }
93
74
  }
94
- finally { if (e_1) throw e_1.error; }
95
- return [7 /*endfinally*/];
96
- case 9:
97
- _f = 'create table if not exists ';
98
- return [4 /*yield*/, entity.getDbName()];
99
- case 10:
100
- sql = _f + (_h.sent()) + ' (' + result + '\r\n)';
75
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
76
+ finally {
77
+ try {
78
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
79
+ }
80
+ finally { if (e_1) throw e_1.error; }
81
+ }
82
+ sql = 'create table if not exists ' + e.entityName + ' (' + result + '\r\n)';
101
83
  if (sql_database_1.SqlDatabase.LogToConsole)
102
84
  console.log(sql);
103
85
  return [4 /*yield*/, this.createCommand().execute(sql)];
104
- case 11:
105
- _h.sent();
86
+ case 2:
87
+ _d.sent();
106
88
  return [2 /*return*/];
107
89
  }
108
90
  });
@@ -190,4 +172,3 @@ var WebSqlBridgeToSQLQueryResult = /** @class */ (function () {
190
172
  };
191
173
  return WebSqlBridgeToSQLQueryResult;
192
174
  }());
193
- //# sourceMappingURL=web-sql-data-provider.js.map
package/src/entity.js CHANGED
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=entity.js.map
@@ -1,13 +1,15 @@
1
1
  import { SqlCommand } from "../sql-command";
2
2
  import { Filter, FilterConsumer } from './filter-interfaces';
3
3
  import { FieldMetadata } from "../column-interfaces";
4
+ import { EntityMetadata } from "../..";
4
5
  export declare class FilterConsumerBridgeToSqlRequest implements FilterConsumer {
5
6
  private r;
7
+ private nameProvider;
6
8
  private where;
7
9
  _addWhere: boolean;
8
10
  promises: Promise<void>[];
9
11
  resolveWhere(): Promise<string>;
10
- constructor(r: SqlCommand);
12
+ constructor(r: SqlCommand, nameProvider: dbNameProvider);
11
13
  custom(key: string, customItem: any): void;
12
14
  or(orElements: Filter[]): void;
13
15
  isNull(col: FieldMetadata): void;
@@ -34,3 +36,15 @@ export declare class CustomSqlFilterBuilder {
34
36
  sql: string;
35
37
  addParameterAndReturnSqlToken<valueType>(val: valueType, field?: FieldMetadata<valueType>): string;
36
38
  }
39
+ export declare function getDbNameProvider(meta: EntityMetadata): Promise<dbNameProvider>;
40
+ export declare class dbNameProviderImpl {
41
+ map: Map<string, string>;
42
+ nameOf(field: FieldMetadata<any>): string;
43
+ entityName: string;
44
+ isDbReadonly(x: FieldMetadata): boolean;
45
+ }
46
+ export interface dbNameProvider {
47
+ nameOf(field: FieldMetadata<any>): string;
48
+ entityName: string;
49
+ isDbReadonly(x: FieldMetadata): boolean;
50
+ }
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CustomSqlFilterBuilder = exports.FilterConsumerBridgeToSqlRequest = void 0;
3
+ exports.dbNameProviderImpl = exports.getDbNameProvider = exports.CustomSqlFilterBuilder = exports.FilterConsumerBridgeToSqlRequest = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
6
- function FilterConsumerBridgeToSqlRequest(r) {
6
+ function FilterConsumerBridgeToSqlRequest(r, nameProvider) {
7
7
  this.r = r;
8
+ this.nameProvider = nameProvider;
8
9
  this.where = "";
9
10
  this._addWhere = true;
10
11
  this.promises = [];
@@ -69,7 +70,7 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
69
70
  case 1:
70
71
  if (!!orElements_1_1.done) return [3 /*break*/, 4];
71
72
  element = orElements_1_1.value;
72
- f = new FilterConsumerBridgeToSqlRequest(this.r);
73
+ f = new FilterConsumerBridgeToSqlRequest(this.r, this.nameProvider);
73
74
  f._addWhere = false;
74
75
  element.__applyToConsumer(f);
75
76
  return [4 /*yield*/, f.resolveWhere()];
@@ -109,45 +110,26 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
109
110
  };
110
111
  FilterConsumerBridgeToSqlRequest.prototype.isNull = function (col) {
111
112
  var _this = this;
112
- this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { var _a; return tslib_1.__generator(this, function (_b) {
113
- switch (_b.label) {
114
- case 0:
115
- _a = this.addToWhere;
116
- return [4 /*yield*/, col.getDbName()];
117
- case 1: return [2 /*return*/, _a.apply(this, [(_b.sent()) + ' is null'])];
118
- }
113
+ this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
114
+ return [2 /*return*/, this.addToWhere(this.nameProvider.nameOf(col) + ' is null')];
119
115
  }); }); })());
120
116
  };
121
117
  FilterConsumerBridgeToSqlRequest.prototype.isNotNull = function (col) {
122
118
  var _this = this;
123
- this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { var _a; return tslib_1.__generator(this, function (_b) {
124
- switch (_b.label) {
125
- case 0:
126
- _a = this.addToWhere;
127
- return [4 /*yield*/, col.getDbName()];
128
- case 1: return [2 /*return*/, _a.apply(this, [(_b.sent()) + ' is not null'])];
129
- }
119
+ this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
120
+ return [2 /*return*/, this.addToWhere(this.nameProvider.nameOf(col) + ' is not null')];
130
121
  }); }); })());
131
122
  };
132
123
  FilterConsumerBridgeToSqlRequest.prototype.isIn = function (col, val) {
133
124
  var _this = this;
134
125
  this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
135
- var _a;
136
126
  var _this = this;
137
- return tslib_1.__generator(this, function (_b) {
138
- switch (_b.label) {
139
- case 0:
140
- if (!(val && val.length > 0)) return [3 /*break*/, 2];
141
- _a = this.addToWhere;
142
- return [4 /*yield*/, col.getDbName()];
143
- case 1:
144
- _a.apply(this, [(_b.sent()) + " in (" + val.map(function (x) { return _this.r.addParameterAndReturnSqlToken(col.valueConverter.toDb(x)); }).join(",") + ")"]);
145
- return [3 /*break*/, 3];
146
- case 2:
147
- this.addToWhere('1 = 0 /*isIn with no values*/');
148
- _b.label = 3;
149
- case 3: return [2 /*return*/];
150
- }
127
+ return tslib_1.__generator(this, function (_a) {
128
+ if (val && val.length > 0)
129
+ this.addToWhere(this.nameProvider.nameOf(col) + " in (" + val.map(function (x) { return _this.r.addParameterAndReturnSqlToken(col.valueConverter.toDb(x)); }).join(",") + ")");
130
+ else
131
+ this.addToWhere('1 = 0 /*isIn with no values*/');
132
+ return [2 /*return*/];
151
133
  });
152
134
  }); })());
153
135
  };
@@ -172,17 +154,9 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
172
154
  FilterConsumerBridgeToSqlRequest.prototype.containsCaseInsensitive = function (col, val) {
173
155
  var _this = this;
174
156
  this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
175
- var _a, _b;
176
- return tslib_1.__generator(this, function (_c) {
177
- switch (_c.label) {
178
- case 0:
179
- _a = this.addToWhere;
180
- _b = 'lower (';
181
- return [4 /*yield*/, col.getDbName()];
182
- case 1:
183
- _a.apply(this, [_b + (_c.sent()) + ") like lower ('%" + val.replace(/'/g, '\'\'') + "%')"]);
184
- return [2 /*return*/];
185
- }
157
+ return tslib_1.__generator(this, function (_a) {
158
+ this.addToWhere('lower (' + this.nameProvider.nameOf(col) + ") like lower ('%" + val.replace(/'/g, '\'\'') + "%')");
159
+ return [2 /*return*/];
186
160
  });
187
161
  }); })());
188
162
  };
@@ -191,13 +165,9 @@ var FilterConsumerBridgeToSqlRequest = /** @class */ (function () {
191
165
  this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
192
166
  var x;
193
167
  return tslib_1.__generator(this, function (_a) {
194
- switch (_a.label) {
195
- case 0: return [4 /*yield*/, col.getDbName()];
196
- case 1:
197
- x = (_a.sent()) + ' ' + operator + ' ' + this.r.addParameterAndReturnSqlToken(col.valueConverter.toDb(val));
198
- this.addToWhere(x);
199
- return [2 /*return*/];
200
- }
168
+ x = this.nameProvider.nameOf(col) + ' ' + operator + ' ' + this.r.addParameterAndReturnSqlToken(col.valueConverter.toDb(val));
169
+ this.addToWhere(x);
170
+ return [2 /*return*/];
201
171
  });
202
172
  }); })());
203
173
  };
@@ -247,4 +217,63 @@ var CustomSqlFilterBuilder = /** @class */ (function () {
247
217
  return CustomSqlFilterBuilder;
248
218
  }());
249
219
  exports.CustomSqlFilterBuilder = CustomSqlFilterBuilder;
250
- //# sourceMappingURL=filter-consumer-bridge-to-sql-request.js.map
220
+ function getDbNameProvider(meta) {
221
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
222
+ var result, _a, _b, f, _c, _d, _e, e_3_1, _f;
223
+ var e_3, _g;
224
+ return tslib_1.__generator(this, function (_h) {
225
+ switch (_h.label) {
226
+ case 0:
227
+ result = new dbNameProviderImpl();
228
+ _h.label = 1;
229
+ case 1:
230
+ _h.trys.push([1, 6, 7, 8]);
231
+ _a = tslib_1.__values(meta.fields), _b = _a.next();
232
+ _h.label = 2;
233
+ case 2:
234
+ if (!!_b.done) return [3 /*break*/, 5];
235
+ f = _b.value;
236
+ _d = (_c = result.map).set;
237
+ _e = [f.key];
238
+ return [4 /*yield*/, f.getDbName()];
239
+ case 3:
240
+ _d.apply(_c, _e.concat([_h.sent()]));
241
+ _h.label = 4;
242
+ case 4:
243
+ _b = _a.next();
244
+ return [3 /*break*/, 2];
245
+ case 5: return [3 /*break*/, 8];
246
+ case 6:
247
+ e_3_1 = _h.sent();
248
+ e_3 = { error: e_3_1 };
249
+ return [3 /*break*/, 8];
250
+ case 7:
251
+ try {
252
+ if (_b && !_b.done && (_g = _a.return)) _g.call(_a);
253
+ }
254
+ finally { if (e_3) throw e_3.error; }
255
+ return [7 /*endfinally*/];
256
+ case 8:
257
+ _f = result;
258
+ return [4 /*yield*/, meta.getDbName()];
259
+ case 9:
260
+ _f.entityName = _h.sent();
261
+ return [2 /*return*/, result];
262
+ }
263
+ });
264
+ });
265
+ }
266
+ exports.getDbNameProvider = getDbNameProvider;
267
+ var dbNameProviderImpl = /** @class */ (function () {
268
+ function dbNameProviderImpl() {
269
+ this.map = new Map();
270
+ }
271
+ dbNameProviderImpl.prototype.nameOf = function (field) {
272
+ return this.map.get(field.key);
273
+ };
274
+ dbNameProviderImpl.prototype.isDbReadonly = function (x) {
275
+ return (x.dbReadOnly || x.isServerExpression || this.nameOf(x) != x.options.dbName);
276
+ };
277
+ return dbNameProviderImpl;
278
+ }());
279
+ exports.dbNameProviderImpl = dbNameProviderImpl;
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=filter-consumer-bridge-to-url-builder.js.map
@@ -599,4 +599,3 @@ var customTranslator = /** @class */ (function () {
599
599
  };
600
600
  return customTranslator;
601
601
  }());
602
- //# sourceMappingURL=filter-interfaces.js.map
package/src/id-entity.js CHANGED
@@ -19,4 +19,3 @@ var IdEntity = /** @class */ (function (_super) {
19
19
  return IdEntity;
20
20
  }(remult3_1.EntityBase));
21
21
  exports.IdEntity = IdEntity;
22
- //# sourceMappingURL=id-entity.js.map
@@ -31,7 +31,15 @@ export declare class RepositoryImplementation<entityType> implements Repository<
31
31
  id: string;
32
32
  } ? string : (string | number))): Promise<void>;
33
33
  delete(item: entityType): Promise<void>;
34
- save(entity: entityType, originalIdOrCreate?: boolean | number | string): Promise<entityType>;
34
+ insert(item: Partial<OmitEB<entityType>>[]): Promise<entityType[]>;
35
+ insert(item: Partial<OmitEB<entityType>>): Promise<entityType>;
36
+ update(id: (entityType extends {
37
+ id: number;
38
+ } ? number : entityType extends {
39
+ id: string;
40
+ } ? string : (string | number)), entity: Partial<OmitEB<entityType>>): Promise<entityType>;
41
+ save(item: Partial<OmitEB<entityType>>[]): Promise<entityType[]>;
42
+ save(item: Partial<OmitEB<entityType>>): Promise<entityType>;
35
43
  find(options: FindOptions<entityType>): Promise<entityType[]>;
36
44
  private mapRawDataToResult;
37
45
  count(where?: EntityFilter<entityType>): Promise<number>;
@@ -202,44 +202,76 @@ var RepositoryImplementation = /** @class */ (function () {
202
202
  });
203
203
  });
204
204
  };
205
- RepositoryImplementation.prototype.save = function (entity, originalIdOrCreate) {
205
+ RepositoryImplementation.prototype.insert = function (entity) {
206
206
  return tslib_1.__awaiter(this, void 0, void 0, function () {
207
- var ref, id, row, obj, key, element, updatedRow;
207
+ var ref;
208
+ var _this = this;
208
209
  return tslib_1.__generator(this, function (_a) {
209
210
  switch (_a.label) {
210
211
  case 0:
212
+ if (!Array.isArray(entity)) return [3 /*break*/, 1];
213
+ return [2 /*return*/, Promise.all(entity.map(function (x) { return _this.insert(x); }))];
214
+ case 1:
211
215
  ref = getEntityRef(entity, false);
212
- if (!ref) return [3 /*break*/, 2];
216
+ if (!ref) return [3 /*break*/, 3];
217
+ if (!ref.isNew())
218
+ throw "Item is not new";
213
219
  return [4 /*yield*/, ref.save()];
214
- case 1: return [2 /*return*/, _a.sent()];
215
- case 2:
216
- if (!(entity instanceof EntityBase)) return [3 /*break*/, 4];
217
- return [4 /*yield*/, this.getEntityRef(entity).save()];
218
- case 3: return [2 /*return*/, _a.sent()];
219
- case 4:
220
- id = entity[this.metadata.idMetadata.field.key];
221
- if (!(id === undefined || originalIdOrCreate === true)) return [3 /*break*/, 6];
222
- return [4 /*yield*/, this.getEntityRef(this.create(entity)).save()];
223
- case 5: return [2 /*return*/, _a.sent()];
224
- case 6:
225
- if (originalIdOrCreate !== undefined)
226
- id = originalIdOrCreate;
220
+ case 2: return [2 /*return*/, _a.sent()];
221
+ case 3: return [4 /*yield*/, this.getEntityRef(this.create(entity)).save()];
222
+ case 4: return [2 /*return*/, _a.sent()];
223
+ }
224
+ });
225
+ });
226
+ };
227
+ RepositoryImplementation.prototype.update = function (id, entity) {
228
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
229
+ var row, obj, key, updatedRow;
230
+ return tslib_1.__generator(this, function (_a) {
231
+ switch (_a.label) {
232
+ case 0:
227
233
  row = new rowHelperImplementation(this._info, Object.assign({}, entity), this, this.edp, this.remult, false);
228
234
  obj = row.copyDataToObject();
229
235
  for (key in entity) {
230
236
  if (Object.prototype.hasOwnProperty.call(entity, key)) {
231
- element = entity[key];
232
237
  entity[key] = obj[key];
233
238
  }
234
239
  }
235
240
  return [4 /*yield*/, this.edp.update(id, entity)];
236
- case 7:
241
+ case 1:
237
242
  updatedRow = _a.sent();
238
243
  return [2 /*return*/, this.mapRawDataToResult(updatedRow, undefined)];
239
244
  }
240
245
  });
241
246
  });
242
247
  };
248
+ RepositoryImplementation.prototype.save = function (entity) {
249
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
250
+ var ref, id;
251
+ var _this = this;
252
+ return tslib_1.__generator(this, function (_a) {
253
+ switch (_a.label) {
254
+ case 0:
255
+ if (!Array.isArray(entity)) return [3 /*break*/, 1];
256
+ return [2 /*return*/, Promise.all(entity.map(function (x) { return _this.insert(x); }))];
257
+ case 1:
258
+ ref = getEntityRef(entity, false);
259
+ if (!ref) return [3 /*break*/, 3];
260
+ return [4 /*yield*/, ref.save()];
261
+ case 2: return [2 /*return*/, _a.sent()];
262
+ case 3:
263
+ if (!(entity instanceof EntityBase)) return [3 /*break*/, 5];
264
+ return [4 /*yield*/, this.getEntityRef(entity).save()];
265
+ case 4: return [2 /*return*/, _a.sent()];
266
+ case 5:
267
+ id = entity[this.metadata.idMetadata.field.key];
268
+ if (id === undefined)
269
+ return [2 /*return*/, this.insert(entity)];
270
+ return [2 /*return*/, this.update(id, entity)];
271
+ }
272
+ });
273
+ });
274
+ };
243
275
  RepositoryImplementation.prototype.find = function (options) {
244
276
  return tslib_1.__awaiter(this, void 0, void 0, function () {
245
277
  var opt, _a, rawRows, loadFields, _b, _c, col, ei, load, repo, toLoad, rawRows_1, rawRows_1_1, r, val, rows, rows_1, rows_1_1, r, e_4_1, result;
@@ -2626,4 +2658,3 @@ var SubscribableImp = /** @class */ (function () {
2626
2658
  };
2627
2659
  return SubscribableImp;
2628
2660
  }());
2629
- //# sourceMappingURL=RepositoryImplementation.js.map
@@ -3,4 +3,3 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./remult3"), exports);
5
5
  tslib_1.__exportStar(require("./RepositoryImplementation"), exports);
6
- //# sourceMappingURL=index.js.map
@@ -119,13 +119,15 @@ export interface Repository<entityType> {
119
119
  count(where?: EntityFilter<entityType>): Promise<number>;
120
120
  create(item?: Partial<OmitEB<entityType>>): entityType;
121
121
  getEntityRef(item: entityType): EntityRef<entityType>;
122
+ save(item: Partial<OmitEB<entityType>>[]): Promise<entityType[]>;
122
123
  save(item: Partial<OmitEB<entityType>>): Promise<entityType>;
123
- save(item: Partial<OmitEB<entityType>>, originalId?: entityType extends {
124
+ insert(item: Partial<OmitEB<entityType>>[]): Promise<entityType[]>;
125
+ insert(item: Partial<OmitEB<entityType>>): Promise<entityType>;
126
+ update(id: (entityType extends {
124
127
  id: number;
125
128
  } ? number : entityType extends {
126
129
  id: string;
127
- } ? string : (string | number)): Promise<entityType>;
128
- save(item: Partial<OmitEB<entityType>>, create?: boolean): Promise<entityType>;
130
+ } ? string : (string | number)), item: Partial<OmitEB<entityType>>): Promise<entityType>;
129
131
  delete(id: (entityType extends {
130
132
  id: number;
131
133
  } ? number : entityType extends {
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=remult3.js.map
@@ -591,4 +591,3 @@ function prepareReceivedArgs(types, args, remult, ds, res) {
591
591
  });
592
592
  }
593
593
  exports.prepareReceivedArgs = prepareReceivedArgs;
594
- //# sourceMappingURL=server-action.js.map
@@ -168,4 +168,3 @@ function testAllDbs(key, doTest, focus) {
168
168
  });
169
169
  }
170
170
  exports.testAllDbs = testAllDbs;
171
- //# sourceMappingURL=db-tests-setup.js.map
@@ -1198,11 +1198,11 @@ db_tests_setup_1.testAll("Paging", function (_a) {
1198
1198
  case 1:
1199
1199
  s = _d.sent();
1200
1200
  _b = expect;
1201
- return [4 /*yield*/, s.find({ limit: 3 })];
1201
+ return [4 /*yield*/, s.find({ limit: 3, orderBy: { myId: "asc" } })];
1202
1202
  case 2:
1203
1203
  _b.apply(void 0, [(_d.sent()).length]).toBe(3);
1204
1204
  _c = expect;
1205
- return [4 /*yield*/, s.find({ limit: 3, page: 2 })];
1205
+ return [4 /*yield*/, s.find({ limit: 3, orderBy: { myId: "asc" }, page: 2 })];
1206
1206
  case 3:
1207
1207
  _c.apply(void 0, [(_d.sent()).length]).toBe(1);
1208
1208
  return [2 /*return*/];
@@ -1277,4 +1277,3 @@ var p = /** @class */ (function (_super) {
1277
1277
  ], p);
1278
1278
  return p;
1279
1279
  }(remult3_1.EntityBase));
1280
- //# sourceMappingURL=db-tests.db-tests.js.map
@@ -19,4 +19,3 @@ function deleteAll(r) {
19
19
  });
20
20
  }
21
21
  exports.deleteAll = deleteAll;
22
- //# sourceMappingURL=deleteAll.js.map
@@ -92,4 +92,3 @@ var entityWithValidations = /** @class */ (function (_super) {
92
92
  return entityWithValidations;
93
93
  }(remult3_1.EntityBase));
94
94
  exports.entityWithValidations = entityWithValidations;
95
- //# sourceMappingURL=entityWithValidations.js.map
@@ -4,4 +4,3 @@ require("./db-tests.db-tests");
4
4
  require("./test-custom-id-column.spec");
5
5
  require("./test-special-value.spec");
6
6
  require("./test-update-with-null.spec");
7
- //# sourceMappingURL=index.js.map
@@ -85,4 +85,3 @@ describe("custom id column", function () {
85
85
  });
86
86
  });
87
87
  });
88
- //# sourceMappingURL=test-custom-id-column.spec.js.map
@@ -126,4 +126,3 @@ db_tests_setup_1.testAll("test2 save and load", function (_a) {
126
126
  });
127
127
  });
128
128
  });
129
- //# sourceMappingURL=test-special-value.spec.js.map
@@ -49,4 +49,3 @@ db_tests_setup_1.testAll("test that update null works", function (_a) {
49
49
  });
50
50
  });
51
51
  }, false);
52
- //# sourceMappingURL=test-update-with-null.spec.js.map
package/src/sort.js CHANGED
@@ -137,4 +137,3 @@ var Sort = /** @class */ (function () {
137
137
  return Sort;
138
138
  }());
139
139
  exports.Sort = Sort;
140
- //# sourceMappingURL=sort.js.map
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=sql-command.js.map
package/src/tests/Done.js CHANGED
@@ -15,4 +15,3 @@ var Done = /** @class */ (function () {
15
15
  return Done;
16
16
  }());
17
17
  exports.Done = Done;
18
- //# sourceMappingURL=Done.js.map
@@ -27,4 +27,3 @@ var TestDataApiResponse = /** @class */ (function () {
27
27
  return TestDataApiResponse;
28
28
  }());
29
29
  exports.TestDataApiResponse = TestDataApiResponse;
30
- //# sourceMappingURL=TestDataApiResponse.js.map
package/src/tests/c.js CHANGED
@@ -26,4 +26,3 @@ var c = /** @class */ (function (_super) {
26
26
  return c;
27
27
  }(remult3_1.EntityBase));
28
28
  exports.c = c;
29
- //# sourceMappingURL=c.js.map
@@ -48,4 +48,3 @@ function createData(doInsert, entity) {
48
48
  });
49
49
  }
50
50
  exports.createData = createData;
51
- //# sourceMappingURL=createData.js.map
package/src/tests/d.js CHANGED
@@ -41,4 +41,3 @@ var d = /** @class */ (function (_super) {
41
41
  return d;
42
42
  }(remult3_1.EntityBase));
43
43
  exports.d = d;
44
- //# sourceMappingURL=d.js.map
@@ -43,4 +43,3 @@ var dWithPrefilter = /** @class */ (function (_super) {
43
43
  return dWithPrefilter;
44
44
  }(remult3_1.EntityBase));
45
45
  exports.dWithPrefilter = dWithPrefilter;
46
- //# sourceMappingURL=dWithPrefilter.js.map