@klerick/json-api-nestjs-typeorm 0.1.0-beta.1 → 0.1.0-beta.2
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/CHANGELOG.md +10 -0
- package/README.md +1 -0
- package/package.json +25 -30
- package/src/index.d.ts +1 -0
- package/src/index.js +5 -0
- package/src/index.js.map +1 -0
- package/src/lib/constants/index.d.ts +6 -0
- package/src/lib/constants/index.js +10 -0
- package/src/lib/constants/index.js.map +1 -0
- package/src/lib/factory/index.d.ts +20 -0
- package/src/lib/factory/index.js +127 -0
- package/src/lib/factory/index.js.map +1 -0
- package/src/lib/index.d.ts +2 -0
- package/src/lib/index.js +6 -0
- package/src/lib/index.js.map +1 -0
- package/src/lib/orm-helper/index.d.ts +10 -0
- package/src/lib/orm-helper/index.js +151 -0
- package/src/lib/orm-helper/index.js.map +1 -0
- package/src/lib/orm-methods/delete-one/delete-one.d.ts +2 -0
- package/src/lib/orm-methods/delete-one/delete-one.js +17 -0
- package/src/lib/orm-methods/delete-one/delete-one.js.map +1 -0
- package/src/lib/orm-methods/delete-relationship/delete-relationship.d.ts +4 -0
- package/src/lib/orm-methods/delete-relationship/delete-relationship.js +18 -0
- package/src/lib/orm-methods/delete-relationship/delete-relationship.js.map +1 -0
- package/src/lib/orm-methods/get-all/get-all.d.ts +4 -0
- package/src/lib/orm-methods/get-all/get-all.js +181 -0
- package/src/lib/orm-methods/get-all/get-all.js.map +1 -0
- package/src/lib/orm-methods/get-one/get-one.d.ts +4 -0
- package/src/lib/orm-methods/get-one/get-one.js +59 -0
- package/src/lib/orm-methods/get-one/get-one.js.map +1 -0
- package/src/lib/orm-methods/get-relationship/get-relationship.d.ts +3 -0
- package/src/lib/orm-methods/get-relationship/get-relationship.js +35 -0
- package/src/lib/orm-methods/get-relationship/get-relationship.js.map +1 -0
- package/src/lib/orm-methods/index.d.ts +9 -0
- package/src/lib/orm-methods/index.js +22 -0
- package/src/lib/orm-methods/index.js.map +1 -0
- package/src/lib/orm-methods/patch-one/patch-one.d.ts +4 -0
- package/src/lib/orm-methods/patch-one/patch-one.js +50 -0
- package/src/lib/orm-methods/patch-one/patch-one.js.map +1 -0
- package/src/lib/orm-methods/patch-relationship/patch-relationship.d.ts +4 -0
- package/src/lib/orm-methods/patch-relationship/patch-relationship.js +23 -0
- package/src/lib/orm-methods/patch-relationship/patch-relationship.js.map +1 -0
- package/src/lib/orm-methods/post-one/post-one.d.ts +4 -0
- package/src/lib/orm-methods/post-one/post-one.js +28 -0
- package/src/lib/orm-methods/post-one/post-one.js.map +1 -0
- package/src/lib/orm-methods/post-relationship/post-relationship.d.ts +4 -0
- package/src/lib/orm-methods/post-relationship/post-relationship.js +19 -0
- package/src/lib/orm-methods/post-relationship/post-relationship.js.map +1 -0
- package/src/lib/service/index.d.ts +3 -0
- package/src/lib/service/index.js +7 -0
- package/src/lib/service/index.js.map +1 -0
- package/src/lib/service/type-orm-format.error.service.d.ts +21 -0
- package/src/lib/service/type-orm-format.error.service.js +122 -0
- package/src/lib/service/type-orm-format.error.service.js.map +1 -0
- package/src/lib/service/type-orm.service.d.ts +20 -0
- package/src/lib/service/type-orm.service.js +61 -0
- package/src/lib/service/type-orm.service.js.map +1 -0
- package/src/lib/service/typeorm-utils.service.d.ts +66 -0
- package/src/lib/service/typeorm-utils.service.js +450 -0
- package/src/lib/service/typeorm-utils.service.js.map +1 -0
- package/src/lib/type-orm-json-api.module.d.ts +7 -0
- package/src/lib/type-orm-json-api.module.js +49 -0
- package/src/lib/type-orm-json-api.module.js.map +1 -0
- package/src/lib/type.d.ts +28 -0
- package/src/lib/type.js +28 -0
- package/src/lib/type.js.map +1 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypeOrmFormatErrorService = exports.PostgresError = exports.formErrorString = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const json_api_nestjs_1 = require("@klerick/json-api-nestjs");
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const typeorm_1 = require("typeorm");
|
|
8
|
+
const DriverUtils_1 = require("typeorm/driver/DriverUtils");
|
|
9
|
+
const constants_1 = require("../constants");
|
|
10
|
+
const formErrorString = (entityMetadata, errorText) => {
|
|
11
|
+
for (const column of entityMetadata.columns) {
|
|
12
|
+
const result = new RegExp(column.databaseName).test(errorText);
|
|
13
|
+
if (!result)
|
|
14
|
+
continue;
|
|
15
|
+
errorText = errorText.replace(column.databaseName, column.propertyName);
|
|
16
|
+
}
|
|
17
|
+
return errorText.replace(entityMetadata.tableName, entityMetadata.name);
|
|
18
|
+
};
|
|
19
|
+
exports.formErrorString = formErrorString;
|
|
20
|
+
const fieldNotNullOrDefault = (entityMetadata, errorText, detail) => {
|
|
21
|
+
const error = {
|
|
22
|
+
code: 'invalid_arguments',
|
|
23
|
+
message: (0, exports.formErrorString)(entityMetadata, errorText),
|
|
24
|
+
path: ['data', 'attributes'],
|
|
25
|
+
};
|
|
26
|
+
return new common_1.BadRequestException([error]);
|
|
27
|
+
};
|
|
28
|
+
const duplicateItems = (entityMetadata, errorText, detail) => {
|
|
29
|
+
errorText = 'Duplicate value';
|
|
30
|
+
if (detail) {
|
|
31
|
+
const matches = detail.match(/(?<=\().+?(?=\))/gm);
|
|
32
|
+
if (matches) {
|
|
33
|
+
errorText = `Duplicate value in the "${matches[0]}"`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const error = {
|
|
37
|
+
code: 'invalid_arguments',
|
|
38
|
+
message: detail ? (0, exports.formErrorString)(entityMetadata, errorText) : errorText,
|
|
39
|
+
path: ['data', 'attributes'],
|
|
40
|
+
};
|
|
41
|
+
return new common_1.ConflictException([error]);
|
|
42
|
+
};
|
|
43
|
+
const invalidInputSyntax = (entityMetadata, errorText, detail) => {
|
|
44
|
+
const error = {
|
|
45
|
+
code: 'invalid_arguments',
|
|
46
|
+
message: errorText,
|
|
47
|
+
path: [],
|
|
48
|
+
};
|
|
49
|
+
return new common_1.BadRequestException([error]);
|
|
50
|
+
};
|
|
51
|
+
const entityHasRelation = (entityMetadata, errorText, detail) => {
|
|
52
|
+
const error = {
|
|
53
|
+
code: 'invalid_arguments',
|
|
54
|
+
message: detail || errorText,
|
|
55
|
+
path: ['data', 'attributes'],
|
|
56
|
+
};
|
|
57
|
+
return new common_1.NotAcceptableException([error]);
|
|
58
|
+
};
|
|
59
|
+
exports.PostgresError = {
|
|
60
|
+
[23502]: fieldNotNullOrDefault,
|
|
61
|
+
[23505]: duplicateItems,
|
|
62
|
+
['22P02']: invalidInputSyntax,
|
|
63
|
+
[22007]: invalidInputSyntax,
|
|
64
|
+
[22003]: invalidInputSyntax,
|
|
65
|
+
[23503]: entityHasRelation,
|
|
66
|
+
};
|
|
67
|
+
class TypeOrmFormatErrorService extends json_api_nestjs_1.ErrorFormatService {
|
|
68
|
+
entityManager;
|
|
69
|
+
mapProperty;
|
|
70
|
+
_dbDriver = undefined;
|
|
71
|
+
get dbDriver() {
|
|
72
|
+
if (!this._dbDriver) {
|
|
73
|
+
const firstEntity = [...this.mapProperty.keys()].at(0);
|
|
74
|
+
if (!firstEntity) {
|
|
75
|
+
throw new Error('No entity found in map');
|
|
76
|
+
}
|
|
77
|
+
this._dbDriver =
|
|
78
|
+
this.entityManager.getRepository(firstEntity).manager.connection.driver;
|
|
79
|
+
}
|
|
80
|
+
return this._dbDriver;
|
|
81
|
+
}
|
|
82
|
+
formatError(error) {
|
|
83
|
+
if (!(error instanceof typeorm_1.QueryFailedError)) {
|
|
84
|
+
return super.formatError(error);
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
return this.prepareDataBaseError(error);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
return super.formatError(error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
prepareDataBaseError(error) {
|
|
94
|
+
if (DriverUtils_1.DriverUtils.isPostgresFamily(this.dbDriver)) {
|
|
95
|
+
const { errorCode, errorMsg, detail, table } = {
|
|
96
|
+
errorCode: error.driverError
|
|
97
|
+
.code,
|
|
98
|
+
errorMsg: error.driverError.message,
|
|
99
|
+
detail: error.driverError.detail,
|
|
100
|
+
table: error.driverError.table,
|
|
101
|
+
};
|
|
102
|
+
const metadata = this.entityManager.connection.entityMetadatas.find((i) => i.tableName === table);
|
|
103
|
+
if (!metadata) {
|
|
104
|
+
return super.formatError(error);
|
|
105
|
+
}
|
|
106
|
+
if (exports.PostgresError[errorCode]) {
|
|
107
|
+
return exports.PostgresError[errorCode](metadata, errorMsg, detail);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return super.formatError(error);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.TypeOrmFormatErrorService = TypeOrmFormatErrorService;
|
|
114
|
+
tslib_1.__decorate([
|
|
115
|
+
(0, common_1.Inject)(constants_1.CURRENT_ENTITY_MANAGER_TOKEN),
|
|
116
|
+
tslib_1.__metadata("design:type", typeorm_1.EntityManager)
|
|
117
|
+
], TypeOrmFormatErrorService.prototype, "entityManager", void 0);
|
|
118
|
+
tslib_1.__decorate([
|
|
119
|
+
(0, common_1.Inject)(json_api_nestjs_1.ENTITY_PARAM_MAP),
|
|
120
|
+
tslib_1.__metadata("design:type", Map)
|
|
121
|
+
], TypeOrmFormatErrorService.prototype, "mapProperty", void 0);
|
|
122
|
+
//# sourceMappingURL=type-orm-format.error.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-orm-format.error.service.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs-typeorm/src/lib/service/type-orm-format.error.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { OrmService, PatchData, PatchRelationshipData, PostData, PostRelationshipData, Query, QueryOne, EntityControllerParam, JsonApiTransformerService } from '@klerick/json-api-nestjs';
|
|
2
|
+
import { ResourceObject, RelationKeys, ResourceObjectRelationships } from '@klerick/json-api-nestjs-shared';
|
|
3
|
+
import { Repository } from 'typeorm';
|
|
4
|
+
import { TypeormUtilsService } from './typeorm-utils.service';
|
|
5
|
+
import { TypeOrmParam } from '../type';
|
|
6
|
+
export declare class TypeOrmService<E extends object, IdKey extends string = 'id'> implements OrmService<E, IdKey> {
|
|
7
|
+
typeormUtilsService: TypeormUtilsService<E, IdKey>;
|
|
8
|
+
transformDataService: JsonApiTransformerService<E, IdKey>;
|
|
9
|
+
config: EntityControllerParam<TypeOrmParam>;
|
|
10
|
+
repository: Repository<E>;
|
|
11
|
+
getAll(query: Query<E, IdKey>): Promise<ResourceObject<E, 'array', null, IdKey>>;
|
|
12
|
+
deleteOne(id: number | string): Promise<void>;
|
|
13
|
+
deleteRelationship<Rel extends RelationKeys<E, IdKey>>(id: number | string, rel: Rel, input: PostRelationshipData): Promise<void>;
|
|
14
|
+
getOne(id: number | string, query: QueryOne<E, IdKey>): Promise<ResourceObject<E, 'object', null, IdKey>>;
|
|
15
|
+
getRelationship<Rel extends RelationKeys<E, IdKey>>(id: number | string, rel: Rel): Promise<ResourceObjectRelationships<E, IdKey, Rel>>;
|
|
16
|
+
patchOne(id: number | string, inputData: PatchData<E, IdKey>): Promise<ResourceObject<E, 'object', null, IdKey>>;
|
|
17
|
+
patchRelationship<Rel extends RelationKeys<E, IdKey>>(id: number | string, rel: Rel, input: PatchRelationshipData): Promise<ResourceObjectRelationships<E, IdKey, Rel>>;
|
|
18
|
+
postOne(inputData: PostData<E, IdKey>): Promise<ResourceObject<E, 'object', null, IdKey>>;
|
|
19
|
+
postRelationship<Rel extends RelationKeys<E, IdKey>>(id: number | string, rel: Rel, input: PostRelationshipData): Promise<ResourceObjectRelationships<E, IdKey, Rel>>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypeOrmService = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const json_api_nestjs_1 = require("@klerick/json-api-nestjs");
|
|
7
|
+
const typeorm_1 = require("typeorm");
|
|
8
|
+
const orm_methods_1 = require("../orm-methods");
|
|
9
|
+
const typeorm_utils_service_1 = require("./typeorm-utils.service");
|
|
10
|
+
const constants_1 = require("../constants");
|
|
11
|
+
class TypeOrmService {
|
|
12
|
+
typeormUtilsService;
|
|
13
|
+
transformDataService;
|
|
14
|
+
config;
|
|
15
|
+
repository;
|
|
16
|
+
getAll(query) {
|
|
17
|
+
return orm_methods_1.getAll.call(this, query);
|
|
18
|
+
}
|
|
19
|
+
deleteOne(id) {
|
|
20
|
+
return orm_methods_1.deleteOne.call(this, id);
|
|
21
|
+
}
|
|
22
|
+
deleteRelationship(id, rel, input) {
|
|
23
|
+
return orm_methods_1.deleteRelationship.call(this, id, rel, input);
|
|
24
|
+
}
|
|
25
|
+
getOne(id, query) {
|
|
26
|
+
return orm_methods_1.getOne.call(this, id, query);
|
|
27
|
+
}
|
|
28
|
+
getRelationship(id, rel) {
|
|
29
|
+
return orm_methods_1.getRelationship.call(this, id, rel);
|
|
30
|
+
}
|
|
31
|
+
patchOne(id, inputData) {
|
|
32
|
+
return orm_methods_1.patchOne.call(this, id, inputData);
|
|
33
|
+
}
|
|
34
|
+
patchRelationship(id, rel, input) {
|
|
35
|
+
return orm_methods_1.patchRelationship.call(this, id, rel, input);
|
|
36
|
+
}
|
|
37
|
+
postOne(inputData) {
|
|
38
|
+
return orm_methods_1.postOne.call(this, inputData);
|
|
39
|
+
}
|
|
40
|
+
postRelationship(id, rel, input) {
|
|
41
|
+
return orm_methods_1.postRelationship.call(this, id, rel, input);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.TypeOrmService = TypeOrmService;
|
|
45
|
+
tslib_1.__decorate([
|
|
46
|
+
(0, common_1.Inject)(typeorm_utils_service_1.TypeormUtilsService),
|
|
47
|
+
tslib_1.__metadata("design:type", typeorm_utils_service_1.TypeormUtilsService)
|
|
48
|
+
], TypeOrmService.prototype, "typeormUtilsService", void 0);
|
|
49
|
+
tslib_1.__decorate([
|
|
50
|
+
(0, common_1.Inject)(json_api_nestjs_1.JsonApiTransformerService),
|
|
51
|
+
tslib_1.__metadata("design:type", json_api_nestjs_1.JsonApiTransformerService)
|
|
52
|
+
], TypeOrmService.prototype, "transformDataService", void 0);
|
|
53
|
+
tslib_1.__decorate([
|
|
54
|
+
(0, common_1.Inject)(json_api_nestjs_1.CONTROLLER_OPTIONS_TOKEN),
|
|
55
|
+
tslib_1.__metadata("design:type", Object)
|
|
56
|
+
], TypeOrmService.prototype, "config", void 0);
|
|
57
|
+
tslib_1.__decorate([
|
|
58
|
+
(0, common_1.Inject)(constants_1.CURRENT_ENTITY_REPOSITORY),
|
|
59
|
+
tslib_1.__metadata("design:type", typeorm_1.Repository)
|
|
60
|
+
], TypeOrmService.prototype, "repository", void 0);
|
|
61
|
+
//# sourceMappingURL=type-orm.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-orm.service.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs-typeorm/src/lib/service/type-orm.service.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,8DAWkC;AAOlC,qCAAqC;AAErC,gDAUwB;AAExB,mEAA8D;AAC9D,4CAAyD;AAGzD,MAAa,cAAc;IAIlB,mBAAmB,CAAiC;IAEpD,oBAAoB,CAAuC;IAE3D,MAAM,CAAuC;IACV,UAAU,CAAiB;IAErE,MAAM,CACJ,KAAsB;QAEtB,OAAO,oBAAM,CAAC,IAAI,CAIhB,IAAI,EAAE,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,SAAS,CAAC,EAAmB;QAC3B,OAAO,uBAAS,CAAC,IAAI,CAInB,IAAI,EAAE,EAAE,CAAC,CAAC;IACd,CAAC;IAED,kBAAkB,CAChB,EAAmB,EACnB,GAAQ,EACR,KAA2B;QAE3B,OAAO,gCAAkB,CAAC,IAAI,CAI5B,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CACJ,EAAmB,EACnB,KAAyB;QAEzB,OAAO,oBAAM,CAAC,IAAI,CAIhB,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,eAAe,CACb,EAAmB,EACnB,GAAQ;QAER,OAAO,6BAAe,CAAC,IAAI,CAIzB,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,QAAQ,CACN,EAAmB,EACnB,SAA8B;QAE9B,OAAO,sBAAQ,CAAC,IAAI,CAIlB,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,iBAAiB,CACf,EAAmB,EACnB,GAAQ,EACR,KAA4B;QAE5B,OAAO,+BAAiB,CAAC,IAAI,CAI3B,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,CACL,SAA6B;QAE7B,OAAO,qBAAO,CAAC,IAAI,CAIjB,IAAI,EAAE,SAAS,CAAC,CAAC;IACrB,CAAC;IAED,gBAAgB,CACd,EAAmB,EACnB,GAAQ,EACR,KAA2B;QAE3B,OAAO,8BAAgB,CAAC,IAAI,CAI1B,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;CACF;AA3GD,wCA2GC;AAvGQ;IADN,IAAA,eAAM,EAAC,2CAAmB,CAAC;sCACC,2CAAmB;2DAAW;AAEpD;IADN,IAAA,eAAM,EAAC,2CAAyB,CAAC;sCACJ,2CAAyB;4DAAW;AAE3D;IADN,IAAA,eAAM,EAAC,0CAAwB,CAAC;;8CACmB;AACV;IAAzC,IAAA,eAAM,EAAC,qCAAyB,CAAC;sCAAqB,oBAAU;kDAAI"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { RelationMetadata as TypeOrmRelationMetadata } from 'typeorm/metadata/RelationMetadata';
|
|
3
|
+
import { RelationKeys } from '@klerick/json-api-nestjs-shared';
|
|
4
|
+
import { PatchData, PostData, Query, UnionToTuple } from '@klerick/json-api-nestjs';
|
|
5
|
+
type RelationAlias<E> = {
|
|
6
|
+
[K in UnionToTuple<RelationKeys<E>>[number] & PropertyKey]: string;
|
|
7
|
+
};
|
|
8
|
+
type RelationMetadata<E> = {
|
|
9
|
+
[K in UnionToTuple<RelationKeys<E>>[number] & PropertyKey]: TypeOrmRelationMetadata;
|
|
10
|
+
};
|
|
11
|
+
type ResultQueryExpressionObject = {
|
|
12
|
+
name: string;
|
|
13
|
+
val: string;
|
|
14
|
+
};
|
|
15
|
+
type ResultQueryExpressionArray = {
|
|
16
|
+
name: string;
|
|
17
|
+
val: string;
|
|
18
|
+
}[];
|
|
19
|
+
export type RelationshipsResult<E extends object, IdKey extends string> = {
|
|
20
|
+
[K in RelationKeys<E, IdKey>]: E[K] extends E[K][] ? E[K] : E[K] | null;
|
|
21
|
+
};
|
|
22
|
+
export type ResultQueryExpression = {
|
|
23
|
+
alias?: string;
|
|
24
|
+
expression: string;
|
|
25
|
+
paramsForResult?: string[];
|
|
26
|
+
params?: ResultQueryExpressionObject | ResultQueryExpressionArray;
|
|
27
|
+
selectInclude?: string;
|
|
28
|
+
};
|
|
29
|
+
export type InputValidateData = {
|
|
30
|
+
type: string;
|
|
31
|
+
id: string;
|
|
32
|
+
};
|
|
33
|
+
export type ValidateReturn<T> = T extends unknown[] ? string[] : T extends null ? null : string;
|
|
34
|
+
export declare class TypeormUtilsService<E extends object, IdKey extends string = 'id'> {
|
|
35
|
+
private repository;
|
|
36
|
+
private readonly _currentAlias;
|
|
37
|
+
private readonly _relationMetadata;
|
|
38
|
+
private readonly _relationAlias;
|
|
39
|
+
private readonly _relationFields;
|
|
40
|
+
private readonly _entityMetadata;
|
|
41
|
+
private _number;
|
|
42
|
+
constructor(repository: Repository<E>);
|
|
43
|
+
get currentAlias(): string;
|
|
44
|
+
get relationFields(): UnionToTuple<RelationKeys<E>>;
|
|
45
|
+
relationName(relName: keyof RelationAlias<E>): RelationAlias<E>[UnionToTuple<RelationKeys<E>, import("ts-toolbelt/out/Union/Last").Last<RelationKeys<E>>, [RelationKeys<E>] extends [never] ? true : false>[number] & PropertyKey];
|
|
46
|
+
get currentPrimaryColumn(): keyof E;
|
|
47
|
+
getAliasForRelation(relName: keyof RelationAlias<E>): string;
|
|
48
|
+
getRelMetaDataForRelation(relName: keyof RelationAlias<E>): RelationMetadata<E>[UnionToTuple<RelationKeys<E>, import("ts-toolbelt/out/Union/Last").Last<RelationKeys<E>>, [RelationKeys<E>] extends [never] ? true : false>[number] & PropertyKey];
|
|
49
|
+
getPrimaryColumnForRel(relName: keyof RelationAlias<E>): string;
|
|
50
|
+
private getFilterObject;
|
|
51
|
+
private get number();
|
|
52
|
+
private getParamName;
|
|
53
|
+
getAliasPath(fieldName: unknown): string;
|
|
54
|
+
getAliasPath(fieldName: unknown, relname: keyof RelationAlias<E>, separator?: string): string;
|
|
55
|
+
getAliasPath(fieldName: unknown, relname: string, separator?: string): string;
|
|
56
|
+
private getSubQueryForManyToMany;
|
|
57
|
+
getFilterExpressionForTarget(query: Query<E, IdKey>): ResultQueryExpression[];
|
|
58
|
+
getFilterExpressionForRelation(query: Query<E, IdKey>): ResultQueryExpression[];
|
|
59
|
+
private throwError;
|
|
60
|
+
asyncIterateFindRelationships(relationships: NonNullable<PatchData<E, IdKey>['relationships'] | PostData<E, IdKey>['relationships']>): AsyncGenerator<RelationshipsResult<E, IdKey>>;
|
|
61
|
+
saveEntityData(target: E, relationships: PatchData<E, IdKey>['relationships'] | PostData<E, IdKey>['relationships']): Promise<E>;
|
|
62
|
+
validateRelationInputData<Rel extends RelationKeys<E, IdKey>, In extends InputValidateData | InputValidateData[]>(rel: Rel, inputData: In): Promise<ValidateReturn<In>>;
|
|
63
|
+
validateRelationInputData<Rel extends RelationKeys<E, IdKey>, In extends InputValidateData | InputValidateData[]>(rel: Rel, inputData: In): Promise<ValidateReturn<In>>;
|
|
64
|
+
validateRelationInputData<Rel extends RelationKeys<E, IdKey>, In extends null | InputValidateData | InputValidateData[]>(rel: Rel, inputData: In): Promise<ValidateReturn<In>>;
|
|
65
|
+
}
|
|
66
|
+
export {};
|