@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
@@ -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.repository.definitions"), exports);
18
- __exportStar(require("./rdb.repository.module"), exports);
17
+ __exportStar(require("./rdb.repository"), exports);
19
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,+DAA6C;AAC7C,0DAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
@@ -1,7 +1,27 @@
1
- import { EntityClassOrSchema } from '@nestjs/typeorm/dist/interfaces/entity-class-or-schema.type';
2
- import { DataSource, ObjectLiteral, Repository } from 'typeorm';
3
- export declare class RDBRepository<Entity extends ObjectLiteral> extends Repository<Entity> {
4
- protected entityClass: EntityClassOrSchema;
5
- protected dataSource: DataSource;
6
- constructor(entityClass: EntityClassOrSchema, dataSource: DataSource);
1
+ import { GenericObject, GenericObjectType } from '@node-c/core';
2
+ import { OrmSelectQueryBuilder } from '../ormQueryBuilder';
3
+ export declare abstract class RDBEntityManager {
4
+ abstract getRepository<Entity extends GenericObject<unknown>>(_target: unknown): RDBRepository<Entity>;
5
+ abstract query(_query: string, _params?: unknown[]): Promise<unknown>;
6
+ abstract save<Entity extends GenericObject<unknown> = GenericObject<unknown>>(_target: unknown, _data: Partial<Entity> | Partial<Entity[]>, _options?: unknown): Promise<unknown>;
7
+ abstract transaction(_callback: (_em: RDBEntityManager) => Promise<unknown>): Promise<unknown>;
8
+ }
9
+ export type RDBEntityTarget<Entity> = string | {
10
+ name: string;
11
+ type: Entity;
12
+ } | GenericObjectType<Entity>;
13
+ export declare abstract class RDBRepository<Entity extends GenericObject<unknown>> {
14
+ manager: RDBEntityManager;
15
+ metadata: {
16
+ name: string;
17
+ relations?: {
18
+ joinTableName?: string;
19
+ relationType: string;
20
+ target: string | unknown;
21
+ }[];
22
+ tableName: string;
23
+ };
24
+ target: unknown;
25
+ abstract createQueryBuilder(_entityName: string, _queryRunner?: unknown): OrmSelectQueryBuilder<Entity>;
26
+ abstract save(_data: Partial<Entity> | Partial<Entity[]>, _options?: unknown): Promise<unknown>;
7
27
  }
@@ -1,31 +1,10 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
2
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.RDBRepository = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const typeorm_1 = require("typeorm");
18
- let RDBRepository = class RDBRepository extends typeorm_1.Repository {
19
- constructor(entityClass, dataSource) {
20
- super(entityClass, dataSource.createEntityManager());
21
- this.entityClass = entityClass;
22
- this.dataSource = dataSource;
23
- }
24
- };
3
+ exports.RDBRepository = exports.RDBEntityManager = void 0;
4
+ class RDBEntityManager {
5
+ }
6
+ exports.RDBEntityManager = RDBEntityManager;
7
+ class RDBRepository {
8
+ }
25
9
  exports.RDBRepository = RDBRepository;
26
- exports.RDBRepository = RDBRepository = __decorate([
27
- (0, common_1.Injectable)(),
28
- __param(0, (0, common_1.Inject)('RDB_REPOSITORY_ENTITY_CLASS')),
29
- __metadata("design:paramtypes", [Object, typeorm_1.DataSource])
30
- ], RDBRepository);
31
10
  //# sourceMappingURL=rdb.repository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rdb.repository.js","sourceRoot":"","sources":["../../src/repository/rdb.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAGpD,qCAAgE;AAGzD,IAAM,aAAa,GAAnB,MAAM,aAA4C,SAAQ,oBAAkB;IACjF,YAEY,WAAgC,EAEhC,UAAsB;QAEhC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAJ3C,gBAAW,GAAX,WAAW,CAAqB;QAEhC,eAAU,GAAV,UAAU,CAAY;IAGlC,CAAC;CACF,CAAA;AATY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,6BAA6B,CAAC,CAAA;6CAGhB,oBAAU;GALvB,aAAa,CASzB"}
1
+ {"version":3,"file":"rdb.repository.js","sourceRoot":"","sources":["../../src/repository/rdb.repository.ts"],"names":[],"mappings":";;;AAIA,MAAsB,gBAAgB;CASrC;AATD,4CASC;AAID,MAAsB,aAAa;CAWlC;AAXD,sCAWC"}
@@ -1,3 +1,3 @@
1
- export * from './sqlQueryBuilder.definitions';
2
- export * from './sqlQueryBuilder.module';
3
- export * from './sqlQueryBuilder.service';
1
+ export * from './rdb.sqlQueryBuilder.definitions';
2
+ export * from './rdb.sqlQueryBuilder.module';
3
+ export * from './rdb.sqlQueryBuilder.service';
@@ -14,7 +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("./sqlQueryBuilder.definitions"), exports);
18
- __exportStar(require("./sqlQueryBuilder.module"), exports);
19
- __exportStar(require("./sqlQueryBuilder.service"), exports);
17
+ __exportStar(require("./rdb.sqlQueryBuilder.definitions"), exports);
18
+ __exportStar(require("./rdb.sqlQueryBuilder.module"), exports);
19
+ __exportStar(require("./rdb.sqlQueryBuilder.service"), exports);
20
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sqlQueryBuilder/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,2DAAyC;AACzC,4DAA0C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sqlQueryBuilder/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAkD;AAClD,+DAA6C;AAC7C,gEAA8C"}
@@ -1,8 +1,8 @@
1
- import { GenericObject } from '@node-c/core';
1
+ import { GenericObject, PersistanceOrderBy } from '@node-c/core';
2
2
  export interface BuildQueryOptions {
3
3
  deletedColumnName?: string;
4
4
  include?: IncludeItems;
5
- orderBy?: OrderBy[];
5
+ orderBy?: PersistanceOrderBy[];
6
6
  select?: string[];
7
7
  where?: {
8
8
  [fieldName: string]: ParsedFilter;
@@ -12,10 +12,6 @@ export interface BuildQueryOptions {
12
12
  export interface IncludeItems {
13
13
  [relationProperty: string]: string;
14
14
  }
15
- export interface OrderBy {
16
- field: string;
17
- direction: 'ASC' | 'DESC';
18
- }
19
15
  export interface ParsedFilter {
20
16
  params?: GenericObject<unknown>;
21
17
  query: string;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=rdb.repository.definitions.js.map
3
+ //# sourceMappingURL=rdb.sqlQueryBuilder.definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rdb.sqlQueryBuilder.definitions.js","sourceRoot":"","sources":["../../src/sqlQueryBuilder/rdb.sqlQueryBuilder.definitions.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import { DynamicModule } from '@nestjs/common';
2
- import { SQLQueryBuilderModuleOptions } from './sqlQueryBuilder.definitions';
2
+ import { SQLQueryBuilderModuleOptions } from './rdb.sqlQueryBuilder.definitions';
3
3
  export declare class SQLQueryBuilderModule {
4
4
  static register(options: SQLQueryBuilderModuleOptions): DynamicModule;
5
5
  }
@@ -9,7 +9,8 @@ var SQLQueryBuilderModule_1;
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.SQLQueryBuilderModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
- const sqlQueryBuilder_service_1 = require("./sqlQueryBuilder.service");
12
+ const core_1 = require("@node-c/core");
13
+ const rdb_sqlQueryBuilder_service_1 = require("./rdb.sqlQueryBuilder.service");
13
14
  const definitions_1 = require("../common/definitions");
14
15
  let SQLQueryBuilderModule = SQLQueryBuilderModule_1 = class SQLQueryBuilderModule {
15
16
  static register(options) {
@@ -23,9 +24,13 @@ let SQLQueryBuilderModule = SQLQueryBuilderModule_1 = class SQLQueryBuilderModul
23
24
  provide: definitions_1.Constants.SQL_BUILDER_DB_CONFIG_PATH,
24
25
  useValue: `config.persistance.${persistanceModuleName}`
25
26
  },
26
- { provide: serviceToken, useClass: sqlQueryBuilder_service_1.SQLQueryBuilderService }
27
+ {
28
+ provide: core_1.Constants.PERSISTANCE_MODULE_NAME,
29
+ useValue: persistanceModuleName
30
+ },
31
+ { provide: serviceToken, useClass: rdb_sqlQueryBuilder_service_1.SQLQueryBuilderService }
27
32
  ],
28
- exports: [{ provide: serviceToken, useClass: sqlQueryBuilder_service_1.SQLQueryBuilderService }]
33
+ exports: [{ provide: serviceToken, useClass: rdb_sqlQueryBuilder_service_1.SQLQueryBuilderService }]
29
34
  };
30
35
  }
31
36
  };
@@ -33,4 +38,4 @@ exports.SQLQueryBuilderModule = SQLQueryBuilderModule;
33
38
  exports.SQLQueryBuilderModule = SQLQueryBuilderModule = SQLQueryBuilderModule_1 = __decorate([
34
39
  (0, common_1.Module)({})
35
40
  ], SQLQueryBuilderModule);
36
- //# sourceMappingURL=sqlQueryBuilder.module.js.map
41
+ //# sourceMappingURL=rdb.sqlQueryBuilder.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rdb.sqlQueryBuilder.module.js","sourceRoot":"","sources":["../../src/sqlQueryBuilder/rdb.sqlQueryBuilder.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AAEvD,uCAA0D;AAG1D,+EAAuE;AAEvE,uDAAkD;AAG3C,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAChC,MAAM,CAAC,QAAQ,CAAC,OAAqC;QACnD,MAAM,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC;QAC1C,MAAM,YAAY,GAAG,GAAG,qBAAqB,GAAG,uBAAS,CAAC,gCAAgC,EAAE,CAAC;QAC7F,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,uBAAqB;YAC7B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,uBAAS,CAAC,0BAA0B;oBAC7C,QAAQ,EAAE,sBAAsB,qBAAqB,EAAE;iBACxD;gBACD;oBACE,OAAO,EAAE,gBAAa,CAAC,uBAAuB;oBAC9C,QAAQ,EAAE,qBAAqB;iBAChC;gBACD,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,oDAAsB,EAAE;aAC5D;YACD,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,oDAAsB,EAAE,CAAC;SACvE,CAAC;IACJ,CAAC;CACF,CAAA;AArBY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,qBAAqB,CAqBjC"}
@@ -0,0 +1,47 @@
1
+ import { ConfigProviderService, GenericObject, PersistanceOrderBy, PersistanceOrderByDirection, PersistanceSelectOperator, RDBType } from '@node-c/core';
2
+ import { BuildQueryOptions, IncludeItems, ParsedFilter } from './rdb.sqlQueryBuilder.definitions';
3
+ import { OrmBaseQueryBuilder, OrmSelectQueryBuilder } from '../ormQueryBuilder';
4
+ export declare class SQLQueryBuilderService {
5
+ configProvider: ConfigProviderService;
6
+ dbConfigPath: string;
7
+ persistanceModuleName: string;
8
+ allowedStringOperators: string[];
9
+ columnQuotesSymbol: string;
10
+ dbType: RDBType | string;
11
+ iLikeSupported: boolean;
12
+ returningSupported: boolean;
13
+ constructor(configProvider: ConfigProviderService, dbConfigPath: string, persistanceModuleName: string);
14
+ buildQuery<Entity>(ormQueryBuilder: OrmBaseQueryBuilder<Entity> | OrmSelectQueryBuilder<Entity>, options: BuildQueryOptions): void;
15
+ protected getValueForFilter(entityName: string, _fieldName: string, fieldAlias: string, fieldValue: unknown, isNot: boolean, operator?: PersistanceSelectOperator): ParsedFilter;
16
+ protected parseArrayOfFilters(filtersArray: unknown[], fieldAlias: string): {
17
+ hasValues: boolean;
18
+ isSimple: boolean;
19
+ paramsForQuery: GenericObject;
20
+ queryTemplateParamNames: string;
21
+ };
22
+ parseFilters(entityName: string, filters: GenericObject, options?: {
23
+ fieldAliases?: {
24
+ [fieldName: string]: string;
25
+ };
26
+ isTopLevel?: boolean;
27
+ operator?: PersistanceSelectOperator;
28
+ parameterNamesToFieldAliasesMap?: {
29
+ [fieldName: string]: string;
30
+ };
31
+ }): {
32
+ where: {
33
+ [fieldName: string]: ParsedFilter;
34
+ };
35
+ include: IncludeItems;
36
+ };
37
+ protected parseInnerFilters(entityName: string, filtersObject: GenericObject, fieldName: string, fieldAlias: string, operator?: PersistanceSelectOperator): {
38
+ parsedFilter: ParsedFilter;
39
+ include: IncludeItems;
40
+ };
41
+ parseRelations(entityName: string, include: string[], currentInclude?: IncludeItems): IncludeItems;
42
+ parseOrderBy(entityName: string, orderByData: GenericObject<PersistanceOrderByDirection>): {
43
+ include: IncludeItems;
44
+ orderBy: PersistanceOrderBy[];
45
+ };
46
+ parseSelect(selectFields: string[], include?: IncludeItems): string[];
47
+ }
@@ -11,52 +11,64 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
14
17
  Object.defineProperty(exports, "__esModule", { value: true });
15
18
  exports.SQLQueryBuilderService = void 0;
16
19
  const common_1 = require("@nestjs/common");
17
20
  const core_1 = require("@node-c/core");
18
- const general_tools_1 = require("@ramster/general-tools");
19
- const typeorm_1 = require("typeorm");
21
+ const lodash_1 = __importDefault(require("lodash"));
20
22
  const definitions_1 = require("../common/definitions");
21
23
  let SQLQueryBuilderService = class SQLQueryBuilderService {
22
- constructor(configProvider, dbConfigPath) {
24
+ constructor(configProvider, dbConfigPath, persistanceModuleName) {
23
25
  this.configProvider = configProvider;
24
26
  this.dbConfigPath = dbConfigPath;
27
+ this.persistanceModuleName = persistanceModuleName;
25
28
  this.allowedStringOperators = Object.values(core_1.PersistanceSelectOperator);
26
- const { type } = (0, general_tools_1.getNested)(configProvider, dbConfigPath);
29
+ const { type } = lodash_1.default.get(configProvider, dbConfigPath);
27
30
  this.dbType = type;
28
- if (type === core_1.RDBType.MySQL) {
31
+ if (type === core_1.RDBType.Aurora || type === core_1.RDBType.ClickHouse || type === core_1.RDBType.MySQL) {
29
32
  this.columnQuotesSymbol = '`';
30
33
  this.iLikeSupported = false;
34
+ this.returningSupported = false;
31
35
  }
32
36
  else if (type === core_1.RDBType.PG) {
33
37
  this.columnQuotesSymbol = '"';
34
38
  this.iLikeSupported = true;
39
+ this.returningSupported = true;
35
40
  }
36
41
  }
37
- buildQuery(queryBuilder, options) {
38
- const { where, include, orderBy, select, withDeleted = false } = options;
42
+ buildQuery(ormQueryBuilder, options) {
43
+ const { where: optWhere, include, orderBy, select, withDeleted } = options;
39
44
  const cqs = this.columnQuotesSymbol;
40
45
  const deletedColumnName = options.deletedColumnName || 'deletedAt';
41
- if (queryBuilder instanceof typeorm_1.SelectQueryBuilder) {
46
+ const where = Object.assign({}, (optWhere || {}));
47
+ if ('withDeleted' in ormQueryBuilder) {
48
+ const oqb = ormQueryBuilder;
42
49
  if (withDeleted) {
43
- queryBuilder.withDeleted();
50
+ oqb.withDeleted();
44
51
  }
45
52
  if (include) {
46
53
  for (const relationProperty in include) {
47
54
  if (withDeleted) {
48
- queryBuilder.leftJoinAndSelect(relationProperty, include[relationProperty]);
55
+ oqb.leftJoinAndSelect(relationProperty, include[relationProperty]);
49
56
  }
50
57
  else {
51
- queryBuilder.leftJoinAndSelect(relationProperty, include[relationProperty], `${cqs}${include[relationProperty]}${cqs}.${cqs}${deletedColumnName}${cqs} IS NULL`);
58
+ oqb.leftJoinAndSelect(relationProperty, include[relationProperty], `${cqs}${include[relationProperty]}${cqs}.${cqs}${deletedColumnName}${cqs} IS NULL`);
52
59
  }
53
60
  }
54
61
  }
55
62
  if (select && select.length) {
56
- queryBuilder.select(this.parseSelect(select, include));
63
+ oqb.select(this.parseSelect(select, include));
57
64
  }
58
65
  }
59
- if (where) {
66
+ else if (withDeleted === false) {
67
+ where[deletedColumnName] = {
68
+ query: `${cqs}${deletedColumnName}${cqs} IS NULL`
69
+ };
70
+ }
71
+ if (Object.keys(where).length) {
60
72
  let isFirst = true;
61
73
  for (const fieldName in where) {
62
74
  const whereItem = where[fieldName];
@@ -70,10 +82,11 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
70
82
  else {
71
83
  methodName = fieldName === core_1.PersistanceSelectOperator.Or ? 'orWhere' : 'andWhere';
72
84
  }
73
- queryBuilder[methodName](whereItem.query, whereItem.params);
85
+ ormQueryBuilder[methodName](whereItem.query, whereItem.params);
74
86
  }
75
87
  }
76
- if (orderBy && queryBuilder instanceof typeorm_1.SelectQueryBuilder) {
88
+ if (orderBy && 'orderBy' in ormQueryBuilder) {
89
+ const oqb = ormQueryBuilder;
77
90
  let isFirst = true;
78
91
  for (const item of orderBy) {
79
92
  let methodName = 'addOrderBy';
@@ -81,18 +94,18 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
81
94
  methodName = 'orderBy';
82
95
  isFirst = false;
83
96
  }
84
- queryBuilder[methodName](item.field, item.direction);
97
+ oqb[methodName](item.field, item.direction);
85
98
  }
86
99
  }
87
100
  }
88
- getValueForFilter(entityName, fieldName, fieldAlias, fieldValue, isNot, operator) {
101
+ getValueForFilter(entityName, _fieldName, fieldAlias, fieldValue, isNot, operator) {
89
102
  const { columnQuotesSymbol: cqs, dbType } = this;
90
103
  const escapedFieldAlias = fieldAlias.replace(/\$/, '__ds__');
91
- const fieldString = `${cqs}${entityName}${cqs}.${cqs}${fieldName}${cqs}`;
104
+ const fieldString = `${cqs}${entityName}${cqs}.${cqs}${fieldAlias}${cqs}`;
92
105
  let parsedInnerValue = fieldValue instanceof Date ? fieldValue.valueOf() : fieldValue;
93
106
  if (operator === core_1.PersistanceSelectOperator.Contains) {
94
107
  let query = '';
95
- if (dbType === core_1.RDBType.MySQL) {
108
+ if (dbType === core_1.RDBType.Aurora || dbType === core_1.RDBType.ClickHouse || dbType === core_1.RDBType.MySQL) {
96
109
  query = `JSON_CONTAINS(${fieldString}, :${escapedFieldAlias})`;
97
110
  parsedInnerValue = `"${parsedInnerValue}"`;
98
111
  }
@@ -187,6 +200,7 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
187
200
  const cqs = this.columnQuotesSymbol;
188
201
  const { isTopLevel, operator } = options;
189
202
  const fieldAliases = options.fieldAliases || {};
203
+ const parameterNamesToFieldAliasesMap = options.parameterNamesToFieldAliasesMap || {};
190
204
  const where = {};
191
205
  let include = {};
192
206
  for (const fieldName in filters) {
@@ -194,8 +208,8 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
194
208
  if (typeof fieldValue === 'undefined') {
195
209
  continue;
196
210
  }
197
- const fieldAlias = fieldAliases[fieldName] || fieldName;
198
211
  const isNot = operator === core_1.PersistanceSelectOperator.Not;
212
+ let fieldAlias = fieldAliases[fieldName];
199
213
  if (fieldName.match(/\./)) {
200
214
  const fieldData = fieldName.split('.');
201
215
  const finalItemIndex = fieldData.length - 1;
@@ -204,12 +218,16 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
204
218
  let previousEntityAlias = `${entityName}`;
205
219
  for (let i = 0; i < finalItemIndex; i++) {
206
220
  const currentEntityName = fieldData[i];
207
- entityAlias += `_${currentEntityName}`;
221
+ entityAlias += `__${currentEntityName}`;
208
222
  include[`${previousEntityAlias}.${currentEntityName}`] = entityAlias;
209
223
  previousEntityAlias = `${entityAlias}`;
210
224
  }
225
+ if (!fieldAlias) {
226
+ fieldAlias = actualFieldName;
227
+ }
228
+ const actualFieldAlias = parameterNamesToFieldAliasesMap[fieldAlias] || fieldAlias;
211
229
  const itemData = this.parseFilters(entityAlias, { [actualFieldName]: fieldValue }, {
212
- fieldAliases: { [actualFieldName]: fieldAlias },
230
+ fieldAliases: { [actualFieldName]: actualFieldAlias },
213
231
  isTopLevel: false,
214
232
  operator
215
233
  });
@@ -217,14 +235,18 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
217
235
  include = Object.assign(Object.assign({}, include), itemData.include);
218
236
  continue;
219
237
  }
238
+ if (!fieldAlias) {
239
+ fieldAlias = fieldName;
240
+ }
241
+ const actualFieldAlias = parameterNamesToFieldAliasesMap[fieldAlias] || fieldAlias;
220
242
  if (fieldValue === null) {
221
243
  where[fieldName] = {
222
- query: `${cqs}${entityName}${cqs}.${cqs}${fieldName}${cqs} is${isNot ? ' not ' : ' '}null`
244
+ query: `${cqs}${entityName}${cqs}.${cqs}${actualFieldAlias}${cqs} is${isNot ? ' not ' : ' '}null`
223
245
  };
224
246
  continue;
225
247
  }
226
248
  if (fieldValue instanceof Array) {
227
- const { hasValues, isSimple, paramsForQuery, queryTemplateParamNames } = this.parseArrayOfFilters(fieldValue, fieldAlias);
249
+ const { hasValues, isSimple, paramsForQuery, queryTemplateParamNames } = this.parseArrayOfFilters(fieldValue, actualFieldAlias);
228
250
  if (!hasValues) {
229
251
  continue;
230
252
  }
@@ -232,14 +254,14 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
232
254
  if (operator === core_1.PersistanceSelectOperator.Between) {
233
255
  where[fieldName] = {
234
256
  params: paramsForQuery,
235
- query: `${cqs}${entityName}${cqs}.${cqs}${fieldName}${cqs}${isNot ? ' not ' : ' '}` +
236
- `between :${fieldAlias}_0 and :${fieldAlias}_1`
257
+ query: `${cqs}${entityName}${cqs}.${cqs}${actualFieldAlias}${cqs}${isNot ? ' not ' : ' '}` +
258
+ `between :${actualFieldAlias}_0 and :${actualFieldAlias}_1`
237
259
  };
238
260
  continue;
239
261
  }
240
262
  where[fieldName] = {
241
263
  params: paramsForQuery,
242
- query: `${cqs}${entityName}${cqs}.${cqs}${fieldName}${cqs}${isNot ? ' not ' : ' '}` +
264
+ query: `${cqs}${entityName}${cqs}.${cqs}${actualFieldAlias}${cqs}${isNot ? ' not ' : ' '}` +
243
265
  `in (${queryTemplateParamNames.replace(/,\s$/, '')})`
244
266
  };
245
267
  continue;
@@ -247,7 +269,7 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
247
269
  if (isTopLevel && fieldName === core_1.PersistanceSelectOperator.Or) {
248
270
  const finalWhereValue = { params: {}, query: '' };
249
271
  fieldValue.forEach((orFieldValue, orFieldIndex) => {
250
- const itemData = this.parseInnerFilters(entityName, orFieldValue, fieldName, `${fieldAlias}_${orFieldIndex}_f`, operator);
272
+ const itemData = this.parseInnerFilters(entityName, orFieldValue, fieldName, `${actualFieldAlias}_${orFieldIndex}_f`, operator);
251
273
  finalWhereValue.params = Object.assign(Object.assign({}, finalWhereValue.params), (itemData.parsedFilter.params || {}));
252
274
  finalWhereValue.query += `${finalWhereValue.query.length ? ' or ' : '('}${itemData.parsedFilter.query}`;
253
275
  include = Object.assign(Object.assign({}, include), itemData.include);
@@ -256,7 +278,7 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
256
278
  where[fieldName] = finalWhereValue;
257
279
  }
258
280
  else {
259
- const itemData = this.parseInnerFilters(entityName, fieldValue, fieldName, fieldAlias, operator);
281
+ const itemData = this.parseInnerFilters(entityName, fieldValue, fieldName, actualFieldAlias, operator);
260
282
  if (itemData.parsedFilter.query === '()') {
261
283
  continue;
262
284
  }
@@ -266,12 +288,12 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
266
288
  continue;
267
289
  }
268
290
  if (typeof fieldValue === 'object' && !(fieldValue instanceof Date)) {
269
- const itemData = this.parseInnerFilters(entityName, fieldValue, fieldName, fieldAlias, operator);
291
+ const itemData = this.parseInnerFilters(entityName, fieldValue, fieldName, actualFieldAlias, operator);
270
292
  where[fieldName] = itemData.parsedFilter;
271
293
  include = Object.assign(Object.assign({}, include), itemData.include);
272
294
  continue;
273
295
  }
274
- where[fieldName] = this.getValueForFilter(entityName, fieldName, fieldAlias, fieldValue, isNot, operator);
296
+ where[fieldName] = this.getValueForFilter(entityName, fieldName, actualFieldAlias, fieldValue, isNot, operator);
275
297
  }
276
298
  return { where, include };
277
299
  }
@@ -287,11 +309,13 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
287
309
  op = key;
288
310
  }
289
311
  const actualFieldName = fieldName === core_1.PersistanceSelectOperator.Or ? key : fieldName;
312
+ const fieldParameterName = `${fieldAlias}_${parsedValueCount}`;
290
313
  const innerValue = filtersObject[key];
291
314
  const itemData = this.parseFilters(entityName, { [actualFieldName]: innerValue }, {
292
- fieldAliases: { [actualFieldName]: `${fieldAlias}_${parsedValueCount}` },
315
+ fieldAliases: { [actualFieldName]: fieldParameterName },
293
316
  isTopLevel: false,
294
- operator: op
317
+ operator: op,
318
+ parameterNamesToFieldAliasesMap: { [fieldParameterName]: fieldAlias }
295
319
  });
296
320
  const fieldWhereData = itemData.where[actualFieldName];
297
321
  if (!fieldWhereData) {
@@ -314,7 +338,7 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
314
338
  let entityAlias = `${entityName}`;
315
339
  let previousEntityAlias = `${entityName}`;
316
340
  includeData.forEach(currentEntityName => {
317
- entityAlias += `_${currentEntityName}`;
341
+ entityAlias += `__${currentEntityName}`;
318
342
  resultInclude[`${previousEntityAlias}.${currentEntityName}`] = entityAlias;
319
343
  previousEntityAlias = `${entityAlias}`;
320
344
  });
@@ -325,7 +349,9 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
325
349
  const orderBy = [];
326
350
  let include = {};
327
351
  for (const fieldName in orderByData) {
328
- const direction = orderByData[fieldName].toLowerCase() === 'desc' ? 'DESC' : 'ASC';
352
+ const direction = orderByData[fieldName].toLowerCase() === 'desc'
353
+ ? core_1.PersistanceOrderByDirection.Desc
354
+ : core_1.PersistanceOrderByDirection.Asc;
329
355
  const item = { field: `${entityName}.${fieldName}`, direction };
330
356
  if (fieldName.match(/\./)) {
331
357
  const fieldData = fieldName.split('.');
@@ -371,6 +397,7 @@ exports.SQLQueryBuilderService = SQLQueryBuilderService;
371
397
  exports.SQLQueryBuilderService = SQLQueryBuilderService = __decorate([
372
398
  (0, common_1.Injectable)(),
373
399
  __param(1, (0, common_1.Inject)(definitions_1.Constants.SQL_BUILDER_DB_CONFIG_PATH)),
374
- __metadata("design:paramtypes", [core_1.ConfigProviderService, String])
400
+ __param(2, (0, common_1.Inject)(core_1.Constants.PERSISTANCE_MODULE_NAME)),
401
+ __metadata("design:paramtypes", [core_1.ConfigProviderService, String, String])
375
402
  ], SQLQueryBuilderService);
376
- //# sourceMappingURL=sqlQueryBuilder.service.js.map
403
+ //# sourceMappingURL=rdb.sqlQueryBuilder.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rdb.sqlQueryBuilder.service.js","sourceRoot":"","sources":["../../src/sqlQueryBuilder/rdb.sqlQueryBuilder.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,22 +1,25 @@
1
1
  {
2
2
  "name": "@node-c/persistance-rdb",
3
- "version": "1.0.0-alpha4",
3
+ "version": "1.0.0-alpha41",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
7
7
  "build": "tsc -p tsconfig.build.json",
8
+ "build:clean": "rm -rf dist/* && rm -f *.tsbuildinfo && npm run build",
8
9
  "check-types": "tsc -p tsconfig.build.json --noEmit",
9
10
  "dev": "tsc -p tsconfig.build.json --watch",
10
- "publish-package": "rm -rf dist/* && rm -f *.tsbuildinfo && npm run build && npm publish --access public",
11
+ "publish-package": "npm run build:clean && npm publish --access public",
11
12
  "test": "vitest --config src/vitest.config.ts",
12
13
  "test:coverage": "vitest --config src/vitest.config.ts --coverage"
13
14
  },
14
15
  "dependencies": {
15
16
  "@nestjs/common": "^10.4.12",
16
- "@nestjs/typeorm": "^10.0.2",
17
- "@node-c/core": "^1.0.0-alpha4",
17
+ "@node-c/core": "^1.0.0-alpha41",
18
18
  "class-validator": "^0.14.1",
19
- "typeorm": "^0.3.20",
19
+ "lodash": "^4.17.21",
20
20
  "uuid": "^11.0.5"
21
+ },
22
+ "devDependencies": {
23
+ "@types/lodash": "^4.17.19"
21
24
  }
22
25
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entityService/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mEAAiD;AACjD,uDAAqC"}
@@ -1,34 +0,0 @@
1
- import { PersistanceDeleteResult, PersistanceEntityService, PersistanceFindResults, PersistanceNumberItem, PersistanceUpdateResult } from '@node-c/core';
2
- import { EntityManager, EntitySchema, EntityTarget, ObjectLiteral, Repository } from 'typeorm';
3
- import { BulkCreateOptions, CountOptions, CreateOptions, DeleteOptions, FindOneOptions, FindOptions, UpdateOptions } from './rdb.entity.service.definitions';
4
- import { ParsedFilter, SQLQueryBuilderService } from '../sqlQueryBuilder';
5
- export declare class RDBEntityService<Entity extends ObjectLiteral> extends PersistanceEntityService<Entity> {
6
- protected qb: SQLQueryBuilderService;
7
- protected repository: Repository<Entity>;
8
- protected schema: EntitySchema;
9
- protected primaryKeys: string[];
10
- constructor(qb: SQLQueryBuilderService, repository: Repository<Entity>, schema: EntitySchema);
11
- protected buildPrimaryKeyWhereClause(data: Entity[]): {
12
- field: string;
13
- value: ParsedFilter;
14
- };
15
- bulkCreate(data: Partial<Entity>[], options?: BulkCreateOptions): Promise<Entity[]>;
16
- create(data: Partial<Entity>, options?: CreateOptions): Promise<Entity>;
17
- count(options: CountOptions): Promise<number | undefined>;
18
- delete(options: DeleteOptions): Promise<PersistanceDeleteResult>;
19
- find(options: FindOptions): Promise<PersistanceFindResults<Entity>>;
20
- findOne(options: FindOneOptions): Promise<Entity | null>;
21
- getEntityTarget(): EntityTarget<Entity>;
22
- protected getRepository(transactionManager?: EntityManager): Repository<Entity>;
23
- protected processManyToMany(data: {
24
- counterpartColumn: string;
25
- currentEntityColumn: string;
26
- id: number;
27
- items: PersistanceNumberItem[];
28
- tableName: string;
29
- }, options?: {
30
- transactionManager?: EntityManager;
31
- }): Promise<void>;
32
- protected save<Data = unknown, ReturnData = unknown>(data: Data, transactionManager?: EntityManager): Promise<ReturnData>;
33
- update(data: Entity, options: UpdateOptions): Promise<PersistanceUpdateResult<Entity>>;
34
- }