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.
- package/assign.js +0 -1
- package/classType.js +0 -1
- package/graphql.js +0 -1
- package/index.js +0 -1
- package/inputTypes.js +0 -1
- package/package.json +1 -1
- package/postgres/index.js +0 -1
- package/postgres/postgres-data-provider.d.ts +3 -3
- package/postgres/postgres-data-provider.js +136 -191
- package/postgres/postgresColumnSyntax.js +0 -1
- package/remult-express.js +0 -1
- package/remult-knex/index.d.ts +6 -5
- package/remult-knex/index.js +243 -287
- package/remult-mongo.js +150 -218
- package/server/JsonEntityFileStorage.js +0 -1
- package/server/expressBridge.d.ts +5 -0
- package/server/expressBridge.js +17 -2
- package/server/index.js +0 -1
- package/server/register-actions-on-server.js +0 -1
- package/server/register-entities-on-server.js +0 -1
- package/src/__EntityValueProvider.js +0 -1
- package/src/__RowsOfDataForTesting.js +0 -1
- package/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +1 -1
- package/src/backend-tests/backend-database-test-setup.backend-spec.js +75 -53
- package/src/backend-tests/my-test.backend-spec.js +0 -1
- package/src/column-interfaces.js +0 -1
- package/src/column.js +0 -1
- package/src/context.js +0 -1
- package/src/data-api.js +0 -1
- package/src/data-interfaces.d.ts +0 -2
- package/src/data-interfaces.js +0 -1
- package/src/data-providers/array-entity-data-provider.js +0 -1
- package/src/data-providers/in-memory-database.js +0 -1
- package/src/data-providers/json-data-provider.js +0 -1
- package/src/data-providers/rest-data-provider.js +0 -1
- package/src/data-providers/sql-database.d.ts +0 -2
- package/src/data-providers/sql-database.js +199 -299
- package/src/data-providers/web-sql-data-provider.js +38 -57
- package/src/entity.js +0 -1
- package/src/filter/filter-consumer-bridge-to-sql-request.d.ts +15 -1
- package/src/filter/filter-consumer-bridge-to-sql-request.js +80 -51
- package/src/filter/filter-consumer-bridge-to-url-builder.js +0 -1
- package/src/filter/filter-interfaces.js +0 -1
- package/src/id-entity.js +0 -1
- package/src/remult3/RepositoryImplementation.d.ts +9 -1
- package/src/remult3/RepositoryImplementation.js +50 -19
- package/src/remult3/index.js +0 -1
- package/src/remult3/remult3.d.ts +5 -3
- package/src/remult3/remult3.js +0 -1
- package/src/server-action.js +0 -1
- package/src/shared-tests/db-tests-setup.js +0 -1
- package/src/shared-tests/db-tests.db-tests.js +2 -3
- package/src/shared-tests/deleteAll.js +0 -1
- package/src/shared-tests/entityWithValidations.js +0 -1
- package/src/shared-tests/index.js +0 -1
- package/src/shared-tests/test-custom-id-column.spec.js +0 -1
- package/src/shared-tests/test-special-value.spec.js +0 -1
- package/src/shared-tests/test-update-with-null.spec.js +0 -1
- package/src/sort.js +0 -1
- package/src/sql-command.js +0 -1
- package/src/tests/Done.js +0 -1
- package/src/tests/TestDataApiResponse.js +0 -1
- package/src/tests/c.js +0 -1
- package/src/tests/createData.js +0 -1
- package/src/tests/d.js +0 -1
- package/src/tests/dWithPrefilter.js +0 -1
- package/src/tests/entityForCustomFilter.js +24 -23
- package/src/tests/entityWithValidationsOnColumn.js +0 -1
- package/src/tests/h.js +0 -1
- package/src/tests/remult-3-entities.js +0 -1
- package/src/tests/tasks.js +0 -1
- package/src/tests/testModel/models.js +0 -1
- package/src/validators.js +0 -1
- package/urlBuilder.js +0 -1
- package/valueConverters.js +1 -2
- package/assign.js.map +0 -1
- package/classType.js.map +0 -1
- package/graphql.js.map +0 -1
- package/index.js.map +0 -1
- package/inputTypes.js.map +0 -1
- package/postgres/index.js.map +0 -1
- package/postgres/postgres-data-provider.js.map +0 -1
- package/postgres/postgresColumnSyntax.js.map +0 -1
- package/remult-express.js.map +0 -1
- package/remult-knex/index.js.map +0 -1
- package/remult-mongo.js.map +0 -1
- package/server/JsonEntityFileStorage.js.map +0 -1
- package/server/expressBridge.js.map +0 -1
- package/server/index.js.map +0 -1
- package/server/register-actions-on-server.js.map +0 -1
- package/server/register-entities-on-server.js.map +0 -1
- package/src/__EntityValueProvider.js.map +0 -1
- package/src/__RowsOfDataForTesting.js.map +0 -1
- package/src/backend-tests/backend-database-test-setup.backend-spec.js.map +0 -1
- package/src/backend-tests/my-test.backend-spec.js.map +0 -1
- package/src/column-interfaces.js.map +0 -1
- package/src/column.js.map +0 -1
- package/src/context.js.map +0 -1
- package/src/data-api.js.map +0 -1
- package/src/data-interfaces.js.map +0 -1
- package/src/data-providers/array-entity-data-provider.js.map +0 -1
- package/src/data-providers/in-memory-database.js.map +0 -1
- package/src/data-providers/json-data-provider.js.map +0 -1
- package/src/data-providers/rest-data-provider.js.map +0 -1
- package/src/data-providers/sql-database.js.map +0 -1
- package/src/data-providers/web-sql-data-provider.js.map +0 -1
- package/src/entity.js.map +0 -1
- package/src/filter/filter-consumer-bridge-to-sql-request.js.map +0 -1
- package/src/filter/filter-consumer-bridge-to-url-builder.js.map +0 -1
- package/src/filter/filter-interfaces.js.map +0 -1
- package/src/id-entity.js.map +0 -1
- package/src/remult3/RepositoryImplementation.js.map +0 -1
- package/src/remult3/index.js.map +0 -1
- package/src/remult3/remult3.js.map +0 -1
- package/src/server-action.js.map +0 -1
- package/src/shared-tests/db-tests-setup.js.map +0 -1
- package/src/shared-tests/db-tests.db-tests.js.map +0 -1
- package/src/shared-tests/deleteAll.js.map +0 -1
- package/src/shared-tests/entityWithValidations.js.map +0 -1
- package/src/shared-tests/index.js.map +0 -1
- package/src/shared-tests/test-custom-id-column.spec.js.map +0 -1
- package/src/shared-tests/test-special-value.spec.js.map +0 -1
- package/src/shared-tests/test-update-with-null.spec.js.map +0 -1
- package/src/sort.js.map +0 -1
- package/src/sql-command.js.map +0 -1
- package/src/tests/Done.js.map +0 -1
- package/src/tests/TestDataApiResponse.js.map +0 -1
- package/src/tests/c.js.map +0 -1
- package/src/tests/createData.js.map +0 -1
- package/src/tests/d.js.map +0 -1
- package/src/tests/dWithPrefilter.js.map +0 -1
- package/src/tests/entityForCustomFilter.js.map +0 -1
- package/src/tests/entityWithValidationsOnColumn.js.map +0 -1
- package/src/tests/h.js.map +0 -1
- package/src/tests/remult-3-entities.js.map +0 -1
- package/src/tests/tasks.js.map +0 -1
- package/src/tests/testModel/models.js.map +0 -1
- package/src/validators.js.map +0 -1
- package/urlBuilder.js.map +0 -1
- 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
|
|
31
|
-
return tslib_1.__generator(this, function (
|
|
32
|
-
switch (
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
51
|
-
var e_1,
|
|
52
|
-
return tslib_1.__generator(this, function (
|
|
53
|
-
switch (
|
|
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
|
-
|
|
56
|
+
return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.getDbNameProvider(entity)];
|
|
57
57
|
case 1:
|
|
58
|
-
|
|
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
|
-
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
|
105
|
-
|
|
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,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 () {
|
|
113
|
-
|
|
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 () {
|
|
124
|
-
|
|
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 (
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
|
|
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
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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
|
-
|
|
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;
|
package/src/id-entity.js
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
205
|
+
RepositoryImplementation.prototype.insert = function (entity) {
|
|
206
206
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
207
|
-
var ref
|
|
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*/,
|
|
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
|
|
215
|
-
case
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
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
|
|
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
|
package/src/remult3/index.js
CHANGED
package/src/remult3/remult3.d.ts
CHANGED
|
@@ -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
|
-
|
|
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 {
|
package/src/remult3/remult3.js
CHANGED
package/src/server-action.js
CHANGED
|
@@ -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
|
package/src/sort.js
CHANGED
package/src/sql-command.js
CHANGED
package/src/tests/Done.js
CHANGED
package/src/tests/c.js
CHANGED
package/src/tests/createData.js
CHANGED
package/src/tests/d.js
CHANGED