law-common 10.28.2-beta.3 → 10.28.2-beta.5
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.
|
@@ -4,7 +4,7 @@ export declare enum RelationType {
|
|
|
4
4
|
MANY = "many"
|
|
5
5
|
}
|
|
6
6
|
export declare abstract class BaseEntityModel<T extends EntityEnum | VirtualEntityEnum> {
|
|
7
|
-
|
|
7
|
+
readonly entityName: T;
|
|
8
8
|
constructor(entityName: T);
|
|
9
9
|
abstract getRelationConfigs(): any[];
|
|
10
10
|
populateRelationsByIndex(entityIndexMap: EntityIndexMap): void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EntityEnum, EntityIndexMap, EntityMap, EnumEntityType, EnumToModel, IApiEntity, IBaseEntityApiResponse, VirtualEntityEnum } from "../interface/entity.utils.interface";
|
|
2
|
+
import { BaseEntityModel } from "./base.entity.model";
|
|
2
3
|
export declare function mapToIndex(entityMap: EntityMap): EntityIndexMap;
|
|
3
4
|
export declare function getEntityIndexMap<T extends EntityEnum>(data: IBaseEntityApiResponse<EnumEntityType<T>>, baseEntity: T, reusedConfig?: {
|
|
4
5
|
existingEntityIndexMap: EntityIndexMap;
|
|
@@ -17,3 +18,22 @@ export declare function parseEntitiesWithoutModels<T extends EnumEntityType<Enti
|
|
|
17
18
|
[E in EntityEnum | VirtualEntityEnum]?: IApiEntity<EnumEntityType<E>>[];
|
|
18
19
|
};
|
|
19
20
|
export declare function removeEntityById(entityIndexMap: EntityIndexMap, entity: EntityEnum, id: number): void;
|
|
21
|
+
export declare class EntityModelRelationHelper {
|
|
22
|
+
entityMap: EntityMap;
|
|
23
|
+
entityModelMap: EntityMap;
|
|
24
|
+
entityModelIndexMap: EntityIndexMap;
|
|
25
|
+
constructor(entityMap: EntityMap);
|
|
26
|
+
private init;
|
|
27
|
+
private toEntityModelMap;
|
|
28
|
+
private fromEntityToEntityModel;
|
|
29
|
+
private toEntityModelIndexMap;
|
|
30
|
+
populateRelationsByEntityEnums(entityEnums: EntityEnum[]): EntityModelRelationHelper;
|
|
31
|
+
populateRelationsByEntityEnum(entityEnum: EntityEnum): void;
|
|
32
|
+
populateRelationsByEntityModel(entityModel: BaseEntityModel<EntityEnum | VirtualEntityEnum>): void;
|
|
33
|
+
addEntityModel<T extends EntityEnum | VirtualEntityEnum>(entityModel: BaseEntityModel<T>, config?: {
|
|
34
|
+
populateRelations?: boolean;
|
|
35
|
+
}): void;
|
|
36
|
+
addEntity<T extends EntityEnum | VirtualEntityEnum>(entity: EnumEntityType<T>, entityEnum: T, config?: {
|
|
37
|
+
populateRelations?: boolean;
|
|
38
|
+
}): void;
|
|
39
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.entityEnumToEntityModel = void 0;
|
|
3
|
+
exports.EntityModelRelationHelper = exports.entityEnumToEntityModel = void 0;
|
|
4
4
|
exports.mapToIndex = mapToIndex;
|
|
5
5
|
exports.getEntityIndexMap = getEntityIndexMap;
|
|
6
6
|
exports.populateRelationsFor = populateRelationsFor;
|
|
@@ -131,3 +131,74 @@ function removeEntityById(entityIndexMap, entity, id) {
|
|
|
131
131
|
delete entityIndexMap[entity][id];
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
+
class EntityModelRelationHelper {
|
|
135
|
+
constructor(entityMap) {
|
|
136
|
+
this.entityMap = entityMap;
|
|
137
|
+
this.entityModelMap = {};
|
|
138
|
+
this.entityModelIndexMap = {};
|
|
139
|
+
this.init();
|
|
140
|
+
}
|
|
141
|
+
init() {
|
|
142
|
+
this.toEntityModelMap();
|
|
143
|
+
this.toEntityModelIndexMap();
|
|
144
|
+
}
|
|
145
|
+
toEntityModelMap() {
|
|
146
|
+
for (const entityName in this.entityMap) {
|
|
147
|
+
if (!(entityName in exports.entityEnumToEntityModel)) {
|
|
148
|
+
throw new Error(`Unknown entity: ${entityName}`);
|
|
149
|
+
}
|
|
150
|
+
this.entityModelMap[entityName] = this.entityMap[entityName].map((entity) =>
|
|
151
|
+
// @ts-ignore
|
|
152
|
+
exports.entityEnumToEntityModel[entityName](entity));
|
|
153
|
+
}
|
|
154
|
+
return this;
|
|
155
|
+
}
|
|
156
|
+
fromEntityToEntityModel(entity, entityEnum) {
|
|
157
|
+
if (!(entityEnum in exports.entityEnumToEntityModel)) {
|
|
158
|
+
throw new Error(`Unknown entity: ${entityEnum}`);
|
|
159
|
+
}
|
|
160
|
+
return exports.entityEnumToEntityModel[entityEnum](entity);
|
|
161
|
+
}
|
|
162
|
+
toEntityModelIndexMap() {
|
|
163
|
+
this.entityModelIndexMap = Object.keys(this.entityModelMap).reduce((acc, key) => {
|
|
164
|
+
// @ts-ignore
|
|
165
|
+
acc[key] = this.entityModelMap[key].reduce((innerAcc, entity) => {
|
|
166
|
+
innerAcc[entity.id] = entity;
|
|
167
|
+
return innerAcc;
|
|
168
|
+
}, {});
|
|
169
|
+
return acc;
|
|
170
|
+
}, {});
|
|
171
|
+
return this;
|
|
172
|
+
}
|
|
173
|
+
populateRelationsByEntityEnums(entityEnums) {
|
|
174
|
+
entityEnums.forEach((entityEnum) => {
|
|
175
|
+
this.populateRelationsByEntityEnum(entityEnum);
|
|
176
|
+
});
|
|
177
|
+
return this;
|
|
178
|
+
}
|
|
179
|
+
populateRelationsByEntityEnum(entityEnum) {
|
|
180
|
+
for (const key of Object.keys(this.entityModelIndexMap[entityEnum] || {})) {
|
|
181
|
+
const entityModel = this.entityModelIndexMap[entityEnum][key];
|
|
182
|
+
entityModel.populateRelationsByIndex(this.entityModelIndexMap);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
populateRelationsByEntityModel(entityModel) {
|
|
186
|
+
entityModel.populateRelationsByIndex(this.entityModelIndexMap);
|
|
187
|
+
}
|
|
188
|
+
addEntityModel(entityModel, config = { populateRelations: false }) {
|
|
189
|
+
const entityEnum = entityModel.entityName;
|
|
190
|
+
this.entityModelIndexMap[entityEnum] = this.entityModelIndexMap[entityEnum] || {};
|
|
191
|
+
// @ts-ignore
|
|
192
|
+
this.entityModelIndexMap[entityEnum][entityModel.id] = entityModel;
|
|
193
|
+
if (config.populateRelations) {
|
|
194
|
+
this.populateRelationsByEntityModel(entityModel);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
addEntity(entity, entityEnum, config = { populateRelations: false }) {
|
|
198
|
+
if (!(entityEnum in exports.entityEnumToEntityModel)) {
|
|
199
|
+
throw new Error(`Unknown entity: ${entityEnum}`);
|
|
200
|
+
}
|
|
201
|
+
this.addEntityModel(this.fromEntityToEntityModel(entity, entityEnum), config);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
exports.EntityModelRelationHelper = EntityModelRelationHelper;
|