@node-c/persistance-rdb 1.0.0-alpha5 → 1.0.0-alpha50

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 (67) hide show
  1. package/README.md +1 -1
  2. package/dist/common/definitions/common.constants.d.ts +4 -0
  3. package/dist/common/definitions/common.constants.js +4 -0
  4. package/dist/common/definitions/common.constants.js.map +1 -1
  5. package/dist/{entityService → entity}/index.d.ts +2 -1
  6. package/dist/{entityService → entity}/index.js +2 -1
  7. package/dist/entity/index.js.map +1 -0
  8. package/dist/entity/rdb.entity.schema.d.ts +18 -0
  9. package/dist/{module/rdb.module.definitions.js → entity/rdb.entity.schema.js} +1 -1
  10. package/dist/entity/rdb.entity.schema.js.map +1 -0
  11. package/dist/entity/rdb.entity.service.d.ts +42 -0
  12. package/dist/entity/rdb.entity.service.definitions.d.ts +36 -0
  13. package/dist/entity/rdb.entity.service.definitions.js.map +1 -0
  14. package/dist/entity/rdb.entity.service.js +521 -0
  15. package/dist/entity/rdb.entity.service.js.map +1 -0
  16. package/dist/index.d.ts +2 -2
  17. package/dist/index.js +2 -2
  18. package/dist/index.js.map +1 -1
  19. package/dist/ormQueryBuilder/index.d.ts +1 -0
  20. package/dist/{module → ormQueryBuilder}/index.js +1 -2
  21. package/dist/ormQueryBuilder/index.js.map +1 -0
  22. package/dist/ormQueryBuilder/rdb.ormQueryBuilder.d.ts +38 -0
  23. package/dist/ormQueryBuilder/rdb.ormQueryBuilder.js +16 -0
  24. package/dist/ormQueryBuilder/rdb.ormQueryBuilder.js.map +1 -0
  25. package/dist/repository/index.d.ts +1 -2
  26. package/dist/repository/index.js +1 -2
  27. package/dist/repository/index.js.map +1 -1
  28. package/dist/repository/rdb.repository.d.ts +33 -6
  29. package/dist/repository/rdb.repository.js +6 -27
  30. package/dist/repository/rdb.repository.js.map +1 -1
  31. package/dist/sqlQueryBuilder/index.d.ts +3 -3
  32. package/dist/sqlQueryBuilder/index.js +3 -3
  33. package/dist/sqlQueryBuilder/index.js.map +1 -1
  34. package/dist/sqlQueryBuilder/{sqlQueryBuilder.definitions.d.ts → rdb.sqlQueryBuilder.definitions.d.ts} +7 -9
  35. package/dist/{repository/rdb.repository.definitions.js → sqlQueryBuilder/rdb.sqlQueryBuilder.definitions.js} +1 -1
  36. package/dist/sqlQueryBuilder/rdb.sqlQueryBuilder.definitions.js.map +1 -0
  37. package/dist/sqlQueryBuilder/{sqlQueryBuilder.module.d.ts → rdb.sqlQueryBuilder.module.d.ts} +1 -1
  38. package/dist/sqlQueryBuilder/{sqlQueryBuilder.module.js → rdb.sqlQueryBuilder.module.js} +9 -4
  39. package/dist/sqlQueryBuilder/rdb.sqlQueryBuilder.module.js.map +1 -0
  40. package/dist/sqlQueryBuilder/rdb.sqlQueryBuilder.service.d.ts +53 -0
  41. package/dist/sqlQueryBuilder/{sqlQueryBuilder.service.js → rdb.sqlQueryBuilder.service.js} +97 -39
  42. package/dist/sqlQueryBuilder/rdb.sqlQueryBuilder.service.js.map +1 -0
  43. package/package.json +8 -5
  44. package/dist/entityService/index.js.map +0 -1
  45. package/dist/entityService/rdb.entity.service.d.ts +0 -34
  46. package/dist/entityService/rdb.entity.service.definitions.d.ts +0 -21
  47. package/dist/entityService/rdb.entity.service.definitions.js.map +0 -1
  48. package/dist/entityService/rdb.entity.service.js +0 -304
  49. package/dist/entityService/rdb.entity.service.js.map +0 -1
  50. package/dist/module/index.d.ts +0 -2
  51. package/dist/module/index.js.map +0 -1
  52. package/dist/module/rdb.module.d.ts +0 -5
  53. package/dist/module/rdb.module.definitions.d.ts +0 -15
  54. package/dist/module/rdb.module.definitions.js.map +0 -1
  55. package/dist/module/rdb.module.js +0 -45
  56. package/dist/module/rdb.module.js.map +0 -1
  57. package/dist/repository/rdb.repository.definitions.d.ts +0 -5
  58. package/dist/repository/rdb.repository.definitions.js.map +0 -1
  59. package/dist/repository/rdb.repository.module.d.ts +0 -6
  60. package/dist/repository/rdb.repository.module.js +0 -42
  61. package/dist/repository/rdb.repository.module.js.map +0 -1
  62. package/dist/sqlQueryBuilder/sqlQueryBuilder.definitions.js +0 -3
  63. package/dist/sqlQueryBuilder/sqlQueryBuilder.definitions.js.map +0 -1
  64. package/dist/sqlQueryBuilder/sqlQueryBuilder.module.js.map +0 -1
  65. package/dist/sqlQueryBuilder/sqlQueryBuilder.service.d.ts +0 -43
  66. package/dist/sqlQueryBuilder/sqlQueryBuilder.service.js.map +0 -1
  67. /package/dist/{entityService → entity}/rdb.entity.service.definitions.js +0 -0
