remult 0.10.13 → 0.11.3

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.10.13",
3
+ "version": "0.11.3",
4
4
  "description": "remult core lib",
5
5
  "homepage": "https://remult.dev/",
6
6
  "repository": {
@@ -22,9 +22,9 @@ export declare function verifyStructureOfAllEntities(db: SqlDatabase, remult: Re
22
22
  export declare class PostgresSchemaBuilder {
23
23
  private pool;
24
24
  verifyStructureOfAllEntities(remult: Remult): Promise<void>;
25
- createIfNotExist(e: EntityMetadata): Promise<void>;
26
- addColumnIfNotExist<T extends EntityMetadata>(e: T, c: ((e: T) => FieldMetadata)): Promise<void>;
27
- verifyAllColumns<T extends EntityMetadata>(e: T): Promise<void>;
25
+ createIfNotExist(entity: EntityMetadata): Promise<void>;
26
+ addColumnIfNotExist<T extends EntityMetadata>(entity: T, c: ((e: T) => FieldMetadata)): Promise<void>;
27
+ verifyAllColumns<T extends EntityMetadata>(entity: T): Promise<void>;
28
28
  additionalWhere: string;
29
29
  constructor(pool: SqlDatabase, schema?: string);
30
30
  }
@@ -5,8 +5,8 @@ var tslib_1 = require("tslib");
5
5
  var __1 = require("../");
6
6
  var pg_1 = require("pg");
7
7
  var context_1 = require("../src/context");
8
- var sql_database_1 = require("../src/data-providers/sql-database");
9
8
  var postgresColumnSyntax_1 = require("./postgresColumnSyntax");
9
+ var filter_consumer_bridge_to_sql_request_1 = require("../src/filter/filter-consumer-bridge-to-sql-request");
10
10
  var PostgresDataProvider = /** @class */ (function () {
11
11
  function PostgresDataProvider(pool) {
12
12
  this.pool = pool;
@@ -113,55 +113,54 @@ var PostgresSchemaBuilder = /** @class */ (function () {
113
113
  }
114
114
  PostgresSchemaBuilder.prototype.verifyStructureOfAllEntities = function (remult) {
115
115
  return tslib_1.__awaiter(this, void 0, void 0, function () {
116
- var allEntities_1, allEntities_1_1, entity, metadata, err_2, _a, _b, _c, e_1_1;
117
- var e_1, _d;
118
- return tslib_1.__generator(this, function (_e) {
119
- switch (_e.label) {
116
+ var allEntities_1, allEntities_1_1, entityClass, entity, e, err_2, e_1_1;
117
+ var e_1, _a;
118
+ return tslib_1.__generator(this, function (_b) {
119
+ switch (_b.label) {
120
120
  case 0:
121
121
  console.log("start verify structure");
122
- _e.label = 1;
122
+ _b.label = 1;
123
123
  case 1:
124
- _e.trys.push([1, 12, 13, 14]);
124
+ _b.trys.push([1, 12, 13, 14]);
125
125
  allEntities_1 = tslib_1.__values(context_1.allEntities), allEntities_1_1 = allEntities_1.next();
126
- _e.label = 2;
126
+ _b.label = 2;
127
127
  case 2:
128
128
  if (!!allEntities_1_1.done) return [3 /*break*/, 11];
129
- entity = allEntities_1_1.value;
130
- metadata = remult.repo(entity).metadata;
131
- _e.label = 3;
129
+ entityClass = allEntities_1_1.value;
130
+ entity = remult.repo(entityClass).metadata;
131
+ return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.getDbNameProvider(entity)];
132
132
  case 3:
133
- _e.trys.push([3, 8, , 10]);
134
- if (!!metadata.options.sqlExpression) return [3 /*break*/, 7];
135
- return [4 /*yield*/, metadata.getDbName()];
133
+ e = _b.sent();
134
+ _b.label = 4;
136
135
  case 4:
137
- if (!((_e.sent()).toLowerCase().indexOf('from ') < 0)) return [3 /*break*/, 7];
138
- return [4 /*yield*/, this.createIfNotExist(metadata)];
136
+ _b.trys.push([4, 9, , 10]);
137
+ if (!!entity.options.sqlExpression) return [3 /*break*/, 8];
138
+ return [4 /*yield*/, e.entityName];
139
139
  case 5:
140
- _e.sent();
141
- return [4 /*yield*/, this.verifyAllColumns(metadata)];
140
+ if (!((_b.sent()).toLowerCase().indexOf('from ') < 0)) return [3 /*break*/, 8];
141
+ return [4 /*yield*/, this.createIfNotExist(entity)];
142
142
  case 6:
143
- _e.sent();
144
- _e.label = 7;
145
- case 7: return [3 /*break*/, 10];
146
- case 8:
147
- err_2 = _e.sent();
148
- _b = (_a = console).log;
149
- _c = "failed verify structore of ";
150
- return [4 /*yield*/, metadata.getDbName()];
143
+ _b.sent();
144
+ return [4 /*yield*/, this.verifyAllColumns(entity)];
145
+ case 7:
146
+ _b.sent();
147
+ _b.label = 8;
148
+ case 8: return [3 /*break*/, 10];
151
149
  case 9:
152
- _b.apply(_a, [_c + (_e.sent()) + " ", err_2]);
150
+ err_2 = _b.sent();
151
+ console.log("failed verify structure of " + e.entityName + " ", err_2);
153
152
  return [3 /*break*/, 10];
154
153
  case 10:
155
154
  allEntities_1_1 = allEntities_1.next();
156
155
  return [3 /*break*/, 2];
157
156
  case 11: return [3 /*break*/, 14];
158
157
  case 12:
159
- e_1_1 = _e.sent();
158
+ e_1_1 = _b.sent();
160
159
  e_1 = { error: e_1_1 };
161
160
  return [3 /*break*/, 14];
162
161
  case 13:
163
162
  try {
164
- if (allEntities_1_1 && !allEntities_1_1.done && (_d = allEntities_1.return)) _d.call(allEntities_1);
163
+ if (allEntities_1_1 && !allEntities_1_1.done && (_a = allEntities_1.return)) _a.call(allEntities_1);
165
164
  }
166
165
  finally { if (e_1) throw e_1.error; }
167
166
  return [7 /*endfinally*/];
@@ -170,207 +169,154 @@ var PostgresSchemaBuilder = /** @class */ (function () {
170
169
  });
171
170
  });
172
171
  };
173
- PostgresSchemaBuilder.prototype.createIfNotExist = function (e) {
172
+ PostgresSchemaBuilder.prototype.createIfNotExist = function (entity) {
174
173
  return tslib_1.__awaiter(this, void 0, void 0, function () {
175
- var c, _a, _b, _c, _d, _e;
174
+ var c, e;
176
175
  var _this = this;
177
- return tslib_1.__generator(this, function (_f) {
178
- switch (_f.label) {
176
+ return tslib_1.__generator(this, function (_a) {
177
+ switch (_a.label) {
179
178
  case 0:
180
179
  c = this.pool.createCommand();
181
- _b = (_a = c).execute;
182
- _c = "select 1 from information_Schema.tables where table_name=";
183
- _e = (_d = c).addParameterAndReturnSqlToken;
184
- return [4 /*yield*/, e.getDbName()];
185
- case 1: return [4 /*yield*/, _b.apply(_a, [_c + _e.apply(_d, [(_f.sent()).toLowerCase()]) + this.additionalWhere]).then(function (r) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
186
- var result, _a, _b, x, _c, _d, _e, _f, e_2_1, sql, _g;
187
- var e_2, _h;
188
- return tslib_1.__generator(this, function (_j) {
189
- switch (_j.label) {
190
- case 0:
191
- if (!(r.rows.length == 0)) return [3 /*break*/, 14];
192
- result = '';
193
- _j.label = 1;
194
- case 1:
195
- _j.trys.push([1, 9, 10, 11]);
196
- _a = tslib_1.__values(e.fields), _b = _a.next();
197
- _j.label = 2;
198
- case 2:
199
- if (!!_b.done) return [3 /*break*/, 8];
200
- x = _b.value;
201
- return [4 /*yield*/, sql_database_1.isDbReadonly(x)];
202
- case 3:
203
- if (!(!(_j.sent()) || x == e.idMetadata.field && e.options.dbAutoIncrementId)) return [3 /*break*/, 7];
204
- if (result.length != 0)
205
- result += ',';
206
- result += '\r\n ';
207
- if (!(x == e.idMetadata.field && e.options.dbAutoIncrementId)) return [3 /*break*/, 5];
208
- _c = result;
209
- return [4 /*yield*/, x.getDbName()];
210
- case 4:
211
- result = _c + ((_j.sent()) + ' serial');
212
- return [3 /*break*/, 7];
213
- case 5:
214
- _d = result;
215
- _e = postgresColumnSyntax_1.postgresColumnSyntax;
216
- _f = [x];
217
- return [4 /*yield*/, x.getDbName()];
218
- case 6:
219
- result = _d + _e.apply(void 0, _f.concat([_j.sent()]));
220
- if (x == e.idMetadata.field)
221
- result += ' primary key';
222
- _j.label = 7;
223
- case 7:
224
- _b = _a.next();
225
- return [3 /*break*/, 2];
226
- case 8: return [3 /*break*/, 11];
227
- case 9:
228
- e_2_1 = _j.sent();
229
- e_2 = { error: e_2_1 };
230
- return [3 /*break*/, 11];
231
- case 10:
232
- try {
233
- if (_b && !_b.done && (_h = _a.return)) _h.call(_a);
234
- }
235
- finally { if (e_2) throw e_2.error; }
236
- return [7 /*endfinally*/];
237
- case 11:
238
- _g = 'create table ';
239
- return [4 /*yield*/, e.getDbName()];
240
- case 12:
241
- sql = _g + (_j.sent()) + ' (' + result + '\r\n)';
242
- //console.log(sql);
243
- return [4 /*yield*/, this.pool.execute(sql)];
244
- case 13:
245
- //console.log(sql);
246
- _j.sent();
247
- _j.label = 14;
248
- case 14: return [2 /*return*/];
249
- }
250
- });
251
- }); })];
180
+ return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.getDbNameProvider(entity)];
181
+ case 1:
182
+ e = _a.sent();
183
+ 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 () {
184
+ var result, _a, _b, x, sql;
185
+ var e_2, _c;
186
+ return tslib_1.__generator(this, function (_d) {
187
+ switch (_d.label) {
188
+ case 0:
189
+ if (!(r.rows.length == 0)) return [3 /*break*/, 2];
190
+ result = '';
191
+ try {
192
+ for (_a = tslib_1.__values(entity.fields), _b = _a.next(); !_b.done; _b = _a.next()) {
193
+ x = _b.value;
194
+ if (!e.isDbReadonly(x) || x == entity.idMetadata.field && entity.options.dbAutoIncrementId) {
195
+ if (result.length != 0)
196
+ result += ',';
197
+ result += '\r\n ';
198
+ if (x == entity.idMetadata.field && entity.options.dbAutoIncrementId)
199
+ result += e.nameOf(x) + ' serial';
200
+ else {
201
+ result += postgresColumnSyntax_1.postgresColumnSyntax(x, e.nameOf(x));
202
+ if (x == entity.idMetadata.field)
203
+ result += ' primary key';
204
+ }
205
+ }
206
+ }
207
+ }
208
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
209
+ finally {
210
+ try {
211
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
212
+ }
213
+ finally { if (e_2) throw e_2.error; }
214
+ }
215
+ sql = 'create table ' + e.entityName + ' (' + result + '\r\n)';
216
+ //console.log(sql);
217
+ return [4 /*yield*/, this.pool.execute(sql)];
218
+ case 1:
219
+ //console.log(sql);
220
+ _d.sent();
221
+ _d.label = 2;
222
+ case 2: return [2 /*return*/];
223
+ }
224
+ });
225
+ }); })];
252
226
  case 2:
253
- _f.sent();
227
+ _a.sent();
254
228
  return [2 /*return*/];
255
229
  }
256
230
  });
257
231
  });
258
232
  };
259
- PostgresSchemaBuilder.prototype.addColumnIfNotExist = function (e, c) {
233
+ PostgresSchemaBuilder.prototype.addColumnIfNotExist = function (entity, c) {
260
234
  return tslib_1.__awaiter(this, void 0, void 0, function () {
261
- var cmd, _a, _b, _c, _d, _e, _f, _g, _h, sql, _j, _k, _l, _m, err_3;
262
- return tslib_1.__generator(this, function (_o) {
263
- switch (_o.label) {
264
- case 0: return [4 /*yield*/, sql_database_1.isDbReadonly(c(e))];
235
+ var e, cmd, colName, sql, err_3;
236
+ return tslib_1.__generator(this, function (_a) {
237
+ switch (_a.label) {
238
+ case 0: return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.getDbNameProvider(entity)];
265
239
  case 1:
266
- if (_o.sent())
240
+ e = _a.sent();
241
+ if (e.isDbReadonly(c(entity)))
267
242
  return [2 /*return*/];
268
- _o.label = 2;
243
+ _a.label = 2;
269
244
  case 2:
270
- _o.trys.push([2, 10, , 11]);
245
+ _a.trys.push([2, 6, , 7]);
271
246
  cmd = this.pool.createCommand();
272
- _b = (_a = cmd).execute;
273
- _c = "select 1 \n FROM information_schema.columns \n WHERE table_name=";
274
- _e = (_d = cmd).addParameterAndReturnSqlToken;
275
- return [4 /*yield*/, e.getDbName()];
247
+ colName = e.nameOf(c(entity));
248
+ 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)];
276
249
  case 3:
277
- _f = _c + _e.apply(_d, [(_o.sent()).toLocaleLowerCase()]) + " and column_name=";
278
- _h = (_g = cmd).addParameterAndReturnSqlToken;
279
- return [4 /*yield*/, c(e).getDbName()];
280
- case 4: return [4 /*yield*/, _b.apply(_a, [_f + _h.apply(_g, [(_o.sent()).toLocaleLowerCase()]) + this.additionalWhere])];
281
- case 5:
282
- if (!((_o.sent()).rows.length == 0)) return [3 /*break*/, 9];
283
- _j = "alter table ";
284
- return [4 /*yield*/, e.getDbName()];
285
- case 6:
286
- _k = _j + (_o.sent()) + " add column ";
287
- _l = postgresColumnSyntax_1.postgresColumnSyntax;
288
- _m = [c(e)];
289
- return [4 /*yield*/, c(e).getDbName()];
290
- case 7:
291
- sql = _k + _l.apply(void 0, _m.concat([_o.sent()]));
250
+ if (!((_a.sent()).rows.length == 0)) return [3 /*break*/, 5];
251
+ sql = "alter table " + e.entityName + " add column " + postgresColumnSyntax_1.postgresColumnSyntax(c(entity), colName);
292
252
  //console.log(sql);
293
253
  return [4 /*yield*/, this.pool.execute(sql)];
294
- case 8:
254
+ case 4:
295
255
  //console.log(sql);
296
- _o.sent();
297
- _o.label = 9;
298
- case 9: return [3 /*break*/, 11];
299
- case 10:
300
- err_3 = _o.sent();
256
+ _a.sent();
257
+ _a.label = 5;
258
+ case 5: return [3 /*break*/, 7];
259
+ case 6:
260
+ err_3 = _a.sent();
301
261
  console.log(err_3);
302
- return [3 /*break*/, 11];
303
- case 11: return [2 /*return*/];
262
+ return [3 /*break*/, 7];
263
+ case 7: return [2 /*return*/];
304
264
  }
305
265
  });
306
266
  });
307
267
  };
308
- PostgresSchemaBuilder.prototype.verifyAllColumns = function (e) {
268
+ PostgresSchemaBuilder.prototype.verifyAllColumns = function (entity) {
309
269
  return tslib_1.__awaiter(this, void 0, void 0, function () {
310
- var cmd, cols, _a, _b, _c, _d, _e, _f, _g, col, _h, _j, sql, _k, _l, _m, _o, e_3_1, err_4;
311
- var e_3, _p;
312
- return tslib_1.__generator(this, function (_q) {
313
- switch (_q.label) {
270
+ var cmd, e, cols, _a, _b, col, sql, e_3_1, err_4;
271
+ var e_3, _c;
272
+ return tslib_1.__generator(this, function (_d) {
273
+ switch (_d.label) {
314
274
  case 0:
315
- _q.trys.push([0, 15, , 16]);
275
+ _d.trys.push([0, 11, , 12]);
316
276
  cmd = this.pool.createCommand();
317
- _b = (_a = cmd).execute;
318
- _c = "select column_name \n FROM information_schema.columns \n WHERE table_name=";
319
- _e = (_d = cmd).addParameterAndReturnSqlToken;
320
- return [4 /*yield*/, e.getDbName()];
321
- case 1: return [4 /*yield*/, _b.apply(_a, [_c + _e.apply(_d, [(_q.sent()).toLocaleLowerCase()]) + " " + this.additionalWhere])];
277
+ return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.getDbNameProvider(entity)];
278
+ case 1:
279
+ e = _d.sent();
280
+ return [4 /*yield*/, cmd.execute("select column_name \n FROM information_schema.columns \n WHERE table_name=" + cmd.addParameterAndReturnSqlToken((e.entityName).toLocaleLowerCase()) + " " + this.additionalWhere)];
322
281
  case 2:
323
- cols = (_q.sent()).rows.map(function (x) { return x.column_name; });
324
- _q.label = 3;
282
+ cols = (_d.sent()).rows.map(function (x) { return x.column_name; });
283
+ _d.label = 3;
325
284
  case 3:
326
- _q.trys.push([3, 12, 13, 14]);
327
- _f = tslib_1.__values(e.fields), _g = _f.next();
328
- _q.label = 4;
285
+ _d.trys.push([3, 8, 9, 10]);
286
+ _a = tslib_1.__values(entity.fields), _b = _a.next();
287
+ _d.label = 4;
329
288
  case 4:
330
- if (!!_g.done) return [3 /*break*/, 11];
331
- col = _g.value;
332
- return [4 /*yield*/, sql_database_1.isDbReadonly(col)];
333
- case 5:
334
- if (!!(_q.sent())) return [3 /*break*/, 10];
335
- _j = (_h = cols).includes;
336
- return [4 /*yield*/, col.getDbName()];
337
- case 6:
338
- if (!!_j.apply(_h, [(_q.sent()).toLocaleLowerCase()])) return [3 /*break*/, 10];
339
- _k = "alter table ";
340
- return [4 /*yield*/, e.getDbName()];
341
- case 7:
342
- _l = _k + (_q.sent()) + " add column ";
343
- _m = postgresColumnSyntax_1.postgresColumnSyntax;
344
- _o = [col];
345
- return [4 /*yield*/, col.getDbName()];
346
- case 8:
347
- sql = _l + _m.apply(void 0, _o.concat([_q.sent()]));
289
+ if (!!_b.done) return [3 /*break*/, 7];
290
+ col = _b.value;
291
+ if (!!e.isDbReadonly(col)) return [3 /*break*/, 6];
292
+ if (!!cols.includes(e.nameOf(col).toLocaleLowerCase())) return [3 /*break*/, 6];
293
+ sql = "alter table " + e.entityName + " add column " + postgresColumnSyntax_1.postgresColumnSyntax(col, e.nameOf(col));
348
294
  //console.log(sql);
349
295
  return [4 /*yield*/, this.pool.execute(sql)];
350
- case 9:
296
+ case 5:
351
297
  //console.log(sql);
352
- _q.sent();
353
- _q.label = 10;
354
- case 10:
355
- _g = _f.next();
298
+ _d.sent();
299
+ _d.label = 6;
300
+ case 6:
301
+ _b = _a.next();
356
302
  return [3 /*break*/, 4];
357
- case 11: return [3 /*break*/, 14];
358
- case 12:
359
- e_3_1 = _q.sent();
303
+ case 7: return [3 /*break*/, 10];
304
+ case 8:
305
+ e_3_1 = _d.sent();
360
306
  e_3 = { error: e_3_1 };
361
- return [3 /*break*/, 14];
362
- case 13:
307
+ return [3 /*break*/, 10];
308
+ case 9:
363
309
  try {
364
- if (_g && !_g.done && (_p = _f.return)) _p.call(_f);
310
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
365
311
  }
366
312
  finally { if (e_3) throw e_3.error; }
367
313
  return [7 /*endfinally*/];
368
- case 14: return [3 /*break*/, 16];
369
- case 15:
370
- err_4 = _q.sent();
314
+ case 10: return [3 /*break*/, 12];
315
+ case 11:
316
+ err_4 = _d.sent();
371
317
  console.log(err_4);
372
- return [3 /*break*/, 16];
373
- case 16: return [2 /*return*/];
318
+ return [3 /*break*/, 12];
319
+ case 12: return [2 /*return*/];
374
320
  }
375
321
  });
376
322
  });
@@ -1,7 +1,7 @@
1
1
  import { DataProvider, EntityDataProvider, EntityMetadata, FieldMetadata, Filter, Remult } from "..";
2
2
  import { Knex } from 'knex';
3
3
  import { FilterConsumer } from "../src/filter/filter-interfaces";
4
- import { CustomSqlFilterObject } from "../src/filter/filter-consumer-bridge-to-sql-request";
4
+ import { CustomSqlFilterObject, dbNameProvider } from "../src/filter/filter-consumer-bridge-to-sql-request";
5
5
  export declare class KnexDataProvider implements DataProvider {
6
6
  knex: Knex;
7
7
  constructor(knex: Knex);
@@ -10,11 +10,12 @@ export declare class KnexDataProvider implements DataProvider {
10
10
  supportsCustomFilter?: boolean;
11
11
  }
12
12
  export declare class FilterConsumerBridgeToKnexRequest implements FilterConsumer {
13
+ private nameProvider;
13
14
  _addWhere: boolean;
14
15
  promises: Promise<void>[];
15
16
  result: ((builder: Knex.QueryBuilder) => void)[];
16
17
  resolveWhere(): Promise<((builder: Knex.QueryBuilder<any, any>) => void)[]>;
17
- constructor();
18
+ constructor(nameProvider: dbNameProvider);
18
19
  custom(key: string, customItem: any): void;
19
20
  or(orElements: Filter[]): void;
20
21
  isNull(col: FieldMetadata): void;
@@ -33,9 +34,9 @@ export declare class FilterConsumerBridgeToKnexRequest implements FilterConsumer
33
34
  export declare class KnexSchemaBuilder {
34
35
  private knex;
35
36
  verifyStructureOfAllEntities(remult: Remult): Promise<void>;
36
- createIfNotExist(e: EntityMetadata): Promise<void>;
37
- addColumnIfNotExist<T extends EntityMetadata>(e: T, c: ((e: T) => FieldMetadata)): Promise<void>;
38
- verifyAllColumns<T extends EntityMetadata>(e: T): Promise<void>;
37
+ createIfNotExist(entity: EntityMetadata): Promise<void>;
38
+ addColumnIfNotExist<T extends EntityMetadata>(entity: T, c: ((e: T) => FieldMetadata)): Promise<void>;
39
+ verifyAllColumns<T extends EntityMetadata>(entity: T): Promise<void>;
39
40
  additionalWhere: string;
40
41
  constructor(knex: Knex);
41
42
  }