@lambdaorm/base 3.0.1
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 +7 -0
- package/README.md +3 -0
- package/index.d.ts +8 -0
- package/index.js +25 -0
- package/index.js.map +1 -0
- package/jest-config.json +15 -0
- package/package.json +24 -0
- package/query/domain/data.d.ts +12 -0
- package/query/domain/data.js +63 -0
- package/query/domain/data.js.map +1 -0
- package/query/domain/index.d.ts +3 -0
- package/query/domain/index.js +20 -0
- package/query/domain/index.js.map +1 -0
- package/query/domain/query.d.ts +14 -0
- package/query/domain/query.js +3 -0
- package/query/domain/query.js.map +1 -0
- package/repository/application/index.d.ts +1 -0
- package/repository/application/index.js +18 -0
- package/repository/application/index.js.map +1 -0
- package/repository/application/repository.d.ts +35 -0
- package/repository/application/repository.js +3 -0
- package/repository/application/repository.js.map +1 -0
- package/repository/domain/actions.d.ts +11 -0
- package/repository/domain/actions.js +3 -0
- package/repository/domain/actions.js.map +1 -0
- package/repository/domain/index.d.ts +2 -0
- package/repository/domain/index.js +19 -0
- package/repository/domain/index.js.map +1 -0
- package/repository/domain/queryable.d.ts +320 -0
- package/repository/domain/queryable.js +226 -0
- package/repository/domain/queryable.js.map +1 -0
- package/schema/application/facade.d.ts +28 -0
- package/schema/application/facade.js +59 -0
- package/schema/application/facade.js.map +1 -0
- package/schema/application/index.d.ts +21 -0
- package/schema/application/index.js +38 -0
- package/schema/application/index.js.map +1 -0
- package/schema/application/services/config/dataSourceConfigService.d.ts +8 -0
- package/schema/application/services/config/dataSourceConfigService.js +38 -0
- package/schema/application/services/config/dataSourceConfigService.js.map +1 -0
- package/schema/application/services/config/domainConfigService.d.ts +7 -0
- package/schema/application/services/config/domainConfigService.js +13 -0
- package/schema/application/services/config/domainConfigService.js.map +1 -0
- package/schema/application/services/config/domainConfigServiceBase.d.ts +45 -0
- package/schema/application/services/config/domainConfigServiceBase.js +304 -0
- package/schema/application/services/config/domainConfigServiceBase.js.map +1 -0
- package/schema/application/services/config/mappingConfigService.d.ts +13 -0
- package/schema/application/services/config/mappingConfigService.js +32 -0
- package/schema/application/services/config/mappingConfigService.js.map +1 -0
- package/schema/application/services/config/mappingsConfigService.d.ts +10 -0
- package/schema/application/services/config/mappingsConfigService.js +43 -0
- package/schema/application/services/config/mappingsConfigService.js.map +1 -0
- package/schema/application/services/config/stageConfigService.d.ts +7 -0
- package/schema/application/services/config/stageConfigService.js +32 -0
- package/schema/application/services/config/stageConfigService.js.map +1 -0
- package/schema/application/services/config/viewConfigService.d.ts +12 -0
- package/schema/application/services/config/viewConfigService.js +36 -0
- package/schema/application/services/config/viewConfigService.js.map +1 -0
- package/schema/application/services/config/viewsConfigService.d.ts +9 -0
- package/schema/application/services/config/viewsConfigService.js +43 -0
- package/schema/application/services/config/viewsConfigService.js.map +1 -0
- package/schema/application/services/createEntitiesService.d.ts +10 -0
- package/schema/application/services/createEntitiesService.js +168 -0
- package/schema/application/services/createEntitiesService.js.map +1 -0
- package/schema/application/services/interpretSchemaDataService.d.ts +12 -0
- package/schema/application/services/interpretSchemaDataService.js +142 -0
- package/schema/application/services/interpretSchemaDataService.js.map +1 -0
- package/schema/application/services/routeService.d.ts +10 -0
- package/schema/application/services/routeService.js +35 -0
- package/schema/application/services/routeService.js.map +1 -0
- package/schema/application/services/schemaExtender.d.ts +37 -0
- package/schema/application/services/schemaExtender.js +472 -0
- package/schema/application/services/schemaExtender.js.map +1 -0
- package/schema/application/services/schemaService.d.ts +9 -0
- package/schema/application/services/schemaService.js +78 -0
- package/schema/application/services/schemaService.js.map +1 -0
- package/schema/application/state.d.ts +54 -0
- package/schema/application/state.js +176 -0
- package/schema/application/state.js.map +1 -0
- package/schema/application/useCases/clear.d.ts +9 -0
- package/schema/application/useCases/clear.js +149 -0
- package/schema/application/useCases/clear.js.map +1 -0
- package/schema/application/useCases/complete.d.ts +0 -0
- package/schema/application/useCases/complete.js +61 -0
- package/schema/application/useCases/complete.js.map +1 -0
- package/schema/application/useCases/create.d.ts +7 -0
- package/schema/application/useCases/create.js +21 -0
- package/schema/application/useCases/create.js.map +1 -0
- package/schema/application/useCases/getSchemaData.d.ts +8 -0
- package/schema/application/useCases/getSchemaData.js +16 -0
- package/schema/application/useCases/getSchemaData.js.map +1 -0
- package/schema/application/useCases/initialize.d.ts +8 -0
- package/schema/application/useCases/initialize.js +131 -0
- package/schema/application/useCases/initialize.js.map +1 -0
- package/schema/application/useCases/load.d.ts +17 -0
- package/schema/application/useCases/load.js +68 -0
- package/schema/application/useCases/load.js.map +1 -0
- package/schema/application/useCases/match.d.ts +21 -0
- package/schema/application/useCases/match.js +297 -0
- package/schema/application/useCases/match.js.map +1 -0
- package/schema/application/useCases/update.d.ts +9 -0
- package/schema/application/useCases/update.js +115 -0
- package/schema/application/useCases/update.js.map +1 -0
- package/schema/domain/dialect.d.ts +10 -0
- package/schema/domain/dialect.js +15 -0
- package/schema/domain/dialect.js.map +1 -0
- package/schema/domain/errors.d.ts +3 -0
- package/schema/domain/errors.js +11 -0
- package/schema/domain/errors.js.map +1 -0
- package/schema/domain/index.d.ts +6 -0
- package/schema/domain/index.js +23 -0
- package/schema/domain/index.js.map +1 -0
- package/schema/domain/ports/fileSchemaService.d.ts +5 -0
- package/schema/domain/ports/fileSchemaService.js +3 -0
- package/schema/domain/ports/fileSchemaService.js.map +1 -0
- package/schema/domain/schema.d.ts +207 -0
- package/schema/domain/schema.js +12 -0
- package/schema/domain/schema.js.map +1 -0
- package/schema/domain/sentence.d.ts +68 -0
- package/schema/domain/sentence.js +65 -0
- package/schema/domain/sentence.js.map +1 -0
- package/schema/domain/services.d.ts +20 -0
- package/schema/domain/services.js +3 -0
- package/schema/domain/services.js.map +1 -0
- package/schema/infrastructure/facadeBuilder.d.ts +9 -0
- package/schema/infrastructure/facadeBuilder.js +30 -0
- package/schema/infrastructure/facadeBuilder.js.map +1 -0
- package/schema/infrastructure/fileSchemaService.d.ts +11 -0
- package/schema/infrastructure/fileSchemaService.js +69 -0
- package/schema/infrastructure/fileSchemaService.js.map +1 -0
- package/schema/infrastructure/index.d.ts +3 -0
- package/schema/infrastructure/index.js +20 -0
- package/schema/infrastructure/index.js.map +1 -0
- package/schema/infrastructure/schemaFileHelper.d.ts +7 -0
- package/schema/infrastructure/schemaFileHelper.js +81 -0
- package/schema/infrastructure/schemaFileHelper.js.map +1 -0
- package/schema/infrastructure/schemaHelper.d.ts +23 -0
- package/schema/infrastructure/schemaHelper.js +132 -0
- package/schema/infrastructure/schemaHelper.js.map +1 -0
- package/schema/infrastructure/stateBuilder.d.ts +10 -0
- package/schema/infrastructure/stateBuilder.js +24 -0
- package/schema/infrastructure/stateBuilder.js.map +1 -0
- package/sentence/domain/index.d.ts +3 -0
- package/sentence/domain/index.js +20 -0
- package/sentence/domain/index.js.map +1 -0
- package/sentence/domain/metadata.d.ts +37 -0
- package/sentence/domain/metadata.js +3 -0
- package/sentence/domain/metadata.js.map +1 -0
- package/sentence/domain/sentence.d.ts +68 -0
- package/sentence/domain/sentence.js +128 -0
- package/sentence/domain/sentence.js.map +1 -0
- package/sentence/domain/services.d.ts +13 -0
- package/sentence/domain/services.js +3 -0
- package/sentence/domain/services.js.map +1 -0
- package/shared/domain/error.d.ts +9 -0
- package/shared/domain/error.js +25 -0
- package/shared/domain/error.js.map +1 -0
- package/shared/domain/ports/logger.d.ts +9 -0
- package/shared/domain/ports/logger.js +39 -0
- package/shared/domain/ports/logger.js.map +1 -0
- package/shared/index.d.ts +5 -0
- package/shared/index.js +22 -0
- package/shared/index.js.map +1 -0
- package/shared/infrastructure/consoleLogger.d.ts +6 -0
- package/shared/infrastructure/consoleLogger.js +41 -0
- package/shared/infrastructure/consoleLogger.js.map +1 -0
- package/shared/infrastructure/helper.d.ts +40 -0
- package/shared/infrastructure/helper.js +224 -0
- package/shared/infrastructure/helper.js.map +1 -0
- package/shared/infrastructure/loggerBuilder.d.ts +4 -0
- package/shared/infrastructure/loggerBuilder.js +15 -0
- package/shared/infrastructure/loggerBuilder.js.map +1 -0
- package/shared/infrastructure/winstonLogger.d.ts +7 -0
- package/shared/infrastructure/winstonLogger.js +57 -0
- package/shared/infrastructure/winstonLogger.js.map +1 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { View, EntityView, PropertyView } from '../../../domain';
|
|
2
|
+
export declare class ViewConfigService {
|
|
3
|
+
private view;
|
|
4
|
+
constructor(view: View);
|
|
5
|
+
get name(): string;
|
|
6
|
+
get(): View;
|
|
7
|
+
set(value: View): void;
|
|
8
|
+
get entities(): EntityView[];
|
|
9
|
+
getEntity(name: string): EntityView | undefined;
|
|
10
|
+
getProperty(entityName: string, name: string): PropertyView | undefined;
|
|
11
|
+
excludeEntity(name: string): boolean;
|
|
12
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ViewConfigService = void 0;
|
|
4
|
+
class ViewConfigService {
|
|
5
|
+
constructor(view) {
|
|
6
|
+
this.view = view;
|
|
7
|
+
}
|
|
8
|
+
get name() {
|
|
9
|
+
return this.view.name;
|
|
10
|
+
}
|
|
11
|
+
get() {
|
|
12
|
+
return this.view;
|
|
13
|
+
}
|
|
14
|
+
set(value) {
|
|
15
|
+
this.view = value;
|
|
16
|
+
}
|
|
17
|
+
get entities() {
|
|
18
|
+
return this.view.entities ? this.view.entities : [];
|
|
19
|
+
}
|
|
20
|
+
getEntity(name) {
|
|
21
|
+
return this.view.entities ? this.view.entities.find(p => p.name === name) : undefined;
|
|
22
|
+
}
|
|
23
|
+
getProperty(entityName, name) {
|
|
24
|
+
const entity = this.getEntity(entityName);
|
|
25
|
+
if (!entity) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
return entity.properties ? entity.properties.find(p => p.name === name) : undefined;
|
|
29
|
+
}
|
|
30
|
+
excludeEntity(name) {
|
|
31
|
+
const entity = this.getEntity(name);
|
|
32
|
+
return entity ? !!entity.exclude : false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.ViewConfigService = ViewConfigService;
|
|
36
|
+
//# sourceMappingURL=viewConfigService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewConfigService.js","sourceRoot":"","sources":["../../../../../../src/lib/schema/application/services/config/viewConfigService.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;IAE7B,YAAa,IAAU;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACjB,CAAC;IAED,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;IACtB,CAAC;IAEM,GAAG;QACT,OAAO,IAAI,CAAC,IAAI,CAAA;IACjB,CAAC;IAEM,GAAG,CAAE,KAAW;QACtB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;IAClB,CAAC;IAED,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IACpD,CAAC;IAEM,SAAS,CAAE,IAAY;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACtF,CAAC;IAEM,WAAW,CAAE,UAAkB,EAAE,IAAY;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,OAAO,SAAS,CAAA;QACjB,CAAC;QACD,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACpF,CAAC;IAEM,aAAa,CAAE,IAAY;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;IACzC,CAAC;CACD;AAtCD,8CAsCC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { View } from '../../../domain';
|
|
2
|
+
import { ViewConfigService } from './viewConfigService';
|
|
3
|
+
export declare class ViewsConfigService {
|
|
4
|
+
views: View[];
|
|
5
|
+
constructor();
|
|
6
|
+
load(value: View): void;
|
|
7
|
+
get(name?: string): View;
|
|
8
|
+
getInstance(name?: string): ViewConfigService;
|
|
9
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ViewsConfigService = void 0;
|
|
4
|
+
const domain_1 = require("../../../domain");
|
|
5
|
+
const viewConfigService_1 = require("./viewConfigService");
|
|
6
|
+
class ViewsConfigService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.views = [];
|
|
9
|
+
}
|
|
10
|
+
load(value) {
|
|
11
|
+
if (value && value.name) {
|
|
12
|
+
if (!value.entities) {
|
|
13
|
+
value.entities = [];
|
|
14
|
+
}
|
|
15
|
+
const index = this.views.findIndex(p => p.name === value.name);
|
|
16
|
+
if (index === -1) {
|
|
17
|
+
this.views.push(value);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
this.views[index] = value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
get(name) {
|
|
25
|
+
if (name === undefined) {
|
|
26
|
+
return this.views[0];
|
|
27
|
+
}
|
|
28
|
+
const view = this.views.find(p => p.name === name);
|
|
29
|
+
if (view === undefined) {
|
|
30
|
+
throw new domain_1.SchemaError(`View: ${name} not found`);
|
|
31
|
+
}
|
|
32
|
+
return view;
|
|
33
|
+
}
|
|
34
|
+
getInstance(name) {
|
|
35
|
+
const view = this.get(name);
|
|
36
|
+
if (!view) {
|
|
37
|
+
throw new domain_1.SchemaError(`view ${name} not found`);
|
|
38
|
+
}
|
|
39
|
+
return new viewConfigService_1.ViewConfigService(view);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.ViewsConfigService = ViewsConfigService;
|
|
43
|
+
//# sourceMappingURL=viewsConfigService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewsConfigService.js","sourceRoot":"","sources":["../../../../../../src/lib/schema/application/services/config/viewsConfigService.ts"],"names":[],"mappings":";;;AAAA,4CAAmD;AACnD,2DAAuD;AAEvD,MAAa,kBAAkB;IAG9B;QACC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IAChB,CAAC;IAEM,IAAI,CAAE,KAAW;QACvB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrB,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAA;YACpB,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAA;YAC9D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;YAC1B,CAAC;QACF,CAAC;IACF,CAAC;IAEM,GAAG,CAAE,IAAa;QACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QAClD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,oBAAW,CAAC,SAAS,IAAI,YAAY,CAAC,CAAA;QACjD,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IAEM,WAAW,CAAE,IAAa;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,oBAAW,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,IAAI,qCAAiB,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;CACD;AAvCD,gDAuCC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Entity } from '../../domain';
|
|
2
|
+
import { Type } from 'typ3s';
|
|
3
|
+
import { SchemaHelper } from '../../infrastructure/schemaHelper';
|
|
4
|
+
export declare class CreateEntitiesService {
|
|
5
|
+
private readonly helper;
|
|
6
|
+
constructor(helper: SchemaHelper);
|
|
7
|
+
getEntities(name: string, type: Type): Entity[];
|
|
8
|
+
private typeToEntities;
|
|
9
|
+
private objTypeToEntities;
|
|
10
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateEntitiesService = void 0;
|
|
4
|
+
const domain_1 = require("../../domain");
|
|
5
|
+
const typ3s_1 = require("typ3s");
|
|
6
|
+
class CreateEntitiesService {
|
|
7
|
+
// eslint-disable-next-line no-useless-constructor
|
|
8
|
+
constructor(helper) {
|
|
9
|
+
this.helper = helper;
|
|
10
|
+
}
|
|
11
|
+
getEntities(name, type) {
|
|
12
|
+
return this.typeToEntities(name, type);
|
|
13
|
+
}
|
|
14
|
+
typeToEntities(name, type) {
|
|
15
|
+
if (typ3s_1.Type.isList(type) && type.list && typ3s_1.Type.isObj(type.list.items) && type.list.items.obj) {
|
|
16
|
+
return this.objTypeToEntities(name, type.list.items.obj);
|
|
17
|
+
}
|
|
18
|
+
else if (typ3s_1.Type.isObj(type) && type.obj) {
|
|
19
|
+
return this.objTypeToEntities(name, type.obj);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
objTypeToEntities(name, objType) {
|
|
26
|
+
var _a, _b, _c, _d;
|
|
27
|
+
const entities = [];
|
|
28
|
+
const pk = this.helper.getPk(objType);
|
|
29
|
+
const primaryKey = pk ? [pk.name] : [];
|
|
30
|
+
const entityName = this.helper.entityName(name);
|
|
31
|
+
const entity = { name: entityName, primaryKey, properties: [] };
|
|
32
|
+
for (const prop of objType.properties) {
|
|
33
|
+
if (prop.type && typ3s_1.Type.isPrimitive(prop.type)) {
|
|
34
|
+
const required = (prop.type.nullable === false && prop.type.undefinable === false);
|
|
35
|
+
const length = this.helper.lengthFromType(prop.type);
|
|
36
|
+
const type = this.helper.type(prop.type.primitive, length);
|
|
37
|
+
const property = { name: prop.name, type, required, length };
|
|
38
|
+
(_a = entity.properties) === null || _a === void 0 ? void 0 : _a.push(property);
|
|
39
|
+
if (prop.type.unique && (pk === undefined || pk.name !== prop.name)) {
|
|
40
|
+
if (!entity.uniqueKey)
|
|
41
|
+
entity.uniqueKey = [];
|
|
42
|
+
entity.uniqueKey.push(prop.name);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (prop.type && typ3s_1.Type.isObj(prop.type) && prop.type.obj) {
|
|
46
|
+
const fk = this.helper.getFk(prop.type.obj);
|
|
47
|
+
if (fk && fk.type) {
|
|
48
|
+
const propertyName = prop.name + this.helper.capitalize(fk.name);
|
|
49
|
+
const entityName = this.helper.entityName(prop.name);
|
|
50
|
+
const required = (prop.type.nullable === false && prop.type.undefinable === false);
|
|
51
|
+
const length = this.helper.lengthFromType(fk.type);
|
|
52
|
+
const type = this.helper.type(fk.type.primitive, length);
|
|
53
|
+
const property = { name: propertyName, type, required, length };
|
|
54
|
+
const composite = prop.type && prop.type.repeated !== undefined && prop.type.repeated === 0 ? true : undefined;
|
|
55
|
+
const relation = {
|
|
56
|
+
name: prop.name,
|
|
57
|
+
type: domain_1.RelationType.oneToMany,
|
|
58
|
+
from: propertyName,
|
|
59
|
+
entity: entityName,
|
|
60
|
+
to: fk.name,
|
|
61
|
+
composite
|
|
62
|
+
};
|
|
63
|
+
(_b = entity.properties) === null || _b === void 0 ? void 0 : _b.push(property);
|
|
64
|
+
if (!entity.relations)
|
|
65
|
+
entity.relations = [];
|
|
66
|
+
entity.relations.push(relation);
|
|
67
|
+
const relatedEntities = this.typeToEntities(entityName, prop.type);
|
|
68
|
+
const relatedEntity = relatedEntities.find(p => p.name === entityName);
|
|
69
|
+
if (relatedEntity && (!relatedEntity.primaryKey || relatedEntity.primaryKey.length === 0)) {
|
|
70
|
+
relatedEntity.primaryKey = [fk.name];
|
|
71
|
+
}
|
|
72
|
+
if (relatedEntities && relatedEntities.length > 0) {
|
|
73
|
+
entities.push(...relatedEntities);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if (prop.type && typ3s_1.Type.isList(prop.type) && ((_c = prop.type.list) === null || _c === void 0 ? void 0 : _c.items.obj)) {
|
|
78
|
+
if (pk && pk.type) {
|
|
79
|
+
const entityName = this.helper.entityName(prop.name);
|
|
80
|
+
const relatedEntities = this.typeToEntities(entityName, prop.type);
|
|
81
|
+
const relatedEntity = relatedEntities.find(p => p.name === entityName);
|
|
82
|
+
if (relatedEntity) {
|
|
83
|
+
if (prop.type && prop.type.repeatRate && prop.type.repeatRate > 0.02) {
|
|
84
|
+
const rpk = this.helper.getFk((_d = prop.type.list) === null || _d === void 0 ? void 0 : _d.items.obj);
|
|
85
|
+
if (rpk && rpk.type) {
|
|
86
|
+
// hay que crear una tabla intermediaria con el id de la entidad y el id de la entidad relacionada
|
|
87
|
+
const parentPropertyName = this.helper.refPropertyName(entity.name, pk.name);
|
|
88
|
+
const parentPropertyLength = this.helper.lengthFromType(pk.type);
|
|
89
|
+
const parentPropertyType = this.helper.type(pk.type.primitive, parentPropertyLength);
|
|
90
|
+
const parentProperty = { name: parentPropertyName, type: parentPropertyType, length: parentPropertyLength, required: true };
|
|
91
|
+
const childPropertyName = this.helper.refPropertyName(relatedEntity.name, rpk.name);
|
|
92
|
+
const childPropertyLength = this.helper.lengthFromType(rpk.type);
|
|
93
|
+
const childPropertyType = this.helper.type(rpk.type.primitive, childPropertyLength);
|
|
94
|
+
const childProperty = { name: childPropertyName, type: childPropertyType, length: childPropertyLength, required: true };
|
|
95
|
+
const intermediaEntityName = entity.name + this.helper.capitalize(prop.name);
|
|
96
|
+
const intermediaPropertyPk = { name: 'id', type: 'integer', required: true, autoIncrement: true };
|
|
97
|
+
const intermediaEntity = { name: intermediaEntityName, intermediate: true, primaryKey: ['id'], properties: [intermediaPropertyPk, childProperty, parentProperty], uniqueKey: [parentProperty.name, childProperty.name] };
|
|
98
|
+
const parentRelation = {
|
|
99
|
+
name: this.helper.relationName(entity.name),
|
|
100
|
+
type: domain_1.RelationType.oneToMany,
|
|
101
|
+
from: parentPropertyName,
|
|
102
|
+
entity: entity.name,
|
|
103
|
+
to: pk.name,
|
|
104
|
+
target: this.helper.relationName(intermediaEntityName)
|
|
105
|
+
};
|
|
106
|
+
const childRelation = {
|
|
107
|
+
name: this.helper.relationName(relatedEntity.name),
|
|
108
|
+
type: domain_1.RelationType.oneToMany,
|
|
109
|
+
from: childPropertyName,
|
|
110
|
+
entity: relatedEntity.name,
|
|
111
|
+
to: rpk.name,
|
|
112
|
+
target: this.helper.relationName(intermediaEntityName)
|
|
113
|
+
};
|
|
114
|
+
if (!intermediaEntity.relations)
|
|
115
|
+
intermediaEntity.relations = [];
|
|
116
|
+
intermediaEntity.relations.push(parentRelation);
|
|
117
|
+
intermediaEntity.relations.push(childRelation);
|
|
118
|
+
entities.push(intermediaEntity);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
const propertyName = this.helper.refPropertyName(entity.name, pk.name);
|
|
123
|
+
const relatedPropertyLength = this.helper.lengthFromType(pk.type);
|
|
124
|
+
const relatedPropertyType = this.helper.type(pk.type.primitive, relatedPropertyLength);
|
|
125
|
+
const relatedProperty = { name: propertyName, type: relatedPropertyType, length: relatedPropertyLength, required: true };
|
|
126
|
+
const composite = prop.type && prop.type.repeated !== undefined && prop.type.repeated === 0;
|
|
127
|
+
const relation = {
|
|
128
|
+
name: this.helper.relationName(entity.name),
|
|
129
|
+
type: domain_1.RelationType.oneToMany,
|
|
130
|
+
from: propertyName,
|
|
131
|
+
entity: entity.name,
|
|
132
|
+
to: pk.name,
|
|
133
|
+
target: composite ? undefined : prop.name
|
|
134
|
+
};
|
|
135
|
+
if (relatedEntity.properties === undefined) {
|
|
136
|
+
relatedEntity.properties = [];
|
|
137
|
+
}
|
|
138
|
+
relatedEntity.properties.push(relatedProperty);
|
|
139
|
+
if (!relatedEntity.relations)
|
|
140
|
+
relatedEntity.relations = [];
|
|
141
|
+
relatedEntity.relations.push(relation);
|
|
142
|
+
if (composite) {
|
|
143
|
+
const compositeRelation = {
|
|
144
|
+
name: prop.name,
|
|
145
|
+
type: domain_1.RelationType.manyToOne,
|
|
146
|
+
from: pk.name,
|
|
147
|
+
entity: relatedEntity.name,
|
|
148
|
+
to: propertyName,
|
|
149
|
+
composite
|
|
150
|
+
};
|
|
151
|
+
if (!entity.relations)
|
|
152
|
+
entity.relations = [];
|
|
153
|
+
entity.relations.push(compositeRelation);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (relatedEntities && relatedEntities.length > 0) {
|
|
158
|
+
entities.push(...relatedEntities);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
entities.push(entity);
|
|
164
|
+
return entities;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.CreateEntitiesService = CreateEntitiesService;
|
|
168
|
+
//# sourceMappingURL=createEntitiesService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createEntitiesService.js","sourceRoot":"","sources":["../../../../../src/lib/schema/application/services/createEntitiesService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SchemaData } from '../../domain';
|
|
2
|
+
import { Type } from 'typ3s';
|
|
3
|
+
import { SchemaHelper } from '../../infrastructure/schemaHelper';
|
|
4
|
+
export declare class InterpretSchemaDataService {
|
|
5
|
+
private readonly helper;
|
|
6
|
+
constructor(helper: SchemaHelper);
|
|
7
|
+
completeSchemaData(source: any, name: string, type: Type, schemaData: SchemaData): void;
|
|
8
|
+
private objectsToRows;
|
|
9
|
+
private objectToRow;
|
|
10
|
+
private getSchemaEntityData;
|
|
11
|
+
private addRows;
|
|
12
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InterpretSchemaDataService = void 0;
|
|
4
|
+
const typ3s_1 = require("typ3s");
|
|
5
|
+
class InterpretSchemaDataService {
|
|
6
|
+
// eslint-disable-next-line no-useless-constructor
|
|
7
|
+
constructor(helper) {
|
|
8
|
+
this.helper = helper;
|
|
9
|
+
}
|
|
10
|
+
completeSchemaData(source, name, type, schemaData) {
|
|
11
|
+
const entityName = this.helper.entityName(name);
|
|
12
|
+
if (typ3s_1.Type.isList(type) && type.list && typ3s_1.Type.isObj(type.list.items) && type.list.items.obj) {
|
|
13
|
+
const children = this.objectsToRows(schemaData, type.list.items.obj, source, entityName, this.helper.getPkName(type.list.items.obj));
|
|
14
|
+
this.addRows(schemaData, entityName, children);
|
|
15
|
+
}
|
|
16
|
+
else if (typ3s_1.Type.isObj(type) && type.obj) {
|
|
17
|
+
const pkName = this.helper.getPkName(type.obj);
|
|
18
|
+
if (pkName === '_id') {
|
|
19
|
+
source[pkName] = this.helper.newId();
|
|
20
|
+
}
|
|
21
|
+
this.objectToRow(schemaData, type.obj, source, entityName, pkName);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
objectsToRows(schemaData, objType, source, entityName, pkName, excludeRepeated = true) {
|
|
25
|
+
const rows = [];
|
|
26
|
+
if (excludeRepeated) {
|
|
27
|
+
const schemaEntityData = this.getSchemaEntityData(schemaData, entityName);
|
|
28
|
+
for (const item of source) {
|
|
29
|
+
if (pkName === '_id') {
|
|
30
|
+
item[pkName] = this.helper.newId();
|
|
31
|
+
}
|
|
32
|
+
else if (schemaEntityData.rows.some(p => p[pkName] === item[pkName])) {
|
|
33
|
+
// En el caso de que el id ya exista, no se añade la fila
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const row = this.objectToRow(schemaData, objType, item, entityName, pkName);
|
|
37
|
+
rows.push(row);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
for (const item of source) {
|
|
42
|
+
if (pkName === '_id') {
|
|
43
|
+
item[pkName] = this.helper.newId();
|
|
44
|
+
}
|
|
45
|
+
const row = this.objectToRow(schemaData, objType, item, entityName, pkName);
|
|
46
|
+
rows.push(row);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return rows;
|
|
50
|
+
}
|
|
51
|
+
objectToRow(schemaData, objType, source, entityName, pkName) {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
const row = {};
|
|
54
|
+
for (const prop of objType.properties) {
|
|
55
|
+
const value = source[prop.name];
|
|
56
|
+
if (value === undefined) {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (prop.type && typ3s_1.Type.isPrimitive(prop.type)) {
|
|
60
|
+
row[prop.name] = value;
|
|
61
|
+
}
|
|
62
|
+
else if (prop.type && typ3s_1.Type.isObj(prop.type) && prop.type.obj) {
|
|
63
|
+
const fk = this.helper.getFk(prop.type.obj);
|
|
64
|
+
if (fk && fk.type) {
|
|
65
|
+
const propertyName = prop.name + this.helper.capitalize(fk.name);
|
|
66
|
+
const relatedEntityName = this.helper.entityName(prop.name);
|
|
67
|
+
const relatedPkName = this.helper.getPkName(prop.type.obj);
|
|
68
|
+
if (prop.type && prop.type.repeated !== undefined && prop.type.repeated === 0) {
|
|
69
|
+
const childRow = this.objectToRow(schemaData, prop.type.obj, value, relatedEntityName, relatedPkName);
|
|
70
|
+
row[prop.name] = childRow;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const fkValue = value[fk.name];
|
|
74
|
+
if (fkValue !== undefined) {
|
|
75
|
+
row[propertyName] = fkValue;
|
|
76
|
+
}
|
|
77
|
+
const schemaEntityData = this.getSchemaEntityData(schemaData, relatedEntityName);
|
|
78
|
+
if (relatedPkName === '_id') {
|
|
79
|
+
row[relatedPkName] = this.helper.newId();
|
|
80
|
+
}
|
|
81
|
+
else if (!schemaEntityData.rows.some(p => p[relatedPkName] === value[relatedPkName])) {
|
|
82
|
+
// En el caso que el registro no exista, se añade
|
|
83
|
+
const childRow = this.objectToRow(schemaData, prop.type.obj, value, relatedEntityName, relatedPkName);
|
|
84
|
+
schemaEntityData.rows.push(childRow);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else if (prop.type && typ3s_1.Type.isList(prop.type) && ((_a = prop.type.list) === null || _a === void 0 ? void 0 : _a.items.obj)) {
|
|
90
|
+
const relatedEntityName = this.helper.entityName(prop.name);
|
|
91
|
+
const relatedPkName = this.helper.getPkName(prop.type.list.items.obj);
|
|
92
|
+
if (prop.type && prop.type.repeatRate && prop.type.repeatRate > 0.02) {
|
|
93
|
+
const rpk = this.helper.getFk((_b = prop.type.list) === null || _b === void 0 ? void 0 : _b.items.obj);
|
|
94
|
+
if (rpk && rpk.type) {
|
|
95
|
+
// Crea una tabla intermediaria con el id de la entidad y el id de la entidad relacionada
|
|
96
|
+
const parentPropertyName = this.helper.refPropertyName(entityName, pkName);
|
|
97
|
+
const childPropertyName = this.helper.refPropertyName(relatedEntityName, rpk.name);
|
|
98
|
+
const intermediaEntityName = entityName + this.helper.capitalize(prop.name);
|
|
99
|
+
const parentValue = source[pkName];
|
|
100
|
+
const intermediateObjects = [];
|
|
101
|
+
for (const item of value) {
|
|
102
|
+
const obj = {};
|
|
103
|
+
obj[childPropertyName] = item[rpk.name];
|
|
104
|
+
obj[parentPropertyName] = parentValue;
|
|
105
|
+
intermediateObjects.push(obj);
|
|
106
|
+
}
|
|
107
|
+
this.addRows(schemaData, intermediaEntityName, intermediateObjects);
|
|
108
|
+
const children = this.objectsToRows(schemaData, prop.type.list.items.obj, value, relatedEntityName, relatedPkName);
|
|
109
|
+
this.addRows(schemaData, relatedEntityName, children);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else if (prop.type && prop.type.repeated !== undefined && prop.type.repeated === 0) {
|
|
113
|
+
const children = this.objectsToRows(schemaData, prop.type.list.items.obj, value, relatedEntityName, relatedPkName, false);
|
|
114
|
+
row[prop.name] = children;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const children = this.objectsToRows(schemaData, prop.type.list.items.obj, value, relatedEntityName, relatedPkName);
|
|
118
|
+
const propertyName = this.helper.refPropertyName(entityName, pkName);
|
|
119
|
+
for (const child of children) {
|
|
120
|
+
child[propertyName] = source[pkName];
|
|
121
|
+
}
|
|
122
|
+
this.addRows(schemaData, relatedEntityName, children);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return row;
|
|
127
|
+
}
|
|
128
|
+
getSchemaEntityData(schemaData, entityName) {
|
|
129
|
+
let schemaEntityData = schemaData.entities.find(p => p.entity === entityName);
|
|
130
|
+
if (!schemaEntityData) {
|
|
131
|
+
schemaEntityData = { entity: entityName, rows: [] };
|
|
132
|
+
schemaData.entities.push(schemaEntityData);
|
|
133
|
+
}
|
|
134
|
+
return schemaEntityData;
|
|
135
|
+
}
|
|
136
|
+
addRows(schemaData, entityName, rows) {
|
|
137
|
+
const schemaEntityData = this.getSchemaEntityData(schemaData, entityName);
|
|
138
|
+
schemaEntityData.rows.push(...rows);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.InterpretSchemaDataService = InterpretSchemaDataService;
|
|
142
|
+
//# sourceMappingURL=interpretSchemaDataService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpretSchemaDataService.js","sourceRoot":"","sources":["../../../../../src/lib/schema/application/services/interpretSchemaDataService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Expressions } from '3xpr';
|
|
2
|
+
import { SourceRule, IRouteService, SentenceInfo } from '../../domain';
|
|
3
|
+
import { StageConfigService } from './config/stageConfigService';
|
|
4
|
+
export declare class RouteService implements IRouteService {
|
|
5
|
+
private readonly stageConfigService;
|
|
6
|
+
private readonly exp;
|
|
7
|
+
constructor(stageConfigService: StageConfigService, exp: Expressions);
|
|
8
|
+
eval(source: SourceRule, info: SentenceInfo): boolean;
|
|
9
|
+
getSource(info: SentenceInfo, stage?: string): string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RouteService = void 0;
|
|
4
|
+
const domain_1 = require("../../domain");
|
|
5
|
+
class RouteService {
|
|
6
|
+
// eslint-disable-next-line no-useless-constructor
|
|
7
|
+
constructor(stageConfigService, exp) {
|
|
8
|
+
this.stageConfigService = stageConfigService;
|
|
9
|
+
this.exp = exp;
|
|
10
|
+
}
|
|
11
|
+
eval(source, info) {
|
|
12
|
+
if (source.condition === undefined)
|
|
13
|
+
return true;
|
|
14
|
+
return this.exp.eval(source.condition, info);
|
|
15
|
+
}
|
|
16
|
+
getSource(info, stage) {
|
|
17
|
+
// const contextInfo = this.getContextInfo(clauseInfo)
|
|
18
|
+
const _stage = this.stageConfigService.get(stage);
|
|
19
|
+
for (const i in _stage.sources) {
|
|
20
|
+
const source = _stage.sources[i];
|
|
21
|
+
if (source.condition === undefined) {
|
|
22
|
+
return source.name;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
const result = this.exp.eval(source.condition, info);
|
|
26
|
+
if (result) {
|
|
27
|
+
return source.name;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
throw new domain_1.SchemaError(`Undefined data source on stage ${_stage.name}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.RouteService = RouteService;
|
|
35
|
+
//# sourceMappingURL=routeService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeService.js","sourceRoot":"","sources":["../../../../../src/lib/schema/application/services/routeService.ts"],"names":[],"mappings":";;;AACA,yCAAmF;AAGnF,MAAa,YAAY;IACxB,kDAAkD;IAClD,YACkB,kBAAsC,EACtC,GAAe;QADf,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,QAAG,GAAH,GAAG,CAAY;IAAG,CAAC;IAE9B,IAAI,CAAE,MAAiB,EAAE,IAAkB;QACjD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAEM,SAAS,CAAE,IAAkB,EAAE,KAAc;QACnD,sDAAsD;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACjD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAChC,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACpC,OAAO,MAAM,CAAC,IAAI,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACP,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBACpD,IAAI,MAAM,EAAE,CAAC;oBACZ,OAAO,MAAM,CAAC,IAAI,CAAA;gBACnB,CAAC;YACF,CAAC;QACF,CAAC;QACD,MAAM,IAAI,oBAAW,CAAC,kCAAkC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACvE,CAAC;CACD;AA3BD,oCA2BC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Schema } from '../../domain';
|
|
2
|
+
import { Expressions } from '3xpr';
|
|
3
|
+
import { OrmBaseH3lp } from '../../../shared';
|
|
4
|
+
export declare class SchemaExtender {
|
|
5
|
+
private readonly exp;
|
|
6
|
+
private readonly helper;
|
|
7
|
+
constructor(exp: Expressions, helper: OrmBaseH3lp);
|
|
8
|
+
extend(schema: Schema): void;
|
|
9
|
+
private extendEnums;
|
|
10
|
+
private extendEntities;
|
|
11
|
+
private entitySecureArrays;
|
|
12
|
+
private extendMappings;
|
|
13
|
+
private extendDataSources;
|
|
14
|
+
private extendDataStages;
|
|
15
|
+
complete(schema: Schema): void;
|
|
16
|
+
isCompound(parent: any, child: any): boolean;
|
|
17
|
+
private clearEnums;
|
|
18
|
+
private clearEntities;
|
|
19
|
+
private completeEnums;
|
|
20
|
+
private completeEntities;
|
|
21
|
+
private completeEntity;
|
|
22
|
+
private completeEntityProperties;
|
|
23
|
+
private completeEntityRelations;
|
|
24
|
+
private completeRelations;
|
|
25
|
+
private completeRelation;
|
|
26
|
+
private completeDependents;
|
|
27
|
+
private extendEnum;
|
|
28
|
+
private extendEntity;
|
|
29
|
+
private extendMapping;
|
|
30
|
+
private extendEntityMapping;
|
|
31
|
+
private extendEntityMappingIndexes;
|
|
32
|
+
private extendEntityMappingProperties;
|
|
33
|
+
private completeMapping;
|
|
34
|
+
private clearMapping;
|
|
35
|
+
private clearMapping2;
|
|
36
|
+
private existsInMapping;
|
|
37
|
+
}
|