remult 0.17.2 → 0.18.0
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/SseSubscriptionServer.d.ts +23 -0
- package/SseSubscriptionServer.js +143 -0
- package/ably.d.ts +13 -0
- package/ably.js +59 -0
- package/esm/SseSubscriptionServer.d.ts +23 -0
- package/esm/SseSubscriptionServer.js +102 -0
- package/esm/ably.d.ts +13 -0
- package/esm/ably.js +28 -0
- package/esm/graphql.js +0 -1
- package/esm/index.d.ts +7 -4
- package/esm/index.js +4 -2
- package/esm/live-query/data-provider-live-query-storage.d.ts +23 -0
- package/esm/live-query/data-provider-live-query-storage.js +78 -0
- package/esm/myLog.d.ts +1 -0
- package/esm/myLog.js +5 -0
- package/esm/postgres/postgres-data-provider.d.ts +4 -2
- package/esm/postgres/postgres-data-provider.js +18 -6
- package/esm/postgres/schema-builder.d.ts +2 -1
- package/esm/postgres/schema-builder.js +49 -29
- package/esm/remult-knex/index.d.ts +10 -32
- package/esm/remult-knex/index.js +75 -51
- package/esm/remult-mongo.d.ts +9 -2
- package/esm/remult-mongo.js +24 -8
- package/esm/remult-next.d.ts +11 -0
- package/esm/remult-next.js +27 -0
- package/esm/server/core.d.ts +2 -0
- package/esm/server/core.js +2 -0
- package/esm/server/expressBridge.d.ts +19 -7
- package/esm/server/expressBridge.js +135 -31
- package/esm/server/index.d.ts +2 -1
- package/esm/server/index.js +2 -1
- package/esm/server/initDataProvider.d.ts +2 -0
- package/esm/server/initDataProvider.js +14 -0
- package/esm/src/buildRestDataProvider.d.ts +31 -0
- package/esm/src/buildRestDataProvider.js +110 -0
- package/esm/src/column-interfaces.d.ts +44 -8
- package/esm/src/column.d.ts +3 -3
- package/esm/src/context.d.ts +39 -36
- package/esm/src/context.js +87 -117
- package/esm/src/data-api.d.ts +9 -3
- package/esm/src/data-api.js +130 -63
- package/esm/src/data-interfaces.d.ts +5 -1
- package/esm/src/data-providers/array-entity-data-provider.d.ts +1 -1
- package/esm/src/data-providers/array-entity-data-provider.js +2 -17
- package/esm/src/data-providers/rest-data-provider.d.ts +4 -3
- package/esm/src/data-providers/rest-data-provider.js +64 -23
- package/esm/src/data-providers/sql-database.d.ts +7 -3
- package/esm/src/data-providers/sql-database.js +60 -17
- package/esm/src/data-providers/web-sql-data-provider.d.ts +3 -0
- package/esm/src/data-providers/web-sql-data-provider.js +23 -9
- package/esm/src/entity.d.ts +2 -2
- package/esm/src/filter/filter-consumer-bridge-to-sql-request.d.ts +16 -16
- package/esm/src/filter/filter-consumer-bridge-to-sql-request.js +29 -21
- package/esm/src/filter/filter-interfaces.d.ts +5 -5
- package/esm/src/filter/filter-interfaces.js +31 -26
- package/esm/src/live-query/LiveQueryClient.d.ts +1 -0
- package/esm/src/live-query/LiveQueryClient.js +184 -0
- package/esm/src/live-query/SseSubscriptionClient.d.ts +5 -0
- package/esm/src/live-query/SseSubscriptionClient.js +86 -0
- package/esm/src/live-query/SubscriptionChannel.d.ts +41 -0
- package/esm/src/live-query/SubscriptionChannel.js +121 -0
- package/esm/src/live-query/SubscriptionServer.d.ts +38 -0
- package/esm/src/live-query/SubscriptionServer.js +108 -0
- package/esm/src/remult-proxy.d.ts +1 -1
- package/esm/src/remult-proxy.js +52 -7
- package/esm/src/remult3/RepositoryImplementation.d.ts +14 -5
- package/esm/src/remult3/RepositoryImplementation.js +124 -44
- package/esm/src/remult3/getId.d.ts +2 -0
- package/esm/src/remult3/getId.js +7 -0
- package/esm/src/remult3/remult3.d.ts +67 -10
- package/esm/src/remult3/remult3.js +1 -0
- package/esm/src/server-action.d.ts +5 -1
- package/esm/src/server-action.js +11 -12
- package/esm/src/shared-tests/db-tests-setup.d.ts +12 -5
- package/esm/src/shared-tests/db-tests-setup.js +14 -6
- package/esm/src/shared-tests/db-tests.db-tests.js +71 -10
- package/esm/src/sort.d.ts +1 -0
- package/esm/src/sort.js +18 -0
- package/esm/src/sql-command.d.ts +5 -2
- package/esm/src/tests/entityForCustomFilter.d.ts +6 -6
- package/esm/src/tests/entityForCustomFilter.js +20 -21
- package/esm/src/tests/frontend-database-tests-setup.spec.js +3 -4
- package/esm/src/tests/testHelper.spec.d.ts +3 -1
- package/esm/src/tests/testHelper.spec.js +63 -60
- package/esm/src/valueConverters.js +15 -7
- package/graphql.js +0 -1
- package/index.d.ts +7 -4
- package/index.js +7 -3
- package/live-query/data-provider-live-query-storage.d.ts +23 -0
- package/live-query/data-provider-live-query-storage.js +236 -0
- package/myLog.d.ts +1 -0
- package/myLog.js +20 -0
- package/package.json +18 -1
- package/postgres/postgres-data-provider.d.ts +4 -2
- package/postgres/postgres-data-provider.js +54 -39
- package/postgres/schema-builder.d.ts +2 -1
- package/postgres/schema-builder.js +118 -70
- package/remult-express.js +1 -1
- package/remult-knex/index.d.ts +10 -32
- package/remult-knex/index.js +134 -87
- package/remult-mongo.d.ts +9 -2
- package/remult-mongo.js +39 -7
- package/remult-next.d.ts +11 -0
- package/remult-next.js +73 -0
- package/server/JsonEntityFileStorage.js +2 -2
- package/server/core.d.ts +2 -0
- package/server/core.js +5 -1
- package/server/expressBridge.d.ts +19 -7
- package/server/expressBridge.js +283 -69
- package/server/index.d.ts +2 -1
- package/server/index.js +3 -1
- package/server/initDataProvider.d.ts +2 -0
- package/server/initDataProvider.js +26 -0
- package/src/buildRestDataProvider.d.ts +31 -0
- package/src/buildRestDataProvider.js +162 -0
- package/src/column-interfaces.d.ts +44 -8
- package/src/column.d.ts +3 -3
- package/src/context.d.ts +39 -36
- package/src/context.js +171 -166
- package/src/data-api.d.ts +9 -3
- package/src/data-api.js +233 -88
- package/src/data-interfaces.d.ts +5 -1
- package/src/data-providers/array-entity-data-provider.d.ts +1 -1
- package/src/data-providers/array-entity-data-provider.js +2 -17
- package/src/data-providers/rest-data-provider.d.ts +4 -3
- package/src/data-providers/rest-data-provider.js +105 -39
- package/src/data-providers/sql-database.d.ts +7 -3
- package/src/data-providers/sql-database.js +89 -16
- package/src/data-providers/web-sql-data-provider.d.ts +3 -0
- package/src/data-providers/web-sql-data-provider.js +56 -11
- package/src/entity.d.ts +2 -2
- package/src/filter/filter-consumer-bridge-to-sql-request.d.ts +16 -16
- package/src/filter/filter-consumer-bridge-to-sql-request.js +59 -50
- package/src/filter/filter-interfaces.d.ts +5 -5
- package/src/filter/filter-interfaces.js +31 -26
- package/src/live-query/LiveQueryClient.d.ts +1 -0
- package/src/live-query/LiveQueryClient.js +283 -0
- package/src/live-query/SseSubscriptionClient.d.ts +5 -0
- package/src/live-query/SseSubscriptionClient.js +150 -0
- package/src/live-query/SubscriptionChannel.d.ts +41 -0
- package/src/live-query/SubscriptionChannel.js +209 -0
- package/src/live-query/SubscriptionServer.d.ts +38 -0
- package/src/live-query/SubscriptionServer.js +258 -0
- package/src/remult-proxy.d.ts +1 -1
- package/src/remult-proxy.js +153 -8
- package/src/remult3/RepositoryImplementation.d.ts +14 -5
- package/src/remult3/RepositoryImplementation.js +200 -85
- package/src/remult3/getId.d.ts +2 -0
- package/src/remult3/getId.js +11 -0
- package/src/remult3/remult3.d.ts +67 -10
- package/src/remult3/remult3.js +1 -0
- package/src/server-action.d.ts +5 -1
- package/src/server-action.js +11 -11
- package/src/shared-tests/db-tests-setup.d.ts +12 -5
- package/src/shared-tests/db-tests-setup.js +17 -8
- package/src/shared-tests/db-tests.db-tests.js +140 -8
- package/src/sort.d.ts +1 -0
- package/src/sort.js +18 -0
- package/src/sql-command.d.ts +5 -2
- package/src/tests/entityForCustomFilter.d.ts +6 -6
- package/src/tests/entityForCustomFilter.js +30 -31
- package/src/tests/frontend-database-tests-setup.spec.js +5 -6
- package/src/tests/testHelper.spec.d.ts +3 -1
- package/src/tests/testHelper.spec.js +104 -100
- package/src/valueConverters.js +15 -7
|
@@ -4,6 +4,7 @@ exports.PostgresSchemaBuilder = exports.verifyStructureOfAllEntities = exports.p
|
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var context_1 = require("../src/context");
|
|
6
6
|
var filter_consumer_bridge_to_sql_request_1 = require("../src/filter/filter-consumer-bridge-to-sql-request");
|
|
7
|
+
var remult_proxy_1 = require("../src/remult-proxy");
|
|
7
8
|
var remult3_1 = require("../src/remult3");
|
|
8
9
|
var valueConverters_1 = require("../src/valueConverters");
|
|
9
10
|
function postgresColumnSyntax(x, dbName) {
|
|
@@ -57,58 +58,103 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
57
58
|
}
|
|
58
59
|
PostgresSchemaBuilder.prototype.verifyStructureOfAllEntities = function (remult) {
|
|
59
60
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
60
|
-
var
|
|
61
|
-
var e_1,
|
|
61
|
+
var completed, entities, _a, _b, entityClass, entity, e, e_1_1;
|
|
62
|
+
var e_1, _c;
|
|
63
|
+
return tslib_1.__generator(this, function (_d) {
|
|
64
|
+
switch (_d.label) {
|
|
65
|
+
case 0:
|
|
66
|
+
if (!remult) {
|
|
67
|
+
remult = remult_proxy_1.RemultProxy.defaultRemult;
|
|
68
|
+
}
|
|
69
|
+
completed = new Set();
|
|
70
|
+
entities = [];
|
|
71
|
+
_d.label = 1;
|
|
72
|
+
case 1:
|
|
73
|
+
_d.trys.push([1, 6, 7, 8]);
|
|
74
|
+
_a = tslib_1.__values(tslib_1.__spread(context_1.allEntities).reverse()), _b = _a.next();
|
|
75
|
+
_d.label = 2;
|
|
76
|
+
case 2:
|
|
77
|
+
if (!!_b.done) return [3 /*break*/, 5];
|
|
78
|
+
entityClass = _b.value;
|
|
79
|
+
entity = remult.repo(entityClass).metadata;
|
|
80
|
+
return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.dbNamesOf(entity)];
|
|
81
|
+
case 3:
|
|
82
|
+
e = _d.sent();
|
|
83
|
+
if (completed.has(e.$entityName))
|
|
84
|
+
return [3 /*break*/, 4];
|
|
85
|
+
completed.add(e.$entityName);
|
|
86
|
+
entities.push(entity);
|
|
87
|
+
_d.label = 4;
|
|
88
|
+
case 4:
|
|
89
|
+
_b = _a.next();
|
|
90
|
+
return [3 /*break*/, 2];
|
|
91
|
+
case 5: return [3 /*break*/, 8];
|
|
92
|
+
case 6:
|
|
93
|
+
e_1_1 = _d.sent();
|
|
94
|
+
e_1 = { error: e_1_1 };
|
|
95
|
+
return [3 /*break*/, 8];
|
|
96
|
+
case 7:
|
|
97
|
+
try {
|
|
98
|
+
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
99
|
+
}
|
|
100
|
+
finally { if (e_1) throw e_1.error; }
|
|
101
|
+
return [7 /*endfinally*/];
|
|
102
|
+
case 8: return [4 /*yield*/, this.ensureSchema(entities)];
|
|
103
|
+
case 9:
|
|
104
|
+
_d.sent();
|
|
105
|
+
return [2 /*return*/];
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
PostgresSchemaBuilder.prototype.ensureSchema = function (entities) {
|
|
111
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
112
|
+
var entities_1, entities_1_1, entity, e, err_1, e_2_1;
|
|
113
|
+
var e_2, _a;
|
|
62
114
|
return tslib_1.__generator(this, function (_b) {
|
|
63
115
|
switch (_b.label) {
|
|
64
116
|
case 0:
|
|
65
|
-
|
|
117
|
+
_b.trys.push([0, 10, 11, 12]);
|
|
118
|
+
entities_1 = tslib_1.__values(entities), entities_1_1 = entities_1.next();
|
|
66
119
|
_b.label = 1;
|
|
67
120
|
case 1:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
121
|
+
if (!!entities_1_1.done) return [3 /*break*/, 9];
|
|
122
|
+
entity = entities_1_1.value;
|
|
123
|
+
return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.dbNamesOf(entity)];
|
|
71
124
|
case 2:
|
|
72
|
-
if (!!allEntities_1_1.done) return [3 /*break*/, 11];
|
|
73
|
-
entityClass = allEntities_1_1.value;
|
|
74
|
-
entity = remult.repo(entityClass).metadata;
|
|
75
|
-
return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.getDbNameProvider(entity)];
|
|
76
|
-
case 3:
|
|
77
125
|
e = _b.sent();
|
|
78
|
-
_b.label =
|
|
79
|
-
case
|
|
80
|
-
_b.trys.push([
|
|
81
|
-
if (!!entity.options.sqlExpression) return [3 /*break*/,
|
|
82
|
-
return [
|
|
83
|
-
case 5:
|
|
84
|
-
if (!((_b.sent()).toLowerCase().indexOf('from ') < 0)) return [3 /*break*/, 8];
|
|
126
|
+
_b.label = 3;
|
|
127
|
+
case 3:
|
|
128
|
+
_b.trys.push([3, 7, , 8]);
|
|
129
|
+
if (!!entity.options.sqlExpression) return [3 /*break*/, 6];
|
|
130
|
+
if (!(e.$entityName.toLowerCase().indexOf('from ') < 0)) return [3 /*break*/, 6];
|
|
85
131
|
return [4 /*yield*/, this.createIfNotExist(entity)];
|
|
86
|
-
case
|
|
132
|
+
case 4:
|
|
87
133
|
_b.sent();
|
|
88
134
|
return [4 /*yield*/, this.verifyAllColumns(entity)];
|
|
89
|
-
case
|
|
135
|
+
case 5:
|
|
90
136
|
_b.sent();
|
|
91
|
-
_b.label =
|
|
92
|
-
case
|
|
93
|
-
case
|
|
137
|
+
_b.label = 6;
|
|
138
|
+
case 6: return [3 /*break*/, 8];
|
|
139
|
+
case 7:
|
|
94
140
|
err_1 = _b.sent();
|
|
95
|
-
console.
|
|
96
|
-
return [3 /*break*/,
|
|
141
|
+
console.error("failed verify structure of " + e.$entityName + " ", err_1);
|
|
142
|
+
return [3 /*break*/, 8];
|
|
143
|
+
case 8:
|
|
144
|
+
entities_1_1 = entities_1.next();
|
|
145
|
+
return [3 /*break*/, 1];
|
|
146
|
+
case 9: return [3 /*break*/, 12];
|
|
97
147
|
case 10:
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
case
|
|
102
|
-
e_1_1 = _b.sent();
|
|
103
|
-
e_1 = { error: e_1_1 };
|
|
104
|
-
return [3 /*break*/, 14];
|
|
105
|
-
case 13:
|
|
148
|
+
e_2_1 = _b.sent();
|
|
149
|
+
e_2 = { error: e_2_1 };
|
|
150
|
+
return [3 /*break*/, 12];
|
|
151
|
+
case 11:
|
|
106
152
|
try {
|
|
107
|
-
if (
|
|
153
|
+
if (entities_1_1 && !entities_1_1.done && (_a = entities_1.return)) _a.call(entities_1);
|
|
108
154
|
}
|
|
109
|
-
finally { if (
|
|
155
|
+
finally { if (e_2) throw e_2.error; }
|
|
110
156
|
return [7 /*endfinally*/];
|
|
111
|
-
case
|
|
157
|
+
case 12: return [2 /*return*/];
|
|
112
158
|
}
|
|
113
159
|
});
|
|
114
160
|
});
|
|
@@ -121,12 +167,12 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
121
167
|
switch (_a.label) {
|
|
122
168
|
case 0:
|
|
123
169
|
c = this.pool.createCommand();
|
|
124
|
-
return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.
|
|
170
|
+
return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.dbNamesOf(entity)];
|
|
125
171
|
case 1:
|
|
126
172
|
e = _a.sent();
|
|
127
|
-
return [4 /*yield*/, c.execute("select 1 from information_Schema.tables where table_name=" + c.addParameterAndReturnSqlToken((e
|
|
173
|
+
return [4 /*yield*/, c.execute("select 1 from information_Schema.tables where table_name=" + c.addParameterAndReturnSqlToken((e.$entityName).toLowerCase()) + this.additionalWhere).then(function (r) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
128
174
|
var result, _a, _b, x, sql;
|
|
129
|
-
var
|
|
175
|
+
var e_3, _c;
|
|
130
176
|
return tslib_1.__generator(this, function (_d) {
|
|
131
177
|
switch (_d.label) {
|
|
132
178
|
case 0:
|
|
@@ -135,32 +181,32 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
135
181
|
try {
|
|
136
182
|
for (_a = tslib_1.__values(entity.fields), _b = _a.next(); !_b.done; _b = _a.next()) {
|
|
137
183
|
x = _b.value;
|
|
138
|
-
if (!
|
|
184
|
+
if (!filter_consumer_bridge_to_sql_request_1.isDbReadonly(x, e) || remult3_1.isAutoIncrement(x)) {
|
|
139
185
|
if (result.length != 0)
|
|
140
186
|
result += ',';
|
|
141
187
|
result += '\r\n ';
|
|
142
188
|
if (remult3_1.isAutoIncrement(x))
|
|
143
|
-
result += e
|
|
189
|
+
result += e.$dbNameOf(x) + ' serial';
|
|
144
190
|
else {
|
|
145
|
-
result += postgresColumnSyntax(x, e
|
|
146
|
-
if (x == entity.idMetadata.field)
|
|
147
|
-
result += ' primary key';
|
|
191
|
+
result += postgresColumnSyntax(x, e.$dbNameOf(x));
|
|
148
192
|
}
|
|
193
|
+
if (x == entity.idMetadata.field)
|
|
194
|
+
result += ' primary key';
|
|
149
195
|
}
|
|
150
196
|
}
|
|
151
197
|
}
|
|
152
|
-
catch (
|
|
198
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
153
199
|
finally {
|
|
154
200
|
try {
|
|
155
201
|
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
156
202
|
}
|
|
157
|
-
finally { if (
|
|
203
|
+
finally { if (e_3) throw e_3.error; }
|
|
158
204
|
}
|
|
159
|
-
sql = 'create table ' + e
|
|
160
|
-
|
|
205
|
+
sql = 'create table ' + e.$entityName + ' (' + result + '\r\n)';
|
|
206
|
+
if (PostgresSchemaBuilder.logToConsole)
|
|
207
|
+
console.info(sql);
|
|
161
208
|
return [4 /*yield*/, this.pool.execute(sql)];
|
|
162
209
|
case 1:
|
|
163
|
-
//console.log(sql);
|
|
164
210
|
_d.sent();
|
|
165
211
|
_d.label = 2;
|
|
166
212
|
case 2: return [2 /*return*/];
|
|
@@ -179,30 +225,30 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
179
225
|
var e, cmd, colName, sql, err_2;
|
|
180
226
|
return tslib_1.__generator(this, function (_a) {
|
|
181
227
|
switch (_a.label) {
|
|
182
|
-
case 0: return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.
|
|
228
|
+
case 0: return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.dbNamesOf(entity)];
|
|
183
229
|
case 1:
|
|
184
230
|
e = _a.sent();
|
|
185
|
-
if (
|
|
231
|
+
if (filter_consumer_bridge_to_sql_request_1.isDbReadonly(c(entity), e))
|
|
186
232
|
return [2 /*return*/];
|
|
187
233
|
_a.label = 2;
|
|
188
234
|
case 2:
|
|
189
235
|
_a.trys.push([2, 6, , 7]);
|
|
190
236
|
cmd = this.pool.createCommand();
|
|
191
|
-
colName = e
|
|
192
|
-
return [4 /*yield*/, cmd.execute("select 1 \n FROM information_schema.columns \n WHERE table_name=" + cmd.addParameterAndReturnSqlToken((e
|
|
237
|
+
colName = e.$dbNameOf(c(entity));
|
|
238
|
+
return [4 /*yield*/, cmd.execute("select 1 \n FROM information_schema.columns \n WHERE table_name=" + cmd.addParameterAndReturnSqlToken((e.$entityName).toLocaleLowerCase()) + " and column_name=" + cmd.addParameterAndReturnSqlToken((colName).toLocaleLowerCase()) + this.additionalWhere)];
|
|
193
239
|
case 3:
|
|
194
240
|
if (!((_a.sent()).rows.length == 0)) return [3 /*break*/, 5];
|
|
195
|
-
sql = "alter table " + e
|
|
196
|
-
|
|
241
|
+
sql = "alter table " + e.$entityName + " add column " + postgresColumnSyntax(c(entity), colName);
|
|
242
|
+
if (PostgresSchemaBuilder.logToConsole)
|
|
243
|
+
console.info(sql);
|
|
197
244
|
return [4 /*yield*/, this.pool.execute(sql)];
|
|
198
245
|
case 4:
|
|
199
|
-
//console.log(sql);
|
|
200
246
|
_a.sent();
|
|
201
247
|
_a.label = 5;
|
|
202
248
|
case 5: return [3 /*break*/, 7];
|
|
203
249
|
case 6:
|
|
204
250
|
err_2 = _a.sent();
|
|
205
|
-
console.
|
|
251
|
+
console.error(err_2);
|
|
206
252
|
return [3 /*break*/, 7];
|
|
207
253
|
case 7: return [2 /*return*/];
|
|
208
254
|
}
|
|
@@ -211,17 +257,17 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
211
257
|
};
|
|
212
258
|
PostgresSchemaBuilder.prototype.verifyAllColumns = function (entity) {
|
|
213
259
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
214
|
-
var cmd, e, cols, _a, _b, col, sql,
|
|
215
|
-
var
|
|
260
|
+
var cmd, e, cols, _a, _b, col, sql, e_4_1, err_3;
|
|
261
|
+
var e_4, _c;
|
|
216
262
|
return tslib_1.__generator(this, function (_d) {
|
|
217
263
|
switch (_d.label) {
|
|
218
264
|
case 0:
|
|
219
265
|
_d.trys.push([0, 11, , 12]);
|
|
220
266
|
cmd = this.pool.createCommand();
|
|
221
|
-
return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.
|
|
267
|
+
return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.dbNamesOf(entity)];
|
|
222
268
|
case 1:
|
|
223
269
|
e = _d.sent();
|
|
224
|
-
return [4 /*yield*/, cmd.execute("select column_name \n FROM information_schema.columns \n WHERE table_name=" + cmd.addParameterAndReturnSqlToken((e
|
|
270
|
+
return [4 /*yield*/, cmd.execute("select column_name \n FROM information_schema.columns \n WHERE table_name=" + cmd.addParameterAndReturnSqlToken((e.$entityName).toLocaleLowerCase()) + " " + this.additionalWhere)];
|
|
225
271
|
case 2:
|
|
226
272
|
cols = (_d.sent()).rows.map(function (x) { return x.column_name; });
|
|
227
273
|
_d.label = 3;
|
|
@@ -232,13 +278,13 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
232
278
|
case 4:
|
|
233
279
|
if (!!_b.done) return [3 /*break*/, 7];
|
|
234
280
|
col = _b.value;
|
|
235
|
-
if (!!
|
|
236
|
-
if (!!cols.includes(e
|
|
237
|
-
sql = "alter table " + e
|
|
238
|
-
|
|
281
|
+
if (!!filter_consumer_bridge_to_sql_request_1.isDbReadonly(col, e)) return [3 /*break*/, 6];
|
|
282
|
+
if (!!cols.includes(e.$dbNameOf(col).toLocaleLowerCase())) return [3 /*break*/, 6];
|
|
283
|
+
sql = "alter table " + e.$entityName + " add column " + postgresColumnSyntax(col, e.$dbNameOf(col));
|
|
284
|
+
if (PostgresSchemaBuilder.logToConsole)
|
|
285
|
+
console.info(sql);
|
|
239
286
|
return [4 /*yield*/, this.pool.execute(sql)];
|
|
240
287
|
case 5:
|
|
241
|
-
//console.log(sql);
|
|
242
288
|
_d.sent();
|
|
243
289
|
_d.label = 6;
|
|
244
290
|
case 6:
|
|
@@ -246,25 +292,27 @@ var PostgresSchemaBuilder = /** @class */ (function () {
|
|
|
246
292
|
return [3 /*break*/, 4];
|
|
247
293
|
case 7: return [3 /*break*/, 10];
|
|
248
294
|
case 8:
|
|
249
|
-
|
|
250
|
-
|
|
295
|
+
e_4_1 = _d.sent();
|
|
296
|
+
e_4 = { error: e_4_1 };
|
|
251
297
|
return [3 /*break*/, 10];
|
|
252
298
|
case 9:
|
|
253
299
|
try {
|
|
254
300
|
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
255
301
|
}
|
|
256
|
-
finally { if (
|
|
302
|
+
finally { if (e_4) throw e_4.error; }
|
|
257
303
|
return [7 /*endfinally*/];
|
|
258
304
|
case 10: return [3 /*break*/, 12];
|
|
259
305
|
case 11:
|
|
260
306
|
err_3 = _d.sent();
|
|
261
|
-
console.
|
|
307
|
+
console.error(err_3);
|
|
262
308
|
return [3 /*break*/, 12];
|
|
263
309
|
case 12: return [2 /*return*/];
|
|
264
310
|
}
|
|
265
311
|
});
|
|
266
312
|
});
|
|
267
313
|
};
|
|
314
|
+
//@internal
|
|
315
|
+
PostgresSchemaBuilder.logToConsole = true;
|
|
268
316
|
return PostgresSchemaBuilder;
|
|
269
317
|
}());
|
|
270
318
|
exports.PostgresSchemaBuilder = PostgresSchemaBuilder;
|
package/remult-express.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.remultExpress = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
-
var express = require("express");
|
|
5
|
+
var express = tslib_1.__importStar(require("express"));
|
|
6
6
|
var index_1 = require("./server/index");
|
|
7
7
|
function remultExpress(options) {
|
|
8
8
|
var app = express.Router();
|
package/remult-knex/index.d.ts
CHANGED
|
@@ -1,46 +1,24 @@
|
|
|
1
|
-
import { Knex } from 'knex';
|
|
2
|
-
import { Filter, FilterConsumer } from "../src/filter/filter-interfaces";
|
|
3
|
-
import { dbNameProvider } from "../src/filter/filter-consumer-bridge-to-sql-request";
|
|
1
|
+
import type { Knex } from 'knex';
|
|
4
2
|
import { Remult } from "../src/context";
|
|
5
|
-
import { EntityFilter, EntityMetadata } from "../src/remult3";
|
|
3
|
+
import { EntityFilter, EntityMetadata, RepositoryOverloads } from "../src/remult3";
|
|
6
4
|
import { DataProvider, EntityDataProvider } from '../src/data-interfaces';
|
|
7
5
|
import { FieldMetadata } from '../src/column-interfaces';
|
|
8
6
|
export declare class KnexDataProvider implements DataProvider {
|
|
9
7
|
knex: Knex;
|
|
10
8
|
constructor(knex: Knex);
|
|
9
|
+
static getDb(remult?: Remult): Knex<any, any[]>;
|
|
11
10
|
getEntityDataProvider(entity: EntityMetadata<any>): EntityDataProvider;
|
|
12
11
|
transaction(action: (dataProvider: DataProvider) => Promise<void>): Promise<void>;
|
|
13
|
-
static
|
|
14
|
-
|
|
12
|
+
static rawFilter(build: CustomKnexFilterBuilderFunction): EntityFilter<any>;
|
|
13
|
+
static filterToRaw<entityType>(entity: RepositoryOverloads<entityType>, condition: EntityFilter<entityType>): Promise<(knex: any) => void>;
|
|
14
|
+
supportsRawFilter?: boolean;
|
|
15
|
+
ensureSchema(entities: EntityMetadata<any>[]): Promise<void>;
|
|
15
16
|
}
|
|
16
17
|
export declare type CustomKnexFilterBuilderFunction = () => Promise<(builder: Knex.QueryBuilder) => void>;
|
|
17
|
-
export declare class FilterConsumerBridgeToKnexRequest implements FilterConsumer {
|
|
18
|
-
private nameProvider;
|
|
19
|
-
_addWhere: boolean;
|
|
20
|
-
promises: Promise<void>[];
|
|
21
|
-
result: ((builder: Knex.QueryBuilder) => void)[];
|
|
22
|
-
resolveWhere(): Promise<((builder: Knex.QueryBuilder<any, any>) => void)[]>;
|
|
23
|
-
constructor(nameProvider: dbNameProvider);
|
|
24
|
-
custom(key: string, customItem: any): void;
|
|
25
|
-
or(orElements: Filter[]): void;
|
|
26
|
-
isNull(col: FieldMetadata): void;
|
|
27
|
-
isNotNull(col: FieldMetadata): void;
|
|
28
|
-
isIn(col: FieldMetadata, val: any[]): void;
|
|
29
|
-
isEqualTo(col: FieldMetadata, val: any): void;
|
|
30
|
-
isDifferentFrom(col: FieldMetadata, val: any): void;
|
|
31
|
-
isGreaterOrEqualTo(col: FieldMetadata, val: any): void;
|
|
32
|
-
isGreaterThan(col: FieldMetadata, val: any): void;
|
|
33
|
-
isLessOrEqualTo(col: FieldMetadata, val: any): void;
|
|
34
|
-
isLessThan(col: FieldMetadata, val: any): void;
|
|
35
|
-
containsCaseInsensitive(col: FieldMetadata, val: any): void;
|
|
36
|
-
private add;
|
|
37
|
-
databaseCustom(databaseCustom: {
|
|
38
|
-
buildKnex: CustomKnexFilterBuilderFunction;
|
|
39
|
-
}): void;
|
|
40
|
-
}
|
|
41
18
|
export declare class KnexSchemaBuilder {
|
|
42
19
|
private knex;
|
|
43
|
-
verifyStructureOfAllEntities(remult
|
|
20
|
+
verifyStructureOfAllEntities(remult?: Remult): Promise<void>;
|
|
21
|
+
ensureSchema(entities: EntityMetadata<any>[]): Promise<void>;
|
|
44
22
|
createIfNotExist(entity: EntityMetadata): Promise<void>;
|
|
45
23
|
addColumnIfNotExist<T extends EntityMetadata>(entity: T, c: ((e: T) => FieldMetadata)): Promise<void>;
|
|
46
24
|
verifyAllColumns<T extends EntityMetadata>(entity: T): Promise<void>;
|
|
@@ -48,4 +26,4 @@ export declare class KnexSchemaBuilder {
|
|
|
48
26
|
constructor(knex: Knex);
|
|
49
27
|
}
|
|
50
28
|
export declare function buildColumn(x: FieldMetadata, dbName: string, b: Knex.CreateTableBuilder): void;
|
|
51
|
-
export declare function createKnexDataProvider(config: Knex.Config
|
|
29
|
+
export declare function createKnexDataProvider(config: Knex.Config): Promise<KnexDataProvider>;
|