@@ -0,0 +1,521 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __rest = (this && this.__rest) || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
+ t[p] = s[p];
15
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
+ t[p[i]] = s[p[i]];
19
+ }
20
+ return t;
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.RDBEntityService = void 0;
24
+ const core_1 = require("@node-c/core");
25
+ const rdb_entity_service_definitions_1 = require("./rdb.entity.service.definitions");
26
+ class RDBEntityService extends core_1.PersistanceEntityService {
27
+ constructor(configProvider, qb, repository, schema) {
28
+ super(configProvider, qb.persistanceModuleName);
29
+ this.configProvider = configProvider;
30
+ this.qb = qb;
31
+ this.repository = repository;
32
+ this.schema = schema;
33
+ const { columns } = schema.options;
34
+ const primaryKeys = [];
35
+ let deletedColumnName;
36
+ this.columnAliases = {};
37
+ this.columNames = [];
38
+ for (const columnName in columns) {
39
+ const { deleteDate, name, primary } = columns[columnName] || {};
40
+ this.columNames.push(columnName);
41
+ if (!deletedColumnName && deleteDate) {
42
+ deletedColumnName = columnName;
43
+ }
44
+ if (name) {
45
+ this.columnAliases[columnName] = name;
46
+ }
47
+ if (primary) {
48
+ primaryKeys.push(columnName);
49
+ }
50
+ }
51
+ this.deletedColumnName = deletedColumnName;
52
+ this.primaryKeys = primaryKeys;
53
+ }
54
+ buildPrimaryKeyWhereClause(data) {
55
+ const { primaryKeys, qb, repository } = this;
56
+ const { columnQuotesSymbol: cqs } = qb;
57
+ const tableName = repository.metadata.tableName;
58
+ if (primaryKeys.length === 1) {
59
+ const [primaryKey] = primaryKeys;
60
+ return {
61
+ field: primaryKey,
62
+ value: {
63
+ params: { [primaryKey]: data.map(item => item[primaryKey]) },
64
+ query: `${cqs}${tableName}${cqs}.${cqs}${primaryKey}${cqs} in :${primaryKey}`
65
+ }
66
+ };
67
+ }
68
+ const params = {};
69
+ const query = [];
70
+ data.forEach((item, itemIndex) => {
71
+ const innerQuery = [];
72
+ primaryKeys.forEach(fieldName => {
73
+ const primaryKeyName = `${fieldName}${itemIndex}`;
74
+ params[primaryKeyName] = item[fieldName];
75
+ innerQuery.push(`${cqs}${tableName}${cqs}.${cqs}${fieldName}${cqs} = :${primaryKeyName}`);
76
+ });
77
+ query.push(`(${innerQuery.join(' and ')})`);
78
+ });
79
+ return { field: core_1.PersistanceSelectOperator.Or, value: { params, query: `(${query.join(' or ')})` } };
80
+ }
81
+ bulkCreate(data, options, privateOptions) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ const actualOptions = options || {};
84
+ const actualPrivateOptions = privateOptions || {};
85
+ const { forceTransaction, transactionManager } = actualOptions;
86
+ const { processInputAllowedFieldsEnabled } = actualPrivateOptions;
87
+ if (!transactionManager && forceTransaction) {
88
+ return this.repository.manager.transaction(tm => {
89
+ return this.bulkCreate(data, Object.assign(Object.assign({}, actualOptions), { transactionManager: tm }), actualPrivateOptions);
90
+ });
91
+ }
92
+ return yield this.save(data instanceof Array ? data : [data], transactionManager, {
93
+ processObjectAllowedFieldsEnabled: processInputAllowedFieldsEnabled
94
+ });
95
+ });
96
+ }
97
+ count(options, privateOptions) {
98
+ return __awaiter(this, void 0, void 0, function* () {
99
+ const { filters, forceTransaction, transactionManager, withDeleted = false } = options;
100
+ const actualPrivateOptions = privateOptions || {};
101
+ if (!transactionManager && forceTransaction) {
102
+ return this.repository.manager.transaction(tm => {
103
+ return this.count(Object.assign(Object.assign({}, options), { transactionManager: tm }), actualPrivateOptions);
104
+ });
105
+ }
106
+ const { allowCountWithoutFilters, processFiltersAllowedFieldsEnabled } = actualPrivateOptions;
107
+ const entityName = this.repository.metadata.name;
108
+ const tableName = this.repository.metadata.name;
109
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName);
110
+ const parsedFilters = (yield this.processObjectAllowedFields(filters, {
111
+ allowedFields: this.columNames,
112
+ isEnabled: processFiltersAllowedFieldsEnabled,
113
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
114
+ }));
115
+ if (!allowCountWithoutFilters && !Object.keys(parsedFilters).length) {
116
+ throw new core_1.ApplicationError('At least one filter field for counting is required.');
117
+ }
118
+ const { where, include: includeFromFilters } = this.qb.parseFilters(tableName, parsedFilters, {
119
+ fieldAliases: this.columnAliases
120
+ });
121
+ const include = this.qb.parseRelations(tableName, [], includeFromFilters);
122
+ this.qb.buildQuery(queryBuilder, {
123
+ currentEntityName: this.getEntityTarget(),
124
+ deletedColumnName: this.deletedColumnName,
125
+ entityManager: this.repository.manager,
126
+ include,
127
+ where,
128
+ withDeleted
129
+ });
130
+ return yield queryBuilder.getCount();
131
+ });
132
+ }
133
+ create(data, options, privateOptions) {
134
+ return __awaiter(this, void 0, void 0, function* () {
135
+ const actualOptions = options || {};
136
+ const actualPrivateOptions = privateOptions || {};
137
+ const { forceTransaction, transactionManager } = actualOptions;
138
+ if (!transactionManager && forceTransaction) {
139
+ return this.repository.manager.transaction(tm => {
140
+ return this.create(data, Object.assign(Object.assign({}, actualOptions), { transactionManager: tm }), actualPrivateOptions);
141
+ });
142
+ }
143
+ const saveResult = (yield this.save(data instanceof Array ? data[0] : data, transactionManager, {
144
+ processObjectAllowedFieldsEnabled: actualPrivateOptions.processInputAllowedFieldsEnabled
145
+ }));
146
+ return saveResult;
147
+ });
148
+ }
149
+ delete(options, privateOptions) {
150
+ return __awaiter(this, void 0, void 0, function* () {
151
+ const { filters, forceTransaction, returnOriginalItems, transactionManager, softDelete = true } = options;
152
+ const actualPrivateOptions = privateOptions || {};
153
+ if (!transactionManager && forceTransaction) {
154
+ return this.repository.manager.transaction(tm => {
155
+ return this.delete(Object.assign(Object.assign({}, options), { transactionManager: tm }), actualPrivateOptions);
156
+ });
157
+ }
158
+ const { processFiltersAllowedFieldsEnabled } = actualPrivateOptions;
159
+ const entityName = this.repository.metadata.name;
160
+ const tableName = this.repository.metadata.tableName;
161
+ const dataToReturn = {};
162
+ const deleteType = softDelete ? 'softDelete' : 'delete';
163
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName)[deleteType]();
164
+ const parsedFilters = (yield this.processObjectAllowedFields(filters, {
165
+ allowedFields: this.columNames,
166
+ isEnabled: processFiltersAllowedFieldsEnabled,
167
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
168
+ }));
169
+ if (!Object.keys(parsedFilters).length) {
170
+ throw new core_1.ApplicationError('At least one filter field for deletion is required.');
171
+ }
172
+ const { where: parsedWhere, include } = this.qb.parseFilters(tableName, parsedFilters, {
173
+ fieldAliases: this.columnAliases
174
+ });
175
+ let where = {};
176
+ if (Object.keys(include).length || returnOriginalItems) {
177
+ const findData = yield this.find({ filters: parsedFilters, transactionManager });
178
+ const { field, value } = this.buildPrimaryKeyWhereClause(findData.items);
179
+ where[field] = value;
180
+ dataToReturn.originalItems = findData.items;
181
+ }
182
+ else {
183
+ where = parsedWhere;
184
+ }
185
+ this.qb.buildQuery(queryBuilder, {
186
+ currentEntityName: this.getEntityTarget(),
187
+ deletedColumnName: this.deletedColumnName,
188
+ entityManager: this.repository.manager,
189
+ where
190
+ });
191
+ const result = yield queryBuilder.execute();
192
+ return Object.assign(Object.assign({}, dataToReturn), { count: typeof result.affected === 'number' ? result.affected : undefined });
193
+ });
194
+ }
195
+ find(options, privateOptions) {
196
+ return __awaiter(this, void 0, void 0, function* () {
197
+ const { filters, forceTransaction, getTotalCount = true, page: optPage, perPage: optPerPage, findAll: optFindAll, include: optRelations, orderBy: optOrderBy, transactionManager, withDeleted = false } = options;
198
+ const actualPrivateOptions = privateOptions || {};
199
+ if (!transactionManager && forceTransaction) {
200
+ return this.repository.manager.transaction(tm => {
201
+ return this.find(Object.assign(Object.assign({}, options), { transactionManager: tm }), actualPrivateOptions);
202
+ });
203
+ }
204
+ const page = optPage ? parseInt(optPage, 10) : 1;
205
+ const perPage = optPerPage ? parseInt(optPerPage, 10) : 10;
206
+ const findAll = optFindAll === true || optFindAll === 'true';
207
+ const findResults = { page: 1, perPage: 0, items: [], more: false };
208
+ const entityName = this.repository.metadata.name;
209
+ const processedFilters = (yield this.processObjectAllowedFields(filters || {}, {
210
+ allowedFields: this.columNames,
211
+ isEnabled: actualPrivateOptions.processFiltersAllowedFieldsEnabled,
212
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
213
+ }));
214
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName);
215
+ let where = {};
216
+ let include = {};
217
+ let orderBy = [];
218
+ if (Object.keys(processedFilters).length) {
219
+ const parsedFiltersData = this.qb.parseFilters(entityName, processedFilters, {
220
+ fieldAliases: this.columnAliases
221
+ });
222
+ where = Object.assign({}, parsedFiltersData.where);
223
+ include = Object.assign({}, parsedFiltersData.include);
224
+ }
225
+ include = this.qb.parseRelations(entityName, optRelations || [], include);
226
+ if (optOrderBy) {
227
+ const parsedOrderByData = this.qb.parseOrderBy(entityName, optOrderBy);
228
+ include = Object.assign(Object.assign({}, parsedOrderByData.include), include);
229
+ orderBy = [...parsedOrderByData.orderBy];
230
+ }
231
+ this.qb.buildQuery(queryBuilder, {
232
+ currentEntityName: this.getEntityTarget(),
233
+ deletedColumnName: this.deletedColumnName,
234
+ entityManager: this.repository.manager,
235
+ include,
236
+ orderBy,
237
+ select: options.select,
238
+ where,
239
+ withDeleted
240
+ });
241
+ if (!findAll) {
242
+ queryBuilder.skip((page - 1) * perPage).take(perPage + 1);
243
+ findResults.page = page;
244
+ findResults.perPage = perPage;
245
+ }
246
+ const items = yield queryBuilder.getMany();
247
+ if (findAll) {
248
+ findResults.perPage = items.length;
249
+ }
250
+ else {
251
+ if (items.length === perPage + 1) {
252
+ items.pop();
253
+ findResults.more = true;
254
+ }
255
+ if (getTotalCount) {
256
+ findResults.totalCount = yield this.count(Object.assign(Object.assign({}, options), { filters: processedFilters }), { allowCountWithoutFilters: true });
257
+ }
258
+ }
259
+ findResults.items = items;
260
+ return findResults;
261
+ });
262
+ }
263
+ findOne(options, privateOptions) {
264
+ return __awaiter(this, void 0, void 0, function* () {
265
+ const { filters, forceTransaction, transactionManager, selectOperator, include: optRelations, orderBy: optOrderBy, withDeleted = false } = options;
266
+ const actualPrivateOptions = privateOptions || {};
267
+ if (!transactionManager && forceTransaction) {
268
+ return this.repository.manager.transaction(tm => {
269
+ return this.findOne(Object.assign(Object.assign({}, options), { transactionManager: tm }), actualPrivateOptions);
270
+ });
271
+ }
272
+ const entityName = this.repository.metadata.name;
273
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName);
274
+ const parsedFilters = (yield this.processObjectAllowedFields(filters, {
275
+ allowedFields: this.columNames,
276
+ isEnabled: actualPrivateOptions.processFiltersAllowedFieldsEnabled,
277
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
278
+ }));
279
+ if (!Object.keys(parsedFilters).length) {
280
+ throw new core_1.ApplicationError('At least one filter field is required for the findOne method.');
281
+ }
282
+ const { where, include: includeFromFilters } = this.qb.parseFilters(entityName, parsedFilters, {
283
+ fieldAliases: this.columnAliases,
284
+ operator: selectOperator
285
+ });
286
+ const include = this.qb.parseRelations(entityName, optRelations || [], includeFromFilters);
287
+ let orderBy = [];
288
+ if (optOrderBy) {
289
+ const parsedOrderByData = this.qb.parseOrderBy(entityName, optOrderBy);
290
+ orderBy = [...parsedOrderByData.orderBy];
291
+ }
292
+ this.qb.buildQuery(queryBuilder, {
293
+ currentEntityName: this.getEntityTarget(),
294
+ deletedColumnName: this.deletedColumnName,
295
+ entityManager: this.repository.manager,
296
+ include,
297
+ orderBy,
298
+ select: options.select,
299
+ where,
300
+ withDeleted
301
+ });
302
+ return yield queryBuilder.getOne();
303
+ });
304
+ }
305
+ getEntityTarget() {
306
+ return this.repository.target;
307
+ }
308
+ getRepository(transactionManager) {
309
+ if (transactionManager) {
310
+ return transactionManager.getRepository(this.repository.target);
311
+ }
312
+ return this.repository;
313
+ }
314
+ processManyToMany(data, options) {
315
+ return __awaiter(this, void 0, void 0, function* () {
316
+ const actualOptions = options || {};
317
+ const { transactionManager } = actualOptions;
318
+ if (!transactionManager) {
319
+ return this.repository.manager.transaction(tm => {
320
+ return this.processManyToMany(data, Object.assign(Object.assign({}, actualOptions), { transactionManager: tm }));
321
+ });
322
+ }
323
+ const { counterpartColumns, currentEntityColumns, currentEntityItems, extraColumns, items, tableName } = data;
324
+ const { columnQuotesSymbol: cqs } = this.qb;
325
+ let deleteQuery = `delete from ${cqs}${tableName}${cqs} where `;
326
+ let deleteQueryItem = '(';
327
+ let deleteQueryValues = [];
328
+ let insertQuery = `insert into ${cqs}${tableName}${cqs} (`;
329
+ let insertQueryItem = '(';
330
+ let insertQueryValues = [];
331
+ let runDeleteQuery = false;
332
+ let runInsertQuery = false;
333
+ currentEntityColumns.forEach(columnNameData => {
334
+ const targetColumnName = columnNameData.targetColumnName || columnNameData.sourceColumnName;
335
+ insertQuery += `${cqs}${targetColumnName}${cqs}, `;
336
+ insertQueryItem += '?, ';
337
+ deleteQueryItem += `${cqs}${targetColumnName}${cqs} = ? and `;
338
+ });
339
+ counterpartColumns.forEach(columnNameData => {
340
+ const targetColumnName = columnNameData.targetColumnName || columnNameData.sourceColumnName;
341
+ insertQuery += `${cqs}${targetColumnName}${cqs}, `;
342
+ insertQueryItem += '?, ';
343
+ deleteQueryItem += `${cqs}${targetColumnName}${cqs} = ? and `;
344
+ });
345
+ if (extraColumns === null || extraColumns === void 0 ? void 0 : extraColumns.length) {
346
+ extraColumns.forEach(columnNameData => {
347
+ insertQuery += `${cqs}${columnNameData.targetColumnName || columnNameData.sourceColumnName}${cqs}, `;
348
+ insertQueryItem += '?, ';
349
+ });
350
+ }
351
+ insertQuery = `${insertQuery.substring(0, insertQuery.length - 2)}) values `;
352
+ insertQueryItem = `${insertQueryItem.substring(0, insertQueryItem.length - 2)})`;
353
+ deleteQueryItem = `${deleteQueryItem.substring(0, deleteQueryItem.length - 4)})`;
354
+ items.forEach(item => {
355
+ const { deleted } = item, itemData = __rest(item, ["deleted"]);
356
+ const itemColumnValues = [
357
+ ...counterpartColumns.map(columnNameData => itemData[columnNameData.sourceColumnName]),
358
+ ...((extraColumns === null || extraColumns === void 0 ? void 0 : extraColumns.map(columnNameData => itemData[columnNameData.sourceColumnName])) ||
359
+ [])
360
+ ];
361
+ if (deleted) {
362
+ if (runDeleteQuery) {
363
+ deleteQuery += ' or ';
364
+ }
365
+ else {
366
+ runDeleteQuery = true;
367
+ }
368
+ deleteQuery += deleteQueryItem;
369
+ currentEntityItems.forEach(currentEntityItem => {
370
+ deleteQueryValues = [
371
+ ...deleteQueryValues,
372
+ ...currentEntityColumns.map(columnNameData => currentEntityItem[columnNameData.sourceColumnName]),
373
+ ...itemColumnValues
374
+ ];
375
+ });
376
+ return;
377
+ }
378
+ if (runInsertQuery) {
379
+ insertQuery += ', ';
380
+ }
381
+ else {
382
+ runInsertQuery = true;
383
+ }
384
+ insertQuery += insertQueryItem;
385
+ currentEntityItems.forEach(currentEntityItem => {
386
+ insertQueryValues = [
387
+ ...insertQueryValues,
388
+ ...currentEntityColumns.map(columnNameData => currentEntityItem[columnNameData.sourceColumnName]),
389
+ ...itemColumnValues
390
+ ];
391
+ });
392
+ });
393
+ if (runDeleteQuery) {
394
+ yield transactionManager.query(deleteQuery, deleteQueryValues);
395
+ }
396
+ if (runInsertQuery) {
397
+ yield transactionManager.query(`${insertQuery}`, insertQueryValues);
398
+ }
399
+ });
400
+ }
401
+ save(data, transactionManager, options) {
402
+ return __awaiter(this, void 0, void 0, function* () {
403
+ const { columNames, repository } = this;
404
+ const { processObjectAllowedFieldsEnabled } = options || {};
405
+ const dataToSave = yield this.processObjectAllowedFields(data, {
406
+ allowedFields: columNames,
407
+ isEnabled: processObjectAllowedFieldsEnabled,
408
+ objectType: core_1.ProcessObjectAllowedFieldsType.Input
409
+ });
410
+ try {
411
+ if (transactionManager) {
412
+ return (yield transactionManager.save(repository.target, dataToSave));
413
+ }
414
+ return repository.save(dataToSave);
415
+ }
416
+ catch (e) {
417
+ const error = e;
418
+ if (error.code === rdb_entity_service_definitions_1.PostgresErrorCode.UniqueViolation) {
419
+ const extractVariableName = new RegExp(/^Key \((.*)\)\=(.*)$/g);
420
+ const result = extractVariableName.exec(error.detail);
421
+ throw new core_1.ApplicationError(`${error.table}: ${result ? result[1] : 'a column value you have provided'} needs to be unique`);
422
+ }
423
+ throw e;
424
+ }
425
+ });
426
+ }
427
+ update(data, options, privateOptions) {
428
+ return __awaiter(this, void 0, void 0, function* () {
429
+ const { columNames, repository } = this;
430
+ const { filters, forceTransaction, returnData, returnOriginalItems, transactionManager } = options;
431
+ const { processFiltersAllowedFieldsEnabled, processInputAllowedFieldsEnabled, withDeleted = false } = privateOptions || {};
432
+ if (!transactionManager && forceTransaction) {
433
+ return repository.manager.transaction(tm => {
434
+ return this.update(data, Object.assign(Object.assign({}, options), { transactionManager: tm }), privateOptions);
435
+ });
436
+ }
437
+ const dataToUpdate = (yield this.processObjectAllowedFields(data instanceof Array ? data[0] : data, {
438
+ allowedFields: columNames,
439
+ isEnabled: processInputAllowedFieldsEnabled,
440
+ objectType: core_1.ProcessObjectAllowedFieldsType.Input
441
+ }));
442
+ if (!Object.keys(dataToUpdate).length) {
443
+ throw new core_1.ApplicationError('At least one field for update is required.');
444
+ }
445
+ const entityName = repository.metadata.name;
446
+ const tableName = repository.metadata.tableName;
447
+ const processedFilters = (yield this.processObjectAllowedFields(filters, {
448
+ allowedFields: this.columNames,
449
+ isEnabled: processFiltersAllowedFieldsEnabled,
450
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
451
+ }));
452
+ if (!Object.keys(processedFilters).length) {
453
+ throw new core_1.ApplicationError('At least one filter field for update is required.');
454
+ }
455
+ const queryBuilder = this.getRepository(transactionManager)
456
+ .createQueryBuilder(entityName)
457
+ .update()
458
+ .set(dataToUpdate);
459
+ const { where: parsedWhere, include } = this.qb.parseFilters(tableName, processedFilters, {
460
+ fieldAliases: this.columnAliases
461
+ });
462
+ const hasInclude = Object.keys(include).length;
463
+ let originalItems = [];
464
+ let where = {};
465
+ if (hasInclude || returnOriginalItems) {
466
+ const findData = yield this.find({ filters: processedFilters, findAll: true, transactionManager }, { processFiltersAllowedFieldsEnabled: false });
467
+ const { field, value } = this.buildPrimaryKeyWhereClause(findData.items);
468
+ originalItems = findData.items;
469
+ where[field] = value;
470
+ }
471
+ else {
472
+ where = parsedWhere;
473
+ }
474
+ this.qb.buildQuery(queryBuilder, {
475
+ currentEntityName: this.getEntityTarget(),
476
+ deletedColumnName: this.deletedColumnName,
477
+ entityManager: this.repository.manager,
478
+ where,
479
+ withDeleted
480
+ });
481
+ const dataToReturn = {};
482
+ if (returnOriginalItems) {
483
+ dataToReturn.originalItems = originalItems;
484
+ }
485
+ if (returnData) {
486
+ let result;
487
+ if (this.qb.returningSupported) {
488
+ result = yield queryBuilder.returning('*').execute();
489
+ }
490
+ else {
491
+ result = yield queryBuilder.execute();
492
+ const { items: updatedItems } = yield this.find({
493
+ filters: processedFilters,
494
+ findAll: true,
495
+ transactionManager
496
+ }, { processFiltersAllowedFieldsEnabled: false });
497
+ if (hasInclude) {
498
+ const keysToDelete = [];
499
+ for (const entityName in include) {
500
+ keysToDelete.push(entityName.split('.')[0]);
501
+ }
502
+ updatedItems.forEach((updatedItem, updatedItemIndex) => {
503
+ keysToDelete.forEach(keyToDelete => delete updatedItem[keyToDelete]);
504
+ updatedItems[updatedItemIndex] = updatedItem;
505
+ });
506
+ }
507
+ result.raw = updatedItems;
508
+ }
509
+ dataToReturn.count = result.raw.length;
510
+ dataToReturn.items = result.raw;
511
+ }
512
+ else {
513
+ const result = yield queryBuilder.execute();
514
+ dataToReturn.count = typeof result.affected === 'number' ? result.affected : undefined;
515
+ }
516
+ return dataToReturn;
517
+ });
518
+ }
519
+ }
520
+ exports.RDBEntityService = RDBEntityService;
521
+ //# sourceMappingURL=rdb.entity.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rdb.entity.service.js","sourceRoot":"","sources":["../../src/entity/rdb.entity.service.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export * from './common/definitions';
2
- export * from './entityService';
3
- export * from './module';
2
+ export * from './entity';
3
+ export * from './ormQueryBuilder';
4
4
  export * from './repository';
