@node-c/persistance-rdb 1.0.0-alpha3 → 1.0.0-alpha31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/common/definitions/common.constants.d.ts +4 -0
- package/dist/common/definitions/common.constants.js +4 -0
- package/dist/common/definitions/common.constants.js.map +1 -1
- package/dist/{entityService → entity}/index.d.ts +2 -1
- package/dist/{entityService → entity}/index.js +2 -1
- package/dist/entity/index.js.map +1 -0
- package/dist/entity/rdb.entity.schema.d.ts +11 -0
- package/dist/{module/rdb.module.definitions.js → entity/rdb.entity.schema.js} +1 -1
- package/dist/entity/rdb.entity.schema.js.map +1 -0
- package/dist/entity/rdb.entity.service.d.ts +41 -0
- package/dist/entity/rdb.entity.service.definitions.d.ts +28 -0
- package/dist/entity/rdb.entity.service.definitions.js.map +1 -0
- package/dist/entity/rdb.entity.service.js +448 -0
- package/dist/entity/rdb.entity.service.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/ormQueryBuilder/index.d.ts +1 -0
- package/dist/{module → ormQueryBuilder}/index.js +1 -2
- package/dist/ormQueryBuilder/index.js.map +1 -0
- package/dist/ormQueryBuilder/rdb.ormQueryBuilder.d.ts +38 -0
- package/dist/ormQueryBuilder/rdb.ormQueryBuilder.js +16 -0
- package/dist/ormQueryBuilder/rdb.ormQueryBuilder.js.map +1 -0
- package/dist/repository/index.d.ts +1 -2
- package/dist/repository/index.js +1 -2
- package/dist/repository/index.js.map +1 -1
- package/dist/repository/rdb.repository.d.ts +22 -0
- package/dist/repository/rdb.repository.js +10 -0
- package/dist/repository/rdb.repository.js.map +1 -0
- package/dist/sqlQueryBuilder/index.d.ts +3 -3
- package/dist/sqlQueryBuilder/index.js +3 -3
- package/dist/sqlQueryBuilder/index.js.map +1 -1
- package/dist/sqlQueryBuilder/{sqlQueryBuilder.definitions.d.ts → rdb.sqlQueryBuilder.definitions.d.ts} +2 -6
- package/dist/{repository/rdb.repository.definitions.js → sqlQueryBuilder/rdb.sqlQueryBuilder.definitions.js} +1 -1
- package/dist/sqlQueryBuilder/rdb.sqlQueryBuilder.definitions.js.map +1 -0
- package/dist/sqlQueryBuilder/{sqlQueryBuilder.module.d.ts → rdb.sqlQueryBuilder.module.d.ts} +1 -1
- package/dist/sqlQueryBuilder/{sqlQueryBuilder.module.js → rdb.sqlQueryBuilder.module.js} +9 -4
- package/dist/sqlQueryBuilder/rdb.sqlQueryBuilder.module.js.map +1 -0
- package/dist/sqlQueryBuilder/rdb.sqlQueryBuilder.service.d.ts +47 -0
- package/dist/sqlQueryBuilder/{sqlQueryBuilder.service.js → rdb.sqlQueryBuilder.service.js} +71 -44
- package/dist/sqlQueryBuilder/rdb.sqlQueryBuilder.service.js.map +1 -0
- package/package.json +8 -5
- package/dist/entityService/index.js.map +0 -1
- package/dist/entityService/rdb.entity.service.d.ts +0 -34
- package/dist/entityService/rdb.entity.service.definitions.d.ts +0 -21
- package/dist/entityService/rdb.entity.service.definitions.js.map +0 -1
- package/dist/entityService/rdb.entity.service.js +0 -304
- package/dist/entityService/rdb.entity.service.js.map +0 -1
- package/dist/module/index.d.ts +0 -2
- package/dist/module/index.js.map +0 -1
- package/dist/module/rdb.module.d.ts +0 -5
- package/dist/module/rdb.module.definitions.d.ts +0 -15
- package/dist/module/rdb.module.definitions.js.map +0 -1
- package/dist/module/rdb.module.js +0 -45
- package/dist/module/rdb.module.js.map +0 -1
- package/dist/repository/rdb.repository.definitions.d.ts +0 -5
- package/dist/repository/rdb.repository.definitions.js.map +0 -1
- package/dist/repository/rdb.repository.module.d.ts +0 -6
- package/dist/repository/rdb.repository.module.js +0 -38
- package/dist/repository/rdb.repository.module.js.map +0 -1
- package/dist/sqlQueryBuilder/sqlQueryBuilder.definitions.js +0 -3
- package/dist/sqlQueryBuilder/sqlQueryBuilder.definitions.js.map +0 -1
- package/dist/sqlQueryBuilder/sqlQueryBuilder.module.js.map +0 -1
- package/dist/sqlQueryBuilder/sqlQueryBuilder.service.d.ts +0 -43
- package/dist/sqlQueryBuilder/sqlQueryBuilder.service.js.map +0 -1
- /package/dist/{entityService → entity}/rdb.entity.service.definitions.js +0 -0
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("./
|
|
19
|
-
__exportStar(require("./
|
|
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,
|
|
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.
|
|
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
|
|
2
|
-
export * from './rdb.repository.module';
|
|
1
|
+
export * from './rdb.repository';
|
package/dist/repository/index.js
CHANGED
|
@@ -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
|
|
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":";;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
tableName: string;
|
|
18
|
+
};
|
|
19
|
+
target: unknown;
|
|
20
|
+
abstract createQueryBuilder(_entityName: string, _queryRunner?: unknown): OrmSelectQueryBuilder<Entity>;
|
|
21
|
+
abstract save(_data: Partial<Entity> | Partial<Entity[]>, _options?: unknown): Promise<unknown>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RDBRepository = exports.RDBEntityManager = void 0;
|
|
4
|
+
class RDBEntityManager {
|
|
5
|
+
}
|
|
6
|
+
exports.RDBEntityManager = RDBEntityManager;
|
|
7
|
+
class RDBRepository {
|
|
8
|
+
}
|
|
9
|
+
exports.RDBRepository = RDBRepository;
|
|
10
|
+
//# sourceMappingURL=rdb.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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;CAUlC;AAVD,sCAUC"}
|
|
@@ -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,
|
|
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?:
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rdb.sqlQueryBuilder.definitions.js","sourceRoot":"","sources":["../../src/sqlQueryBuilder/rdb.sqlQueryBuilder.definitions.ts"],"names":[],"mappings":""}
|
package/dist/sqlQueryBuilder/{sqlQueryBuilder.module.d.ts → rdb.sqlQueryBuilder.module.d.ts}
RENAMED
|
@@ -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
|
|
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
|
-
{
|
|
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:
|
|
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
|
|
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 } =
|
|
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(
|
|
38
|
-
const { where, include, orderBy, select, withDeleted
|
|
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
|
-
|
|
46
|
+
const where = Object.assign({}, (optWhere || {}));
|
|
47
|
+
if ('withDeleted' in ormQueryBuilder) {
|
|
48
|
+
const oqb = ormQueryBuilder;
|
|
42
49
|
if (withDeleted) {
|
|
43
|
-
|
|
50
|
+
oqb.withDeleted();
|
|
44
51
|
}
|
|
45
52
|
if (include) {
|
|
46
53
|
for (const relationProperty in include) {
|
|
47
54
|
if (withDeleted) {
|
|
48
|
-
|
|
55
|
+
oqb.leftJoinAndSelect(relationProperty, include[relationProperty]);
|
|
49
56
|
}
|
|
50
57
|
else {
|
|
51
|
-
|
|
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
|
-
|
|
63
|
+
oqb.select(this.parseSelect(select, include));
|
|
57
64
|
}
|
|
58
65
|
}
|
|
59
|
-
if (
|
|
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
|
-
|
|
85
|
+
ormQueryBuilder[methodName](whereItem.query, whereItem.params);
|
|
74
86
|
}
|
|
75
87
|
}
|
|
76
|
-
if (orderBy &&
|
|
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,19 +94,20 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
|
|
|
81
94
|
methodName = 'orderBy';
|
|
82
95
|
isFirst = false;
|
|
83
96
|
}
|
|
84
|
-
|
|
97
|
+
oqb[methodName](item.field, item.direction);
|
|
85
98
|
}
|
|
86
99
|
}
|
|
87
100
|
}
|
|
88
|
-
getValueForFilter(entityName,
|
|
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}${
|
|
92
|
-
|
|
104
|
+
const fieldString = `${cqs}${entityName}${cqs}.${cqs}${fieldAlias}${cqs}`;
|
|
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})`;
|
|
110
|
+
parsedInnerValue = `"${parsedInnerValue}"`;
|
|
97
111
|
}
|
|
98
112
|
else if (dbType === core_1.RDBType.PG) {
|
|
99
113
|
query = `${fieldString} ? :${escapedFieldAlias}`;
|
|
@@ -186,6 +200,7 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
|
|
|
186
200
|
const cqs = this.columnQuotesSymbol;
|
|
187
201
|
const { isTopLevel, operator } = options;
|
|
188
202
|
const fieldAliases = options.fieldAliases || {};
|
|
203
|
+
const parameterNamesToFieldAliasesMap = options.parameterNamesToFieldAliasesMap || {};
|
|
189
204
|
const where = {};
|
|
190
205
|
let include = {};
|
|
191
206
|
for (const fieldName in filters) {
|
|
@@ -193,8 +208,8 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
|
|
|
193
208
|
if (typeof fieldValue === 'undefined') {
|
|
194
209
|
continue;
|
|
195
210
|
}
|
|
196
|
-
const fieldAlias = fieldAliases[fieldName] || fieldName;
|
|
197
211
|
const isNot = operator === core_1.PersistanceSelectOperator.Not;
|
|
212
|
+
let fieldAlias = fieldAliases[fieldName];
|
|
198
213
|
if (fieldName.match(/\./)) {
|
|
199
214
|
const fieldData = fieldName.split('.');
|
|
200
215
|
const finalItemIndex = fieldData.length - 1;
|
|
@@ -203,12 +218,16 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
|
|
|
203
218
|
let previousEntityAlias = `${entityName}`;
|
|
204
219
|
for (let i = 0; i < finalItemIndex; i++) {
|
|
205
220
|
const currentEntityName = fieldData[i];
|
|
206
|
-
entityAlias += `
|
|
221
|
+
entityAlias += `__${currentEntityName}`;
|
|
207
222
|
include[`${previousEntityAlias}.${currentEntityName}`] = entityAlias;
|
|
208
223
|
previousEntityAlias = `${entityAlias}`;
|
|
209
224
|
}
|
|
225
|
+
if (!fieldAlias) {
|
|
226
|
+
fieldAlias = actualFieldName;
|
|
227
|
+
}
|
|
228
|
+
const actualFieldAlias = parameterNamesToFieldAliasesMap[fieldAlias] || fieldAlias;
|
|
210
229
|
const itemData = this.parseFilters(entityAlias, { [actualFieldName]: fieldValue }, {
|
|
211
|
-
fieldAliases: { [actualFieldName]:
|
|
230
|
+
fieldAliases: { [actualFieldName]: actualFieldAlias },
|
|
212
231
|
isTopLevel: false,
|
|
213
232
|
operator
|
|
214
233
|
});
|
|
@@ -216,14 +235,18 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
|
|
|
216
235
|
include = Object.assign(Object.assign({}, include), itemData.include);
|
|
217
236
|
continue;
|
|
218
237
|
}
|
|
238
|
+
if (!fieldAlias) {
|
|
239
|
+
fieldAlias = fieldName;
|
|
240
|
+
}
|
|
241
|
+
const actualFieldAlias = parameterNamesToFieldAliasesMap[fieldAlias] || fieldAlias;
|
|
219
242
|
if (fieldValue === null) {
|
|
220
243
|
where[fieldName] = {
|
|
221
|
-
query: `${cqs}${entityName}${cqs}.${cqs}${
|
|
244
|
+
query: `${cqs}${entityName}${cqs}.${cqs}${actualFieldAlias}${cqs} is${isNot ? ' not ' : ' '}null`
|
|
222
245
|
};
|
|
223
246
|
continue;
|
|
224
247
|
}
|
|
225
248
|
if (fieldValue instanceof Array) {
|
|
226
|
-
const { hasValues, isSimple, paramsForQuery, queryTemplateParamNames } = this.parseArrayOfFilters(fieldValue,
|
|
249
|
+
const { hasValues, isSimple, paramsForQuery, queryTemplateParamNames } = this.parseArrayOfFilters(fieldValue, actualFieldAlias);
|
|
227
250
|
if (!hasValues) {
|
|
228
251
|
continue;
|
|
229
252
|
}
|
|
@@ -231,14 +254,14 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
|
|
|
231
254
|
if (operator === core_1.PersistanceSelectOperator.Between) {
|
|
232
255
|
where[fieldName] = {
|
|
233
256
|
params: paramsForQuery,
|
|
234
|
-
query: `${cqs}${entityName}${cqs}.${cqs}${
|
|
235
|
-
`between :${
|
|
257
|
+
query: `${cqs}${entityName}${cqs}.${cqs}${actualFieldAlias}${cqs}${isNot ? ' not ' : ' '}` +
|
|
258
|
+
`between :${actualFieldAlias}_0 and :${actualFieldAlias}_1`
|
|
236
259
|
};
|
|
237
260
|
continue;
|
|
238
261
|
}
|
|
239
262
|
where[fieldName] = {
|
|
240
263
|
params: paramsForQuery,
|
|
241
|
-
query: `${cqs}${entityName}${cqs}.${cqs}${
|
|
264
|
+
query: `${cqs}${entityName}${cqs}.${cqs}${actualFieldAlias}${cqs}${isNot ? ' not ' : ' '}` +
|
|
242
265
|
`in (${queryTemplateParamNames.replace(/,\s$/, '')})`
|
|
243
266
|
};
|
|
244
267
|
continue;
|
|
@@ -246,31 +269,30 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
|
|
|
246
269
|
if (isTopLevel && fieldName === core_1.PersistanceSelectOperator.Or) {
|
|
247
270
|
const finalWhereValue = { params: {}, query: '' };
|
|
248
271
|
fieldValue.forEach((orFieldValue, orFieldIndex) => {
|
|
249
|
-
const itemData = this.parseInnerFilters(entityName, orFieldValue, fieldName, `${
|
|
272
|
+
const itemData = this.parseInnerFilters(entityName, orFieldValue, fieldName, `${actualFieldAlias}_${orFieldIndex}_f`, operator);
|
|
250
273
|
finalWhereValue.params = Object.assign(Object.assign({}, finalWhereValue.params), (itemData.parsedFilter.params || {}));
|
|
251
274
|
finalWhereValue.query += `${finalWhereValue.query.length ? ' or ' : '('}${itemData.parsedFilter.query}`;
|
|
252
275
|
include = Object.assign(Object.assign({}, include), itemData.include);
|
|
253
276
|
});
|
|
254
277
|
finalWhereValue.query += ')';
|
|
255
278
|
where[fieldName] = finalWhereValue;
|
|
279
|
+
continue;
|
|
256
280
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
continue;
|
|
261
|
-
}
|
|
262
|
-
where[fieldName] = itemData.parsedFilter;
|
|
263
|
-
include = Object.assign(Object.assign({}, include), itemData.include);
|
|
281
|
+
const itemData = this.parseInnerFilters(entityName, fieldValue, fieldName, actualFieldAlias, operator);
|
|
282
|
+
if (itemData.parsedFilter.query === '()') {
|
|
283
|
+
continue;
|
|
264
284
|
}
|
|
285
|
+
where[fieldName] = itemData.parsedFilter;
|
|
286
|
+
include = Object.assign(Object.assign({}, include), itemData.include);
|
|
265
287
|
continue;
|
|
266
288
|
}
|
|
267
289
|
if (typeof fieldValue === 'object' && !(fieldValue instanceof Date)) {
|
|
268
|
-
const itemData = this.parseInnerFilters(entityName, fieldValue, fieldName,
|
|
290
|
+
const itemData = this.parseInnerFilters(entityName, fieldValue, fieldName, actualFieldAlias, operator);
|
|
269
291
|
where[fieldName] = itemData.parsedFilter;
|
|
270
292
|
include = Object.assign(Object.assign({}, include), itemData.include);
|
|
271
293
|
continue;
|
|
272
294
|
}
|
|
273
|
-
where[fieldName] = this.getValueForFilter(entityName, fieldName,
|
|
295
|
+
where[fieldName] = this.getValueForFilter(entityName, fieldName, actualFieldAlias, fieldValue, isNot, operator);
|
|
274
296
|
}
|
|
275
297
|
return { where, include };
|
|
276
298
|
}
|
|
@@ -286,11 +308,13 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
|
|
|
286
308
|
op = key;
|
|
287
309
|
}
|
|
288
310
|
const actualFieldName = fieldName === core_1.PersistanceSelectOperator.Or ? key : fieldName;
|
|
311
|
+
const fieldParameterName = `${fieldAlias}_${parsedValueCount}`;
|
|
289
312
|
const innerValue = filtersObject[key];
|
|
290
313
|
const itemData = this.parseFilters(entityName, { [actualFieldName]: innerValue }, {
|
|
291
|
-
fieldAliases: { [actualFieldName]:
|
|
314
|
+
fieldAliases: { [actualFieldName]: fieldParameterName },
|
|
292
315
|
isTopLevel: false,
|
|
293
|
-
operator: op
|
|
316
|
+
operator: op,
|
|
317
|
+
parameterNamesToFieldAliasesMap: { [fieldParameterName]: fieldAlias }
|
|
294
318
|
});
|
|
295
319
|
const fieldWhereData = itemData.where[actualFieldName];
|
|
296
320
|
if (!fieldWhereData) {
|
|
@@ -313,7 +337,7 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
|
|
|
313
337
|
let entityAlias = `${entityName}`;
|
|
314
338
|
let previousEntityAlias = `${entityName}`;
|
|
315
339
|
includeData.forEach(currentEntityName => {
|
|
316
|
-
entityAlias += `
|
|
340
|
+
entityAlias += `__${currentEntityName}`;
|
|
317
341
|
resultInclude[`${previousEntityAlias}.${currentEntityName}`] = entityAlias;
|
|
318
342
|
previousEntityAlias = `${entityAlias}`;
|
|
319
343
|
});
|
|
@@ -324,7 +348,9 @@ let SQLQueryBuilderService = class SQLQueryBuilderService {
|
|
|
324
348
|
const orderBy = [];
|
|
325
349
|
let include = {};
|
|
326
350
|
for (const fieldName in orderByData) {
|
|
327
|
-
const direction = orderByData[fieldName].toLowerCase() === 'desc'
|
|
351
|
+
const direction = orderByData[fieldName].toLowerCase() === 'desc'
|
|
352
|
+
? core_1.PersistanceOrderByDirection.Desc
|
|
353
|
+
: core_1.PersistanceOrderByDirection.Asc;
|
|
328
354
|
const item = { field: `${entityName}.${fieldName}`, direction };
|
|
329
355
|
if (fieldName.match(/\./)) {
|
|
330
356
|
const fieldData = fieldName.split('.');
|
|
@@ -370,6 +396,7 @@ exports.SQLQueryBuilderService = SQLQueryBuilderService;
|
|
|
370
396
|
exports.SQLQueryBuilderService = SQLQueryBuilderService = __decorate([
|
|
371
397
|
(0, common_1.Injectable)(),
|
|
372
398
|
__param(1, (0, common_1.Inject)(definitions_1.Constants.SQL_BUILDER_DB_CONFIG_PATH)),
|
|
373
|
-
|
|
399
|
+
__param(2, (0, common_1.Inject)(core_1.Constants.PERSISTANCE_MODULE_NAME)),
|
|
400
|
+
__metadata("design:paramtypes", [core_1.ConfigProviderService, String, String])
|
|
374
401
|
], SQLQueryBuilderService);
|
|
375
|
-
//# sourceMappingURL=sqlQueryBuilder.service.js.map
|
|
402
|
+
//# 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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"}
|