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

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 +11 -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 +41 -0
  12. package/dist/entity/rdb.entity.service.definitions.d.ts +28 -0
  13. package/dist/entity/rdb.entity.service.definitions.js.map +1 -0
  14. package/dist/entity/rdb.entity.service.js +448 -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 +21 -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
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
1
  # Node-C / Persistance: RDB
2
- This is Node-C's package providing the functionality for relational databases. Currently, PostgreSQL and MySQL are supported.
2
+ This is Node-C's package providing the functionality for relational databases that TypeORMDB can work with. Currently, PostgreSQL and MySQL are supported.
3
3
 
4
4
  The documentation can be found on the [Node-C Github repo homepage](https://github.com/RazorDude/node-c).
@@ -1,4 +1,8 @@
1
1
  export declare enum Constants {
2
+ RDB_ENTITY_REPOSITORY = "RDB_ENTITY_REPOSITORY",
3
+ RDB_REPOSITORY_CONNECTION_NAME = "RDB_REPOSITORY_CONNECTION_NAME",
4
+ RDB_REPOSITORY_DATASOURCE = "RDB_REPOSITORY_DATASOURCE",
5
+ RDB_REPOSITORY_ENTITY_CLASS = "RDB_REPOSITORY_ENTITY_CLASS",
2
6
  SQL_BUILDER_DB_CONFIG_PATH = "SQL_BUILDER_DB_CONFIG_PATH",
3
7
  SQL_BUILDER_SERVICE_TOKEN_SUFFIX = "_SQL_BUILDER_SERVICE"
4
8
  }
@@ -3,6 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Constants = void 0;
4
4
  var Constants;
5
5
  (function (Constants) {
6
+ Constants["RDB_ENTITY_REPOSITORY"] = "RDB_ENTITY_REPOSITORY";
7
+ Constants["RDB_REPOSITORY_CONNECTION_NAME"] = "RDB_REPOSITORY_CONNECTION_NAME";
8
+ Constants["RDB_REPOSITORY_DATASOURCE"] = "RDB_REPOSITORY_DATASOURCE";
9
+ Constants["RDB_REPOSITORY_ENTITY_CLASS"] = "RDB_REPOSITORY_ENTITY_CLASS";
6
10
  Constants["SQL_BUILDER_DB_CONFIG_PATH"] = "SQL_BUILDER_DB_CONFIG_PATH";
7
11
  Constants["SQL_BUILDER_SERVICE_TOKEN_SUFFIX"] = "_SQL_BUILDER_SERVICE";
8
12
  })(Constants || (exports.Constants = Constants = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"common.constants.js","sourceRoot":"","sources":["../../../src/common/definitions/common.constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAKX;AALD,WAAY,SAAS;IAEnB,sEAAyD,CAAA;IAEzD,sEAAyD,CAAA;AAC3D,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB"}
1
+ {"version":3,"file":"common.constants.js","sourceRoot":"","sources":["../../../src/common/definitions/common.constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAaX;AAbD,WAAY,SAAS;IAEnB,4DAA+C,CAAA;IAE/C,8EAAiE,CAAA;IAEjE,oEAAuD,CAAA;IAEvD,wEAA2D,CAAA;IAE3D,sEAAyD,CAAA;IAEzD,sEAAyD,CAAA;AAC3D,CAAC,EAbW,SAAS,yBAAT,SAAS,QAapB"}
@@ -1,2 +1,3 @@
1
- export * from './rdb.entity.service.definitions';
1
+ export * from './rdb.entity.schema';
2
2
  export * from './rdb.entity.service';
3
+ export * from './rdb.entity.service.definitions';
@@ -14,6 +14,7 @@ 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.entity.service.definitions"), exports);
17
+ __exportStar(require("./rdb.entity.schema"), exports);
18
18
  __exportStar(require("./rdb.entity.service"), exports);
19
+ __exportStar(require("./rdb.entity.service.definitions"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,uDAAqC;AACrC,mEAAiD"}
@@ -0,0 +1,11 @@
1
+ export interface RDBEntitySchema {
2
+ options: {
3
+ columns: {
4
+ [columnName: string]: {
5
+ deleteDate?: boolean;
6
+ name?: string;
7
+ primary?: boolean;
8
+ } | undefined;
9
+ };
10
+ };
11
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=rdb.module.definitions.js.map
3
+ //# sourceMappingURL=rdb.entity.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rdb.entity.schema.js","sourceRoot":"","sources":["../../src/entity/rdb.entity.schema.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import { ConfigProviderService, GenericObject, PersistanceDeleteResult, PersistanceEntityService, PersistanceFindResults, PersistanceNumberItem, PersistanceUpdateResult } from '@node-c/core';
2
+ import { RDBEntitySchema } from './rdb.entity.schema';
3
+ import { BulkCreateOptions, BulkCreatePrivateOptions, CountOptions, CountPrivateOptions, CreateOptions, CreatePrivateOptions, DeleteOptions, DeletePrivateOptions, FindOneOptions, FindOnePrivateOptions, FindOptions, FindPrivateOptions, UpdateOptions, UpdatePrivateOptions } from './rdb.entity.service.definitions';
4
+ import { RDBEntityManager, RDBRepository } from '../repository';
5
+ import { ParsedFilter, SQLQueryBuilderService } from '../sqlQueryBuilder';
6
+ export declare class RDBEntityService<Entity extends GenericObject<unknown>> extends PersistanceEntityService<Entity> {
7
+ protected configProvider: ConfigProviderService;
8
+ protected qb: SQLQueryBuilderService;
9
+ protected repository: RDBRepository<Entity>;
10
+ protected schema: RDBEntitySchema;
11
+ protected columnAliases: Record<string, string>;
12
+ protected columNames: string[];
13
+ protected deletedColumnName?: string;
14
+ protected primaryKeys: string[];
15
+ constructor(configProvider: ConfigProviderService, qb: SQLQueryBuilderService, repository: RDBRepository<Entity>, schema: RDBEntitySchema);
16
+ protected buildPrimaryKeyWhereClause(data: Entity[]): {
17
+ field: string;
18
+ value: ParsedFilter;
19
+ };
20
+ bulkCreate(data: Partial<Entity>[], options?: BulkCreateOptions, privateOptions?: BulkCreatePrivateOptions): Promise<Entity[]>;
21
+ count(options: CountOptions, privateOptions?: CountPrivateOptions): Promise<number | undefined>;
22
+ create(data: Partial<Entity>, options?: CreateOptions, privateOptions?: CreatePrivateOptions): Promise<Entity>;
23
+ delete(options: DeleteOptions, privateOptions?: DeletePrivateOptions): Promise<PersistanceDeleteResult<Entity>>;
24
+ find(options: FindOptions, privateOptions?: FindPrivateOptions): Promise<PersistanceFindResults<Entity>>;
25
+ findOne(options: FindOneOptions, privateOptions?: FindOnePrivateOptions): Promise<Entity | null>;
26
+ getEntityTarget(): unknown;
27
+ protected getRepository(transactionManager?: RDBEntityManager): RDBRepository<Entity>;
28
+ protected processManyToMany(data: {
29
+ counterpartColumn: string;
30
+ currentEntityColumn: string;
31
+ id: number;
32
+ items: PersistanceNumberItem[];
33
+ tableName: string;
34
+ }, options?: {
35
+ transactionManager?: RDBEntityManager;
36
+ }): Promise<void>;
37
+ protected save<Data = unknown, ReturnData = unknown>(data: Data, transactionManager?: RDBEntityManager, options?: {
38
+ processObjectAllowedFieldsEnabled?: boolean;
39
+ }): Promise<ReturnData>;
40
+ update(data: Entity, options: UpdateOptions, privateOptions?: UpdatePrivateOptions): Promise<PersistanceUpdateResult<Entity>>;
41
+ }
@@ -0,0 +1,28 @@
1
+ import { PersistanceBulkCreatePrivateOptions, PersistanceCountOptions, PersistanceCountPrivateOptions, PersistanceCreatePrivateOptions, PersistanceDeleteOptions, PersistanceDeletePrivateOptions, PersistanceFindOneOptions, PersistanceFindOnePrivateOptions, PersistanceFindOptions, PersistanceFindPrivateOptions, PersistanceUpdateOptions, PersistanceUpdatePrivateOptions } from '@node-c/core';
2
+ import { RDBEntityManager } from '../repository';
3
+ export interface BaseOptions {
4
+ forceTransaction?: boolean;
5
+ transactionManager?: RDBEntityManager;
6
+ }
7
+ export type BulkCreateOptions = BaseOptions;
8
+ export type BulkCreatePrivateOptions = PersistanceBulkCreatePrivateOptions;
9
+ export interface CountOptions extends BaseOptions, PersistanceCountOptions {
10
+ }
11
+ export type CountPrivateOptions = PersistanceCountPrivateOptions;
12
+ export type CreateOptions = BaseOptions;
13
+ export type CreatePrivateOptions = PersistanceCreatePrivateOptions;
14
+ export interface DeleteOptions extends BaseOptions, PersistanceDeleteOptions {
15
+ }
16
+ export type DeletePrivateOptions = PersistanceDeletePrivateOptions;
17
+ export interface FindOneOptions extends BaseOptions, PersistanceFindOneOptions {
18
+ }
19
+ export type FindOnePrivateOptions = PersistanceFindOnePrivateOptions;
20
+ export interface FindOptions extends BaseOptions, PersistanceFindOptions {
21
+ }
22
+ export type FindPrivateOptions = PersistanceFindPrivateOptions;
23
+ export declare enum PostgresErrorCode {
24
+ UniqueViolation = "23505"
25
+ }
26
+ export interface UpdateOptions extends BaseOptions, PersistanceUpdateOptions {
27
+ }
28
+ export type UpdatePrivateOptions = PersistanceUpdatePrivateOptions;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rdb.entity.service.definitions.js","sourceRoot":"","sources":["../../src/entity/rdb.entity.service.definitions.ts"],"names":[],"mappings":";;;AA8CA,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAE3B,8CAAyB,CAAA;AAC3B,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B"}
@@ -0,0 +1,448 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RDBEntityService = void 0;
13
+ const core_1 = require("@node-c/core");
14
+ const rdb_entity_service_definitions_1 = require("./rdb.entity.service.definitions");
15
+ class RDBEntityService extends core_1.PersistanceEntityService {
16
+ constructor(configProvider, qb, repository, schema) {
17
+ super(configProvider, qb.persistanceModuleName);
18
+ this.configProvider = configProvider;
19
+ this.qb = qb;
20
+ this.repository = repository;
21
+ this.schema = schema;
22
+ const { columns } = schema.options;
23
+ const primaryKeys = [];
24
+ let deletedColumnName;
25
+ this.columnAliases = {};
26
+ this.columNames = [];
27
+ for (const columnName in columns) {
28
+ const { deleteDate, name, primary } = columns[columnName] || {};
29
+ this.columNames.push(columnName);
30
+ if (!deletedColumnName && deleteDate) {
31
+ deletedColumnName = columnName;
32
+ }
33
+ if (name) {
34
+ this.columnAliases[columnName] = name;
35
+ }
36
+ if (primary) {
37
+ primaryKeys.push(columnName);
38
+ }
39
+ }
40
+ this.deletedColumnName = deletedColumnName;
41
+ this.primaryKeys = primaryKeys;
42
+ }
43
+ buildPrimaryKeyWhereClause(data) {
44
+ const { primaryKeys, qb, repository } = this;
45
+ const { columnQuotesSymbol: cqs } = qb;
46
+ const tableName = repository.metadata.tableName;
47
+ if (primaryKeys.length === 1) {
48
+ const [primaryKey] = primaryKeys;
49
+ return {
50
+ field: primaryKey,
51
+ value: {
52
+ params: { [primaryKey]: data.map(item => item[primaryKey]) },
53
+ query: `${cqs}${tableName}${cqs}.${cqs}${primaryKey}${cqs} in :${primaryKey}`
54
+ }
55
+ };
56
+ }
57
+ const params = {};
58
+ const query = [];
59
+ data.forEach((item, itemIndex) => {
60
+ const innerQuery = [];
61
+ primaryKeys.forEach(fieldName => {
62
+ const primaryKeyName = `${fieldName}${itemIndex}`;
63
+ params[primaryKeyName] = item[fieldName];
64
+ innerQuery.push(`${cqs}${tableName}${cqs}.${cqs}${fieldName}${cqs} = :${primaryKeyName}`);
65
+ });
66
+ query.push(`(${innerQuery.join(' and ')})`);
67
+ });
68
+ return { field: core_1.PersistanceSelectOperator.Or, value: { params, query: `(${query.join(' or ')})` } };
69
+ }
70
+ bulkCreate(data, options, privateOptions) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ const actualOptions = options || {};
73
+ const actualPrivateOptions = privateOptions || {};
74
+ const { forceTransaction, transactionManager } = actualOptions;
75
+ const { processInputAllowedFieldsEnabled } = actualPrivateOptions;
76
+ if (!transactionManager && forceTransaction) {
77
+ return this.repository.manager.transaction(tm => {
78
+ return this.bulkCreate(data, Object.assign(Object.assign({}, actualOptions), { transactionManager: tm }), actualPrivateOptions);
79
+ });
80
+ }
81
+ return yield this.save(data instanceof Array ? data : [data], transactionManager, {
82
+ processObjectAllowedFieldsEnabled: processInputAllowedFieldsEnabled
83
+ });
84
+ });
85
+ }
86
+ count(options, privateOptions) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ const { filters, forceTransaction, transactionManager, withDeleted = false } = options;
89
+ const actualPrivateOptions = privateOptions || {};
90
+ if (!transactionManager && forceTransaction) {
91
+ return this.repository.manager.transaction(tm => {
92
+ return this.count(Object.assign(Object.assign({}, options), { transactionManager: tm }), actualPrivateOptions);
93
+ });
94
+ }
95
+ const { allowCountWithoutFilters, processFiltersAllowedFieldsEnabled } = actualPrivateOptions;
96
+ const entityName = this.repository.metadata.name;
97
+ const tableName = this.repository.metadata.name;
98
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName);
99
+ const parsedFilters = (yield this.processObjectAllowedFields(filters, {
100
+ allowedFields: this.columNames,
101
+ isEnabled: processFiltersAllowedFieldsEnabled,
102
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
103
+ }));
104
+ if (!allowCountWithoutFilters && !Object.keys(parsedFilters).length) {
105
+ throw new core_1.ApplicationError('At least one filter field for counting is required.');
106
+ }
107
+ const { where, include: includeFromFilters } = this.qb.parseFilters(tableName, parsedFilters, {
108
+ fieldAliases: this.columnAliases
109
+ });
110
+ const include = this.qb.parseRelations(tableName, [], includeFromFilters);
111
+ this.qb.buildQuery(queryBuilder, {
112
+ deletedColumnName: this.deletedColumnName,
113
+ include,
114
+ where,
115
+ withDeleted
116
+ });
117
+ return yield queryBuilder.getCount();
118
+ });
119
+ }
120
+ create(data, options, privateOptions) {
121
+ return __awaiter(this, void 0, void 0, function* () {
122
+ const actualOptions = options || {};
123
+ const actualPrivateOptions = privateOptions || {};
124
+ const { forceTransaction, transactionManager } = actualOptions;
125
+ if (!transactionManager && forceTransaction) {
126
+ return this.repository.manager.transaction(tm => {
127
+ return this.create(data, Object.assign(Object.assign({}, actualOptions), { transactionManager: tm }), actualPrivateOptions);
128
+ });
129
+ }
130
+ return yield this.save(data instanceof Array ? data[0] : data, transactionManager, {
131
+ processObjectAllowedFieldsEnabled: actualPrivateOptions.processInputAllowedFieldsEnabled
132
+ });
133
+ });
134
+ }
135
+ delete(options, privateOptions) {
136
+ return __awaiter(this, void 0, void 0, function* () {
137
+ const { filters, forceTransaction, returnOriginalItems, transactionManager, softDelete = true } = options;
138
+ const actualPrivateOptions = privateOptions || {};
139
+ if (!transactionManager && forceTransaction) {
140
+ return this.repository.manager.transaction(tm => {
141
+ return this.delete(Object.assign(Object.assign({}, options), { transactionManager: tm }), actualPrivateOptions);
142
+ });
143
+ }
144
+ const { processFiltersAllowedFieldsEnabled } = actualPrivateOptions;
145
+ const entityName = this.repository.metadata.name;
146
+ const tableName = this.repository.metadata.tableName;
147
+ const dataToReturn = {};
148
+ const deleteType = softDelete ? 'softDelete' : 'delete';
149
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName)[deleteType]();
150
+ const parsedFilters = (yield this.processObjectAllowedFields(filters, {
151
+ allowedFields: this.columNames,
152
+ isEnabled: processFiltersAllowedFieldsEnabled,
153
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
154
+ }));
155
+ if (!Object.keys(parsedFilters).length) {
156
+ throw new core_1.ApplicationError('At least one filter field for deletion is required.');
157
+ }
158
+ const { where: parsedWhere, include } = this.qb.parseFilters(tableName, parsedFilters, {
159
+ fieldAliases: this.columnAliases
160
+ });
161
+ let where = {};
162
+ if (Object.keys(include).length || returnOriginalItems) {
163
+ const findData = yield this.find({ filters: parsedFilters, transactionManager });
164
+ const { field, value } = this.buildPrimaryKeyWhereClause(findData.items);
165
+ where[field] = value;
166
+ dataToReturn.originalItems = findData.items;
167
+ }
168
+ else {
169
+ where = parsedWhere;
170
+ }
171
+ this.qb.buildQuery(queryBuilder, { deletedColumnName: this.deletedColumnName, where });
172
+ const result = yield queryBuilder.execute();
173
+ return Object.assign(Object.assign({}, dataToReturn), { count: typeof result.affected === 'number' ? result.affected : undefined });
174
+ });
175
+ }
176
+ find(options, privateOptions) {
177
+ return __awaiter(this, void 0, void 0, function* () {
178
+ const { filters, forceTransaction, getTotalCount = true, page: optPage, perPage: optPerPage, findAll: optFindAll, include: optRelations, orderBy: optOrderBy, transactionManager, withDeleted = false } = options;
179
+ const actualPrivateOptions = privateOptions || {};
180
+ if (!transactionManager && forceTransaction) {
181
+ return this.repository.manager.transaction(tm => {
182
+ return this.find(Object.assign(Object.assign({}, options), { transactionManager: tm }), actualPrivateOptions);
183
+ });
184
+ }
185
+ const page = optPage ? parseInt(optPage, 10) : 1;
186
+ const perPage = optPerPage ? parseInt(optPerPage, 10) : 10;
187
+ const findAll = optFindAll === true || optFindAll === 'true';
188
+ const findResults = { page: 1, perPage: 0, items: [], more: false };
189
+ const entityName = this.repository.metadata.name;
190
+ const processedFilters = (yield this.processObjectAllowedFields(filters || {}, {
191
+ allowedFields: this.columNames,
192
+ isEnabled: actualPrivateOptions.processFiltersAllowedFieldsEnabled,
193
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
194
+ }));
195
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName);
196
+ let where = {};
197
+ let include = {};
198
+ let orderBy = [];
199
+ if (Object.keys(processedFilters).length) {
200
+ const parsedFiltersData = this.qb.parseFilters(entityName, processedFilters, {
201
+ fieldAliases: this.columnAliases
202
+ });
203
+ where = Object.assign({}, parsedFiltersData.where);
204
+ include = Object.assign({}, parsedFiltersData.include);
205
+ }
206
+ include = this.qb.parseRelations(entityName, optRelations || [], include);
207
+ if (optOrderBy) {
208
+ const parsedOrderByData = this.qb.parseOrderBy(entityName, optOrderBy);
209
+ include = Object.assign(Object.assign({}, parsedOrderByData.include), include);
210
+ orderBy = [...parsedOrderByData.orderBy];
211
+ }
212
+ this.qb.buildQuery(queryBuilder, {
213
+ deletedColumnName: this.deletedColumnName,
214
+ include,
215
+ orderBy,
216
+ select: options.select,
217
+ where,
218
+ withDeleted
219
+ });
220
+ if (!findAll) {
221
+ queryBuilder.skip((page - 1) * perPage).take(perPage + 1);
222
+ findResults.page = page;
223
+ findResults.perPage = perPage;
224
+ }
225
+ const items = yield queryBuilder.getMany();
226
+ if (findAll) {
227
+ findResults.perPage = items.length;
228
+ }
229
+ else {
230
+ if (items.length === perPage + 1) {
231
+ items.pop();
232
+ findResults.more = true;
233
+ }
234
+ if (getTotalCount) {
235
+ findResults.totalCount = yield this.count(Object.assign(Object.assign({}, options), { filters: processedFilters }), { allowCountWithoutFilters: true });
236
+ }
237
+ }
238
+ findResults.items = items;
239
+ return findResults;
240
+ });
241
+ }
242
+ findOne(options, privateOptions) {
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ const { filters, forceTransaction, transactionManager, selectOperator, include: optRelations, orderBy: optOrderBy, withDeleted = false } = options;
245
+ const actualPrivateOptions = privateOptions || {};
246
+ if (!transactionManager && forceTransaction) {
247
+ return this.repository.manager.transaction(tm => {
248
+ return this.findOne(Object.assign(Object.assign({}, options), { transactionManager: tm }), actualPrivateOptions);
249
+ });
250
+ }
251
+ const entityName = this.repository.metadata.name;
252
+ const queryBuilder = this.getRepository(transactionManager).createQueryBuilder(entityName);
253
+ const parsedFilters = (yield this.processObjectAllowedFields(filters, {
254
+ allowedFields: this.columNames,
255
+ isEnabled: actualPrivateOptions.processFiltersAllowedFieldsEnabled,
256
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
257
+ }));
258
+ if (!Object.keys(parsedFilters).length) {
259
+ throw new core_1.ApplicationError('At least one filter field is required for the findOne method.');
260
+ }
261
+ const { where, include: includeFromFilters } = this.qb.parseFilters(entityName, parsedFilters, {
262
+ fieldAliases: this.columnAliases,
263
+ operator: selectOperator
264
+ });
265
+ const include = this.qb.parseRelations(entityName, optRelations || [], includeFromFilters);
266
+ let orderBy = [];
267
+ if (optOrderBy) {
268
+ const parsedOrderByData = this.qb.parseOrderBy(entityName, optOrderBy);
269
+ orderBy = [...parsedOrderByData.orderBy];
270
+ }
271
+ this.qb.buildQuery(queryBuilder, {
272
+ deletedColumnName: this.deletedColumnName,
273
+ include,
274
+ orderBy,
275
+ select: options.select,
276
+ where,
277
+ withDeleted
278
+ });
279
+ return yield queryBuilder.getOne();
280
+ });
281
+ }
282
+ getEntityTarget() {
283
+ return this.repository.target;
284
+ }
285
+ getRepository(transactionManager) {
286
+ if (transactionManager) {
287
+ return transactionManager.getRepository(this.repository.target);
288
+ }
289
+ return this.repository;
290
+ }
291
+ processManyToMany(data, options) {
292
+ return __awaiter(this, void 0, void 0, function* () {
293
+ const { currentEntityColumn, id, counterpartColumn, items, tableName } = data;
294
+ const actualOptions = options || {};
295
+ const { transactionManager } = actualOptions;
296
+ if (!transactionManager) {
297
+ return this.repository.manager.transaction(tm => {
298
+ return this.processManyToMany(data, Object.assign(Object.assign({}, actualOptions), { transactionManager: tm }));
299
+ });
300
+ }
301
+ const { columnQuotesSymbol: cqs } = this.qb;
302
+ let deleteQuery = `delete from ${cqs}${tableName}${cqs} where `;
303
+ let runDeleteQuery = false;
304
+ let insertQuery = `insert into ${cqs}${tableName}${cqs} (${cqs}${currentEntityColumn}${cqs}, ${cqs}${counterpartColumn}${cqs}) values `;
305
+ let runInsertQuery = false;
306
+ items.forEach(item => {
307
+ const { deleted, value } = item;
308
+ if (deleted) {
309
+ if (runDeleteQuery) {
310
+ deleteQuery += ' or ';
311
+ }
312
+ else {
313
+ runDeleteQuery = true;
314
+ }
315
+ deleteQuery += `(${cqs}${currentEntityColumn}${cqs} = ${id} and ${cqs}${counterpartColumn}${cqs} = ${value})`;
316
+ return;
317
+ }
318
+ if (runInsertQuery) {
319
+ insertQuery += ', ';
320
+ }
321
+ else {
322
+ runInsertQuery = true;
323
+ }
324
+ insertQuery += `(${id}, ${value})`;
325
+ });
326
+ if (runDeleteQuery) {
327
+ yield transactionManager.query(deleteQuery);
328
+ }
329
+ if (runInsertQuery) {
330
+ yield transactionManager.query(`${insertQuery} on conflict do nothing`);
331
+ }
332
+ });
333
+ }
334
+ save(data, transactionManager, options) {
335
+ return __awaiter(this, void 0, void 0, function* () {
336
+ const { columNames, repository } = this;
337
+ const { processObjectAllowedFieldsEnabled } = options || {};
338
+ const dataToSave = yield this.processObjectAllowedFields(data, {
339
+ allowedFields: columNames,
340
+ isEnabled: processObjectAllowedFieldsEnabled,
341
+ objectType: core_1.ProcessObjectAllowedFieldsType.Input
342
+ });
343
+ try {
344
+ if (transactionManager) {
345
+ return (yield transactionManager.save(repository.target, dataToSave));
346
+ }
347
+ return repository.save(dataToSave);
348
+ }
349
+ catch (e) {
350
+ const error = e;
351
+ if (error.code === rdb_entity_service_definitions_1.PostgresErrorCode.UniqueViolation) {
352
+ const extractVariableName = new RegExp(/^Key \((.*)\)\=(.*)$/g);
353
+ const result = extractVariableName.exec(error.detail);
354
+ throw new core_1.ApplicationError(`${error.table}: ${result ? result[1] : 'a column value you have provided'} needs to be unique`);
355
+ }
356
+ throw e;
357
+ }
358
+ });
359
+ }
360
+ update(data, options, privateOptions) {
361
+ return __awaiter(this, void 0, void 0, function* () {
362
+ const { columNames, repository } = this;
363
+ const { filters, forceTransaction, returnData, returnOriginalItems, transactionManager } = options;
364
+ const { processFiltersAllowedFieldsEnabled, processInputAllowedFieldsEnabled, withDeleted = false } = privateOptions || {};
365
+ if (!transactionManager && forceTransaction) {
366
+ return repository.manager.transaction(tm => {
367
+ return this.update(data, Object.assign(Object.assign({}, options), { transactionManager: tm }), privateOptions);
368
+ });
369
+ }
370
+ const dataToUpdate = (yield this.processObjectAllowedFields(data instanceof Array ? data[0] : data, {
371
+ allowedFields: columNames,
372
+ isEnabled: processInputAllowedFieldsEnabled,
373
+ objectType: core_1.ProcessObjectAllowedFieldsType.Input
374
+ }));
375
+ if (!Object.keys(dataToUpdate).length) {
376
+ throw new core_1.ApplicationError('At least one field for update is required.');
377
+ }
378
+ const entityName = repository.metadata.name;
379
+ const tableName = repository.metadata.tableName;
380
+ const processedFilters = (yield this.processObjectAllowedFields(filters, {
381
+ allowedFields: this.columNames,
382
+ isEnabled: processFiltersAllowedFieldsEnabled,
383
+ objectType: core_1.ProcessObjectAllowedFieldsType.Filters
384
+ }));
385
+ if (!Object.keys(processedFilters).length) {
386
+ throw new core_1.ApplicationError('At least one filter field for update is required.');
387
+ }
388
+ const queryBuilder = this.getRepository(transactionManager)
389
+ .createQueryBuilder(entityName)
390
+ .update()
391
+ .set(dataToUpdate);
392
+ const { where: parsedWhere, include } = this.qb.parseFilters(tableName, processedFilters, {
393
+ fieldAliases: this.columnAliases
394
+ });
395
+ const hasInclude = Object.keys(include).length;
396
+ let originalItems = [];
397
+ let where = {};
398
+ if (hasInclude || returnOriginalItems) {
399
+ const findData = yield this.find({ filters: processedFilters, findAll: true, transactionManager }, { processFiltersAllowedFieldsEnabled: false });
400
+ const { field, value } = this.buildPrimaryKeyWhereClause(findData.items);
401
+ originalItems = findData.items;
402
+ where[field] = value;
403
+ }
404
+ else {
405
+ where = parsedWhere;
406
+ }
407
+ this.qb.buildQuery(queryBuilder, { deletedColumnName: this.deletedColumnName, where, withDeleted });
408
+ const dataToReturn = {};
409
+ if (returnOriginalItems) {
410
+ dataToReturn.originalItems = originalItems;
411
+ }
412
+ if (returnData) {
413
+ let result;
414
+ if (this.qb.returningSupported) {
415
+ result = yield queryBuilder.returning('*').execute();
416
+ }
417
+ else {
418
+ result = yield queryBuilder.execute();
419
+ const { items: updatedItems } = yield this.find({
420
+ filters: processedFilters,
421
+ findAll: true,
422
+ transactionManager
423
+ }, { processFiltersAllowedFieldsEnabled: false });
424
+ if (hasInclude) {
425
+ const keysToDelete = [];
426
+ for (const entityName in include) {
427
+ keysToDelete.push(entityName.split('.')[0]);
428
+ }
429
+ updatedItems.forEach((updatedItem, updatedItemIndex) => {
430
+ keysToDelete.forEach(keyToDelete => delete updatedItem[keyToDelete]);
431
+ updatedItems[updatedItemIndex] = updatedItem;
432
+ });
433
+ }
434
+ result.raw = updatedItems;
435
+ }
436
+ dataToReturn.count = result.raw.length;
437
+ dataToReturn.items = result.raw;
438
+ }
439
+ else {
440
+ const result = yield queryBuilder.execute();
441
+ dataToReturn.count = typeof result.affected === 'number' ? result.affected : undefined;
442
+ }
443
+ return dataToReturn;
444
+ });
445
+ }
446
+ }
447
+ exports.RDBEntityService = RDBEntityService;
448
+ //# 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';