@node-c/persistance-rdb 1.0.0-alpha4 → 1.0.0-alpha41

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 +41 -0
  13. package/dist/entity/rdb.entity.service.definitions.js.map +1 -0
  14. package/dist/entity/rdb.entity.service.js +504 -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 +26 -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} +2 -6
  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 +47 -0
  41. package/dist/sqlQueryBuilder/{sqlQueryBuilder.service.js → rdb.sqlQueryBuilder.service.js} +64 -37
  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,504 @@
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
+ deletedColumnName: this.deletedColumnName,
124
+ include,
125
+ where,
126
+ withDeleted
127
+ });
128
+ return yield queryBuilder.getCount();
129
+ });
130
+ }
131
+ create(data, options, privateOptions) {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ const actualOptions = options || {};
134
+ const actualPrivateOptions = privateOptions || {};
135
+ const { forceTransaction, transactionManager } = actualOptions;
136
+ if (!transactionManager && forceTransaction) {
137
+ return this.repository.manager.transaction(tm => {
138
+ return this.create(data, Object.assign(Object.assign({}, actualOptions), { transactionManager: tm }), actualPrivateOptions);
139
+ });
140
+ }
141
+ const saveResult = (yield this.save(data instanceof Array ? data[0] : data, transactionManager, {
142
+ processObjectAllowedFieldsEnabled: actualPrivateOptions.processInputAllowedFieldsEnabled
143
+ }));
144
+ return saveResult;
145
+ });
146
+ }
147
+ delete(options, privateOptions) {
148
+ return __awaiter(this, void 0, void 0, function* () {
149
+ const { filters, forceTransaction, returnOriginalItems, transactionManager, softDelete = true } = options;
150
+ const actualPrivateOptions = privateOptions || {};
151
+ if (!transactionManager && forceTransaction) {
152
+ return this.repository.manager.transaction(tm => {
153
+ return this.delete(Object.assign(Object.assign({}, options), { transactionManager: tm }), actualPrivateOptions);
154
+ });
155
+ }
156
+ const { processFiltersAllowedFieldsEnabled } = actualPrivateOptions;
157
+ const entityName = this.repository.metadata.name;
158
+ const tableName = this.repository.metadata.tableName;
159
+ const dataToReturn = {};
160
+ const deleteType = softDelete ? 'softDelete' : 'delete';
161
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName)[deleteType]();
162
+ const parsedFilters = (yield this.processObjectAllowedFields(filters, {
163
+ allowedFields: this.columNames,
164
+ isEnabled: processFiltersAllowedFieldsEnabled,
165
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
166
+ }));
167
+ if (!Object.keys(parsedFilters).length) {
168
+ throw new core_1.ApplicationError('At least one filter field for deletion is required.');
169
+ }
170
+ const { where: parsedWhere, include } = this.qb.parseFilters(tableName, parsedFilters, {
171
+ fieldAliases: this.columnAliases
172
+ });
173
+ let where = {};
174
+ if (Object.keys(include).length || returnOriginalItems) {
175
+ const findData = yield this.find({ filters: parsedFilters, transactionManager });
176
+ const { field, value } = this.buildPrimaryKeyWhereClause(findData.items);
177
+ where[field] = value;
178
+ dataToReturn.originalItems = findData.items;
179
+ }
180
+ else {
181
+ where = parsedWhere;
182
+ }
183
+ this.qb.buildQuery(queryBuilder, { deletedColumnName: this.deletedColumnName, where });
184
+ const result = yield queryBuilder.execute();
185
+ return Object.assign(Object.assign({}, dataToReturn), { count: typeof result.affected === 'number' ? result.affected : undefined });
186
+ });
187
+ }
188
+ find(options, privateOptions) {
189
+ return __awaiter(this, void 0, void 0, function* () {
190
+ const { filters, forceTransaction, getTotalCount = true, page: optPage, perPage: optPerPage, findAll: optFindAll, include: optRelations, orderBy: optOrderBy, transactionManager, withDeleted = false } = options;
191
+ const actualPrivateOptions = privateOptions || {};
192
+ if (!transactionManager && forceTransaction) {
193
+ return this.repository.manager.transaction(tm => {
194
+ return this.find(Object.assign(Object.assign({}, options), { transactionManager: tm }), actualPrivateOptions);
195
+ });
196
+ }
197
+ const page = optPage ? parseInt(optPage, 10) : 1;
198
+ const perPage = optPerPage ? parseInt(optPerPage, 10) : 10;
199
+ const findAll = optFindAll === true || optFindAll === 'true';
200
+ const findResults = { page: 1, perPage: 0, items: [], more: false };
201
+ const entityName = this.repository.metadata.name;
202
+ const processedFilters = (yield this.processObjectAllowedFields(filters || {}, {
203
+ allowedFields: this.columNames,
204
+ isEnabled: actualPrivateOptions.processFiltersAllowedFieldsEnabled,
205
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
206
+ }));
207
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName);
208
+ let where = {};
209
+ let include = {};
210
+ let orderBy = [];
211
+ if (Object.keys(processedFilters).length) {
212
+ const parsedFiltersData = this.qb.parseFilters(entityName, processedFilters, {
213
+ fieldAliases: this.columnAliases
214
+ });
215
+ where = Object.assign({}, parsedFiltersData.where);
216
+ include = Object.assign({}, parsedFiltersData.include);
217
+ }
218
+ include = this.qb.parseRelations(entityName, optRelations || [], include);
219
+ if (optOrderBy) {
220
+ const parsedOrderByData = this.qb.parseOrderBy(entityName, optOrderBy);
221
+ include = Object.assign(Object.assign({}, parsedOrderByData.include), include);
222
+ orderBy = [...parsedOrderByData.orderBy];
223
+ }
224
+ this.qb.buildQuery(queryBuilder, {
225
+ deletedColumnName: this.deletedColumnName,
226
+ include,
227
+ orderBy,
228
+ select: options.select,
229
+ where,
230
+ withDeleted
231
+ });
232
+ if (!findAll) {
233
+ queryBuilder.skip((page - 1) * perPage).take(perPage + 1);
234
+ findResults.page = page;
235
+ findResults.perPage = perPage;
236
+ }
237
+ const items = yield queryBuilder.getMany();
238
+ if (findAll) {
239
+ findResults.perPage = items.length;
240
+ }
241
+ else {
242
+ if (items.length === perPage + 1) {
243
+ items.pop();
244
+ findResults.more = true;
245
+ }
246
+ if (getTotalCount) {
247
+ findResults.totalCount = yield this.count(Object.assign(Object.assign({}, options), { filters: processedFilters }), { allowCountWithoutFilters: true });
248
+ }
249
+ }
250
+ findResults.items = items;
251
+ return findResults;
252
+ });
253
+ }
254
+ findOne(options, privateOptions) {
255
+ return __awaiter(this, void 0, void 0, function* () {
256
+ const { filters, forceTransaction, transactionManager, selectOperator, include: optRelations, orderBy: optOrderBy, withDeleted = false } = options;
257
+ const actualPrivateOptions = privateOptions || {};
258
+ if (!transactionManager && forceTransaction) {
259
+ return this.repository.manager.transaction(tm => {
260
+ return this.findOne(Object.assign(Object.assign({}, options), { transactionManager: tm }), actualPrivateOptions);
261
+ });
262
+ }
263
+ const entityName = this.repository.metadata.name;
264
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName);
265
+ const parsedFilters = (yield this.processObjectAllowedFields(filters, {
266
+ allowedFields: this.columNames,
267
+ isEnabled: actualPrivateOptions.processFiltersAllowedFieldsEnabled,
268
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
269
+ }));
270
+ if (!Object.keys(parsedFilters).length) {
271
+ throw new core_1.ApplicationError('At least one filter field is required for the findOne method.');
272
+ }
273
+ const { where, include: includeFromFilters } = this.qb.parseFilters(entityName, parsedFilters, {
274
+ fieldAliases: this.columnAliases,
275
+ operator: selectOperator
276
+ });
277
+ const include = this.qb.parseRelations(entityName, optRelations || [], includeFromFilters);
278
+ let orderBy = [];
279
+ if (optOrderBy) {
280
+ const parsedOrderByData = this.qb.parseOrderBy(entityName, optOrderBy);
281
+ orderBy = [...parsedOrderByData.orderBy];
282
+ }
283
+ this.qb.buildQuery(queryBuilder, {
284
+ deletedColumnName: this.deletedColumnName,
285
+ include,
286
+ orderBy,
287
+ select: options.select,
288
+ where,
289
+ withDeleted
290
+ });
291
+ return yield queryBuilder.getOne();
292
+ });
293
+ }
294
+ getEntityTarget() {
295
+ return this.repository.target;
296
+ }
297
+ getRepository(transactionManager) {
298
+ if (transactionManager) {
299
+ return transactionManager.getRepository(this.repository.target);
300
+ }
301
+ return this.repository;
302
+ }
303
+ processManyToMany(data, options) {
304
+ return __awaiter(this, void 0, void 0, function* () {
305
+ const actualOptions = options || {};
306
+ const { transactionManager } = actualOptions;
307
+ if (!transactionManager) {
308
+ return this.repository.manager.transaction(tm => {
309
+ return this.processManyToMany(data, Object.assign(Object.assign({}, actualOptions), { transactionManager: tm }));
310
+ });
311
+ }
312
+ const { counterpartColumns, currentEntityColumns, currentEntityItems, extraColumns, items, tableName } = data;
313
+ const { columnQuotesSymbol: cqs } = this.qb;
314
+ let deleteQuery = `delete from ${cqs}${tableName}${cqs} where `;
315
+ let deleteQueryItem = '(';
316
+ let deleteQueryValues = [];
317
+ let insertQuery = `insert into ${cqs}${tableName}${cqs} (`;
318
+ let insertQueryItem = '(';
319
+ let insertQueryValues = [];
320
+ let runDeleteQuery = false;
321
+ let runInsertQuery = false;
322
+ currentEntityColumns.forEach(columnNameData => {
323
+ const targetColumnName = columnNameData.targetColumnName || columnNameData.sourceColumnName;
324
+ insertQuery += `${cqs}${targetColumnName}${cqs}, `;
325
+ insertQueryItem += '?, ';
326
+ deleteQueryItem += `${cqs}${targetColumnName}${cqs} = ? and `;
327
+ });
328
+ counterpartColumns.forEach(columnNameData => {
329
+ const targetColumnName = columnNameData.targetColumnName || columnNameData.sourceColumnName;
330
+ insertQuery += `${cqs}${targetColumnName}${cqs}, `;
331
+ insertQueryItem += '?, ';
332
+ deleteQueryItem += `${cqs}${targetColumnName}${cqs} = ? and `;
333
+ });
334
+ if (extraColumns === null || extraColumns === void 0 ? void 0 : extraColumns.length) {
335
+ extraColumns.forEach(columnNameData => {
336
+ insertQuery += `${cqs}${columnNameData.targetColumnName || columnNameData.sourceColumnName}${cqs}, `;
337
+ insertQueryItem += '?, ';
338
+ });
339
+ }
340
+ insertQuery = `${insertQuery.substring(0, insertQuery.length - 2)}) values `;
341
+ insertQueryItem = `${insertQueryItem.substring(0, insertQueryItem.length - 2)})`;
342
+ deleteQueryItem = `${deleteQueryItem.substring(0, deleteQueryItem.length - 4)})`;
343
+ items.forEach(item => {
344
+ const { deleted } = item, itemData = __rest(item, ["deleted"]);
345
+ const itemColumnValues = [
346
+ ...counterpartColumns.map(columnNameData => itemData[columnNameData.sourceColumnName]),
347
+ ...((extraColumns === null || extraColumns === void 0 ? void 0 : extraColumns.map(columnNameData => itemData[columnNameData.sourceColumnName])) ||
348
+ [])
349
+ ];
350
+ if (deleted) {
351
+ if (runDeleteQuery) {
352
+ deleteQuery += ' or ';
353
+ }
354
+ else {
355
+ runDeleteQuery = true;
356
+ }
357
+ deleteQuery += deleteQueryItem;
358
+ currentEntityItems.forEach(currentEntityItem => {
359
+ deleteQueryValues = [
360
+ ...deleteQueryValues,
361
+ ...currentEntityColumns.map(columnNameData => currentEntityItem[columnNameData.sourceColumnName]),
362
+ ...itemColumnValues
363
+ ];
364
+ });
365
+ return;
366
+ }
367
+ if (runInsertQuery) {
368
+ insertQuery += ', ';
369
+ }
370
+ else {
371
+ runInsertQuery = true;
372
+ }
373
+ insertQuery += insertQueryItem;
374
+ currentEntityItems.forEach(currentEntityItem => {
375
+ insertQueryValues = [
376
+ ...insertQueryValues,
377
+ ...currentEntityColumns.map(columnNameData => currentEntityItem[columnNameData.sourceColumnName]),
378
+ ...itemColumnValues
379
+ ];
380
+ });
381
+ });
382
+ if (runDeleteQuery) {
383
+ yield transactionManager.query(deleteQuery, deleteQueryValues);
384
+ }
385
+ if (runInsertQuery) {
386
+ yield transactionManager.query(`${insertQuery}`, insertQueryValues);
387
+ }
388
+ });
389
+ }
390
+ save(data, transactionManager, options) {
391
+ return __awaiter(this, void 0, void 0, function* () {
392
+ const { columNames, repository } = this;
393
+ const { processObjectAllowedFieldsEnabled } = options || {};
394
+ const dataToSave = yield this.processObjectAllowedFields(data, {
395
+ allowedFields: columNames,
396
+ isEnabled: processObjectAllowedFieldsEnabled,
397
+ objectType: core_1.ProcessObjectAllowedFieldsType.Input
398
+ });
399
+ try {
400
+ if (transactionManager) {
401
+ return (yield transactionManager.save(repository.target, dataToSave));
402
+ }
403
+ return repository.save(dataToSave);
404
+ }
405
+ catch (e) {
406
+ const error = e;
407
+ if (error.code === rdb_entity_service_definitions_1.PostgresErrorCode.UniqueViolation) {
408
+ const extractVariableName = new RegExp(/^Key \((.*)\)\=(.*)$/g);
409
+ const result = extractVariableName.exec(error.detail);
410
+ throw new core_1.ApplicationError(`${error.table}: ${result ? result[1] : 'a column value you have provided'} needs to be unique`);
411
+ }
412
+ throw e;
413
+ }
414
+ });
415
+ }
416
+ update(data, options, privateOptions) {
417
+ return __awaiter(this, void 0, void 0, function* () {
418
+ const { columNames, repository } = this;
419
+ const { filters, forceTransaction, returnData, returnOriginalItems, transactionManager } = options;
420
+ const { processFiltersAllowedFieldsEnabled, processInputAllowedFieldsEnabled, withDeleted = false } = privateOptions || {};
421
+ if (!transactionManager && forceTransaction) {
422
+ return repository.manager.transaction(tm => {
423
+ return this.update(data, Object.assign(Object.assign({}, options), { transactionManager: tm }), privateOptions);
424
+ });
425
+ }
426
+ const dataToUpdate = (yield this.processObjectAllowedFields(data instanceof Array ? data[0] : data, {
427
+ allowedFields: columNames,
428
+ isEnabled: processInputAllowedFieldsEnabled,
429
+ objectType: core_1.ProcessObjectAllowedFieldsType.Input
430
+ }));
431
+ if (!Object.keys(dataToUpdate).length) {
432
+ throw new core_1.ApplicationError('At least one field for update is required.');
433
+ }
434
+ const entityName = repository.metadata.name;
435
+ const tableName = repository.metadata.tableName;
436
+ const processedFilters = (yield this.processObjectAllowedFields(filters, {
437
+ allowedFields: this.columNames,
438
+ isEnabled: processFiltersAllowedFieldsEnabled,
439
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
440
+ }));
441
+ if (!Object.keys(processedFilters).length) {
442
+ throw new core_1.ApplicationError('At least one filter field for update is required.');
443
+ }
444
+ const queryBuilder = this.getRepository(transactionManager)
445
+ .createQueryBuilder(entityName)
446
+ .update()
447
+ .set(dataToUpdate);
448
+ const { where: parsedWhere, include } = this.qb.parseFilters(tableName, processedFilters, {
449
+ fieldAliases: this.columnAliases
450
+ });
451
+ const hasInclude = Object.keys(include).length;
452
+ let originalItems = [];
453
+ let where = {};
454
+ if (hasInclude || returnOriginalItems) {
455
+ const findData = yield this.find({ filters: processedFilters, findAll: true, transactionManager }, { processFiltersAllowedFieldsEnabled: false });
456
+ const { field, value } = this.buildPrimaryKeyWhereClause(findData.items);
457
+ originalItems = findData.items;
458
+ where[field] = value;
459
+ }
460
+ else {
461
+ where = parsedWhere;
462
+ }
463
+ this.qb.buildQuery(queryBuilder, { deletedColumnName: this.deletedColumnName, where, withDeleted });
464
+ const dataToReturn = {};
465
+ if (returnOriginalItems) {
466
+ dataToReturn.originalItems = originalItems;
467
+ }
468
+ if (returnData) {
469
+ let result;
470
+ if (this.qb.returningSupported) {
471
+ result = yield queryBuilder.returning('*').execute();
472
+ }
473
+ else {
474
+ result = yield queryBuilder.execute();
475
+ const { items: updatedItems } = yield this.find({
476
+ filters: processedFilters,
477
+ findAll: true,
478
+ transactionManager
479
+ }, { processFiltersAllowedFieldsEnabled: false });
480
+ if (hasInclude) {
481
+ const keysToDelete = [];
482
+ for (const entityName in include) {
483
+ keysToDelete.push(entityName.split('.')[0]);
484
+ }
485
+ updatedItems.forEach((updatedItem, updatedItemIndex) => {
486
+ keysToDelete.forEach(keyToDelete => delete updatedItem[keyToDelete]);
487
+ updatedItems[updatedItemIndex] = updatedItem;
488
+ });
489
+ }
490
+ result.raw = updatedItems;
491
+ }
492
+ dataToReturn.count = result.raw.length;
493
+ dataToReturn.items = result.raw;
494
+ }
495
+ else {
496
+ const result = yield queryBuilder.execute();
497
+ dataToReturn.count = typeof result.affected === 'number' ? result.affected : undefined;
498
+ }
499
+ return dataToReturn;
500
+ });
501
+ }
502
+ }
503
+ exports.RDBEntityService = RDBEntityService;
504
+ //# 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rdb.ormQueryBuilder.js","sourceRoot":"","sources":["../../src/ormQueryBuilder/rdb.ormQueryBuilder.ts"],"names":[],"mappings":";;;AAEA,MAAsB,mBAAmB;CAIxC;AAJD,kDAIC;AAED,MAAsB,qBAA8B,SAAQ,mBAA2B;CAEtF;AAFD,sDAEC;AAOD,MAAsB,qBAA8B,SAAQ,mBAA2B;CActF;AAdD,sDAcC;AAED,MAAsB,qBAA8B,SAAQ,mBAA2B;CAItF;AAJD,sDAIC"}
@@ -1,2 +1 @@
1
- export * from './rdb.repository.definitions';
2
- export * from './rdb.repository.module';
1
+ export * from './rdb.repository';