5
5
  export * from './sqlQueryBuilder';
package/dist/index.js CHANGED
@@ -15,8 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./common/definitions"), exports);
18
- __exportStar(require("./entityService"), exports);
19
- __exportStar(require("./module"), exports);
18
+ __exportStar(require("./entity"), exports);
19
+ __exportStar(require("./ormQueryBuilder"), exports);
20
20
  __exportStar(require("./repository"), exports);
21
21
  __exportStar(require("./sqlQueryBuilder"), exports);
22
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,kDAAgC;AAChC,2CAAyB;AACzB,+CAA6B;AAC7B,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,2CAAyB;AACzB,oDAAkC;AAClC,+CAA6B;AAC7B,oDAAkC"}
@@ -0,0 +1 @@
1
+ export * from './rdb.ormQueryBuilder';
@@ -14,6 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./rdb.module.definitions"), exports);
18
- __exportStar(require("./rdb.module"), exports);
17
+ __exportStar(require("./rdb.ormQueryBuilder"), exports);
19
18
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ormQueryBuilder/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC"}
@@ -0,0 +1,38 @@
1
+ import { PersistanceOrderByDirection } from '@node-c/core';
2
+ export declare abstract class OrmBaseQueryBuilder<Entity> {
3
+ abstract andWhere(..._args: unknown[]): OrmBaseQueryBuilder<Entity>;
4
+ abstract orWhere(..._args: unknown[]): OrmBaseQueryBuilder<Entity>;
5
+ abstract where(..._args: unknown[]): OrmBaseQueryBuilder<Entity>;
6
+ }
7
+ export declare abstract class OrmDeleteQueryBuilder<Entity> extends OrmBaseQueryBuilder<Entity> {
8
+ abstract execute(): Promise<OrmDeleteQueryBuilderDeleteResult>;
9
+ }
10
+ export interface OrmDeleteQueryBuilderDeleteResult {
11
+ affected?: number | null;
12
+ raw: unknown;
13
+ }
14
+ export declare abstract class OrmSelectQueryBuilder<Entity> extends OrmBaseQueryBuilder<Entity> {
15
+ abstract addOrderBy(_field: string, _direction: PersistanceOrderByDirection): OrmSelectQueryBuilder<Entity>;
16
+ abstract delete(): OrmDeleteQueryBuilder<Entity>;
17
+ abstract getCount(): Promise<number>;
18
+ abstract getMany(): Promise<Entity[]>;
19
+ abstract getOne(): Promise<Entity | null>;
20
+ abstract leftJoinAndSelect(..._args: unknown[]): OrmSelectQueryBuilder<Entity>;
21
+ abstract orderBy(_field: string, _direction: PersistanceOrderByDirection): OrmSelectQueryBuilder<Entity>;
22
+ abstract select(_selection: string[]): OrmSelectQueryBuilder<Entity>;
23
+ abstract skip(_skipCount: number): OrmSelectQueryBuilder<Entity>;
24
+ abstract softDelete(): OrmDeleteQueryBuilder<Entity>;
25
+ abstract take(_takeCount: number): OrmSelectQueryBuilder<Entity>;
26
+ abstract update(): OrmUpdateQueryBuilder<Entity>;
27
+ abstract withDeleted(): OrmSelectQueryBuilder<Entity>;
28
+ }
29
+ export declare abstract class OrmUpdateQueryBuilder<Entity> extends OrmBaseQueryBuilder<Entity> {
30
+ abstract execute(): Promise<OrmUpdateQueryBuilderUpdateResult>;
31
+ abstract returning(_selection: string | string[]): OrmUpdateQueryBuilder<Entity>;
32
+ abstract set(..._args: unknown[]): OrmUpdateQueryBuilder<Entity>;
33
+ }
34
+ export interface OrmUpdateQueryBuilderUpdateResult {
35
+ affected?: number;
36
+ generatedMaps?: object[];
37
+ raw: unknown;
38
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrmUpdateQueryBuilder = exports.OrmSelectQueryBuilder = exports.OrmDeleteQueryBuilder = exports.OrmBaseQueryBuilder = void 0;
4
+ class OrmBaseQueryBuilder {
5
+ }
6
+ exports.OrmBaseQueryBuilder = OrmBaseQueryBuilder;
7
+ class OrmDeleteQueryBuilder extends OrmBaseQueryBuilder {
8
+ }
9
+ exports.OrmDeleteQueryBuilder = OrmDeleteQueryBuilder;
10
+ class OrmSelectQueryBuilder extends OrmBaseQueryBuilder {
11
+ }
12
+ exports.OrmSelectQueryBuilder = OrmSelectQueryBuilder;
13
+ class OrmUpdateQueryBuilder extends OrmBaseQueryBuilder {
14
+ }
15
+ exports.OrmUpdateQueryBuilder = OrmUpdateQueryBuilder;
16
+ //# sourceMappingURL=rdb.ormQueryBuilder.js.map