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
- protected entityName: T;
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "law-common",
3
- "version": "10.28.2-beta.3",
3
+ "version": "10.28.2-beta.5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "files": [