@punks/backend-entity-manager 0.0.99 → 0.0.101
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/dist/cjs/index.js +165 -9
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/abstractions/configuration.d.ts +2 -2
- package/dist/cjs/types/abstractions/index.d.ts +1 -0
- package/dist/cjs/types/abstractions/settings.d.ts +7 -0
- package/dist/cjs/types/abstractions/versioning.d.ts +17 -0
- package/dist/cjs/types/commands/create.d.ts +2 -0
- package/dist/cjs/types/commands/delete.d.ts +2 -0
- package/dist/cjs/types/commands/update.d.ts +2 -0
- package/dist/cjs/types/commands/upsert.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.actions.d.ts +8 -0
- package/dist/cjs/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.controller.d.ts +13 -0
- package/dist/cjs/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.converter.d.ts +9 -0
- package/dist/cjs/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.dto.d.ts +37 -0
- package/dist/cjs/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.module.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/appEntityVersion.entity.d.ts +11 -0
- package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities.d.ts +2 -1
- package/dist/cjs/types/platforms/nest/__test__/server/database/core/index.d.ts +4 -0
- package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/appEntityVersion.repository.d.ts +7 -0
- package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories.d.ts +2 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.adapter.d.ts +7 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.authentication.d.ts +11 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.manager.d.ts +7 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.models.d.ts +13 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.module.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.query.d.ts +12 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.serializer.d.ts +6 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.types.d.ts +47 -0
- package/dist/cjs/types/platforms/nest/__test__/server/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/versioning/module.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/versioning/providers/entity-versioning/index.d.ts +8 -0
- package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/versioning/providers/index.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/__test__/tests/versioning/entity-versioning.test.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/decorators/entity.d.ts +4 -0
- package/dist/cjs/types/platforms/nest/decorators/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/decorators/versioning.d.ts +4 -0
- package/dist/cjs/types/platforms/nest/ioc/registry/index.d.ts +3 -2
- package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +3 -0
- package/dist/cjs/types/providers/services.d.ts +8 -1
- package/dist/cjs/types/symbols/ioc.d.ts +6 -0
- package/dist/esm/index.js +165 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/abstractions/configuration.d.ts +2 -2
- package/dist/esm/types/abstractions/index.d.ts +1 -0
- package/dist/esm/types/abstractions/settings.d.ts +7 -0
- package/dist/esm/types/abstractions/versioning.d.ts +17 -0
- package/dist/esm/types/commands/create.d.ts +2 -0
- package/dist/esm/types/commands/delete.d.ts +2 -0
- package/dist/esm/types/commands/update.d.ts +2 -0
- package/dist/esm/types/commands/upsert.d.ts +2 -0
- package/dist/esm/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.actions.d.ts +8 -0
- package/dist/esm/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.controller.d.ts +13 -0
- package/dist/esm/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.converter.d.ts +9 -0
- package/dist/esm/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.dto.d.ts +37 -0
- package/dist/esm/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.module.d.ts +2 -0
- package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/appEntityVersion.entity.d.ts +11 -0
- package/dist/esm/types/platforms/nest/__test__/server/database/core/entities.d.ts +2 -1
- package/dist/esm/types/platforms/nest/__test__/server/database/core/index.d.ts +4 -0
- package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/appEntityVersion.repository.d.ts +7 -0
- package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories.d.ts +2 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.adapter.d.ts +7 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.authentication.d.ts +11 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.manager.d.ts +7 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.models.d.ts +13 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.module.d.ts +2 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.query.d.ts +12 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.serializer.d.ts +6 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.types.d.ts +47 -0
- package/dist/esm/types/platforms/nest/__test__/server/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/__test__/server/infrastructure/versioning/module.d.ts +2 -0
- package/dist/esm/types/platforms/nest/__test__/server/infrastructure/versioning/providers/entity-versioning/index.d.ts +8 -0
- package/dist/esm/types/platforms/nest/__test__/server/infrastructure/versioning/providers/index.d.ts +2 -0
- package/dist/esm/types/platforms/nest/__test__/tests/versioning/entity-versioning.test.d.ts +1 -0
- package/dist/esm/types/platforms/nest/decorators/entity.d.ts +4 -0
- package/dist/esm/types/platforms/nest/decorators/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +1 -0
- package/dist/esm/types/platforms/nest/decorators/versioning.d.ts +4 -0
- package/dist/esm/types/platforms/nest/ioc/registry/index.d.ts +3 -2
- package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +3 -0
- package/dist/esm/types/providers/services.d.ts +8 -1
- package/dist/esm/types/symbols/ioc.d.ts +6 -0
- package/dist/index.d.ts +52 -7
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -109,6 +109,14 @@ exports.EntitySerializationFormat = void 0;
|
|
|
109
109
|
EntitySerializationFormat["Xlsx"] = "xlsx";
|
|
110
110
|
})(exports.EntitySerializationFormat || (exports.EntitySerializationFormat = {}));
|
|
111
111
|
|
|
112
|
+
exports.EntityVersionOperation = void 0;
|
|
113
|
+
(function (EntityVersionOperation) {
|
|
114
|
+
EntityVersionOperation["Create"] = "create";
|
|
115
|
+
EntityVersionOperation["Update"] = "update";
|
|
116
|
+
EntityVersionOperation["Upsert"] = "upsert";
|
|
117
|
+
EntityVersionOperation["Delete"] = "delete";
|
|
118
|
+
})(exports.EntityVersionOperation || (exports.EntityVersionOperation = {}));
|
|
119
|
+
|
|
112
120
|
class EntitySeeder {
|
|
113
121
|
constructor() {
|
|
114
122
|
this.logger = backendCore.Log.getLogger(EntitySeeder.name);
|
|
@@ -458,9 +466,11 @@ class EntityCreateCommand {
|
|
|
458
466
|
this.services = services;
|
|
459
467
|
}
|
|
460
468
|
async execute(input) {
|
|
461
|
-
|
|
469
|
+
const entity = this.adaptEntity(input);
|
|
462
470
|
await this.authorize(entity);
|
|
463
|
-
|
|
471
|
+
const createdItem = await this.services.resolveRepository().create(entity);
|
|
472
|
+
// todo: parametrize id field
|
|
473
|
+
await this.versionEntity(createdItem.id, createdItem);
|
|
464
474
|
await this.services
|
|
465
475
|
.resolveEventsManager()
|
|
466
476
|
.processEntityCreatedEvent(createdItem);
|
|
@@ -486,6 +496,27 @@ class EntityCreateCommand {
|
|
|
486
496
|
if (!authorizationResult.isAuthorized)
|
|
487
497
|
throw new EntityOperationUnauthorizedException(exports.EntityOperationType.Create, this.services.getEntityName(), entity);
|
|
488
498
|
}
|
|
499
|
+
async versionEntity(id, entity) {
|
|
500
|
+
if (!this.isVersioningEnabled()) {
|
|
501
|
+
return;
|
|
502
|
+
}
|
|
503
|
+
const versioning = this.services.resolveVersioningProvider();
|
|
504
|
+
if (!versioning) {
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
const contextService = this.services.resolveAuthenticationContextProvider();
|
|
508
|
+
const context = await contextService?.getContext();
|
|
509
|
+
await versioning.versionEntity({
|
|
510
|
+
operationType: exports.EntityVersionOperation.Create,
|
|
511
|
+
entityId: id,
|
|
512
|
+
entityType: this.services.getEntityName(),
|
|
513
|
+
data: entity,
|
|
514
|
+
modifiedByUserId: context?.userId,
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
isVersioningEnabled() {
|
|
518
|
+
return (this.services.resolveEntityConfiguration().versioning?.enabled ?? false);
|
|
519
|
+
}
|
|
489
520
|
}
|
|
490
521
|
|
|
491
522
|
class EntityDeleteCommand {
|
|
@@ -498,6 +529,7 @@ class EntityDeleteCommand {
|
|
|
498
529
|
}
|
|
499
530
|
await this.authorize(id);
|
|
500
531
|
await this.services.resolveRepository().delete(id);
|
|
532
|
+
await this.versionEntity(id);
|
|
501
533
|
await this.services.resolveEventsManager().processEntityDeletedEvent(id);
|
|
502
534
|
}
|
|
503
535
|
async authorize(id) {
|
|
@@ -518,6 +550,26 @@ class EntityDeleteCommand {
|
|
|
518
550
|
if (!authorizationResult.isAuthorized)
|
|
519
551
|
throw new EntityOperationUnauthorizedException(exports.EntityOperationType.Delete, this.services.getEntityName(), entity);
|
|
520
552
|
}
|
|
553
|
+
async versionEntity(id) {
|
|
554
|
+
if (!this.isVersioningEnabled()) {
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
const versioning = this.services.resolveVersioningProvider();
|
|
558
|
+
if (!versioning) {
|
|
559
|
+
return;
|
|
560
|
+
}
|
|
561
|
+
const contextService = this.services.resolveAuthenticationContextProvider();
|
|
562
|
+
const context = await contextService?.getContext();
|
|
563
|
+
await versioning.versionEntity({
|
|
564
|
+
operationType: exports.EntityVersionOperation.Delete,
|
|
565
|
+
entityId: id,
|
|
566
|
+
entityType: this.services.getEntityName(),
|
|
567
|
+
modifiedByUserId: context?.userId,
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
isVersioningEnabled() {
|
|
571
|
+
return (this.services.resolveEntityConfiguration().versioning?.enabled ?? false);
|
|
572
|
+
}
|
|
521
573
|
}
|
|
522
574
|
|
|
523
575
|
class EntitiesDeleteCommand {
|
|
@@ -530,6 +582,7 @@ class EntitiesDeleteCommand {
|
|
|
530
582
|
const deleteResult = await this.services
|
|
531
583
|
.resolveQueryBuilder()
|
|
532
584
|
.delete(params.filters, context);
|
|
585
|
+
// todo: version deleted entities
|
|
533
586
|
// todo: add entities deleted event
|
|
534
587
|
return deleteResult;
|
|
535
588
|
}
|
|
@@ -710,6 +763,7 @@ class EntityUpdateCommand {
|
|
|
710
763
|
const updatedEntity = await this.services
|
|
711
764
|
.resolveRepository()
|
|
712
765
|
.update(id, entity);
|
|
766
|
+
await this.versionEntity(id, updatedEntity);
|
|
713
767
|
await this.services
|
|
714
768
|
.resolveEventsManager()
|
|
715
769
|
.processEntityUpdatedEvent(updatedEntity);
|
|
@@ -739,6 +793,27 @@ class EntityUpdateCommand {
|
|
|
739
793
|
if (!authorizationResult.isAuthorized)
|
|
740
794
|
throw new EntityOperationUnauthorizedException(exports.EntityOperationType.Create, this.services.getEntityName(), currentEntity);
|
|
741
795
|
}
|
|
796
|
+
async versionEntity(id, entity) {
|
|
797
|
+
if (!this.isVersioningEnabled()) {
|
|
798
|
+
return;
|
|
799
|
+
}
|
|
800
|
+
const versioning = this.services.resolveVersioningProvider();
|
|
801
|
+
if (!versioning) {
|
|
802
|
+
return;
|
|
803
|
+
}
|
|
804
|
+
const contextService = this.services.resolveAuthenticationContextProvider();
|
|
805
|
+
const context = await contextService?.getContext();
|
|
806
|
+
await versioning.versionEntity({
|
|
807
|
+
operationType: exports.EntityVersionOperation.Update,
|
|
808
|
+
entityId: id,
|
|
809
|
+
entityType: this.services.getEntityName(),
|
|
810
|
+
data: entity,
|
|
811
|
+
modifiedByUserId: context?.userId,
|
|
812
|
+
});
|
|
813
|
+
}
|
|
814
|
+
isVersioningEnabled() {
|
|
815
|
+
return (this.services.resolveEntityConfiguration().versioning?.enabled ?? false);
|
|
816
|
+
}
|
|
742
817
|
}
|
|
743
818
|
|
|
744
819
|
class EntityUpsertCommand {
|
|
@@ -749,6 +824,7 @@ class EntityUpsertCommand {
|
|
|
749
824
|
const entity = this.adaptEntity(data);
|
|
750
825
|
await this.authorize(id, entity);
|
|
751
826
|
const updatedEntity = await this.upsertEntity(id, entity);
|
|
827
|
+
await this.versionEntity(id, updatedEntity);
|
|
752
828
|
await this.services
|
|
753
829
|
.resolveEventsManager()
|
|
754
830
|
.processEntityUpdatedEvent(updatedEntity);
|
|
@@ -784,6 +860,27 @@ class EntityUpsertCommand {
|
|
|
784
860
|
if (!authorizationResult.isAuthorized)
|
|
785
861
|
throw new EntityOperationUnauthorizedException(exports.EntityOperationType.Create, this.services.getEntityName(), entity);
|
|
786
862
|
}
|
|
863
|
+
async versionEntity(id, entity) {
|
|
864
|
+
if (!this.isVersioningEnabled()) {
|
|
865
|
+
return;
|
|
866
|
+
}
|
|
867
|
+
const versioning = this.services.resolveVersioningProvider();
|
|
868
|
+
if (!versioning) {
|
|
869
|
+
return;
|
|
870
|
+
}
|
|
871
|
+
const contextService = this.services.resolveAuthenticationContextProvider();
|
|
872
|
+
const context = await contextService?.getContext();
|
|
873
|
+
await versioning.versionEntity({
|
|
874
|
+
operationType: exports.EntityVersionOperation.Upsert,
|
|
875
|
+
entityId: id,
|
|
876
|
+
entityType: this.services.getEntityName(),
|
|
877
|
+
data: entity,
|
|
878
|
+
modifiedByUserId: context?.userId,
|
|
879
|
+
});
|
|
880
|
+
}
|
|
881
|
+
isVersioningEnabled() {
|
|
882
|
+
return (this.services.resolveEntityConfiguration().versioning?.enabled ?? false);
|
|
883
|
+
}
|
|
787
884
|
}
|
|
788
885
|
|
|
789
886
|
class EntityManager {
|
|
@@ -969,6 +1066,9 @@ const EntityServices = {
|
|
|
969
1066
|
Storage: {
|
|
970
1067
|
IEntityRepository: "IEntityRepository",
|
|
971
1068
|
},
|
|
1069
|
+
Settings: {
|
|
1070
|
+
IEntityConfiguration: "IEntityConfiguration",
|
|
1071
|
+
},
|
|
972
1072
|
};
|
|
973
1073
|
const GlobalServices = {
|
|
974
1074
|
Events: {
|
|
@@ -986,6 +1086,9 @@ const GlobalServices = {
|
|
|
986
1086
|
IEmailTemplatesCollection: "IEmailTemplatesCollection",
|
|
987
1087
|
IBucketProvider: "IBucketProvider",
|
|
988
1088
|
},
|
|
1089
|
+
Versioning: {
|
|
1090
|
+
IEntityVersioningProvider: "IEntityVersioningProvider",
|
|
1091
|
+
},
|
|
989
1092
|
};
|
|
990
1093
|
|
|
991
1094
|
class EntityServiceLocator {
|
|
@@ -1011,6 +1114,12 @@ class EntityServiceLocator {
|
|
|
1011
1114
|
resolveEventsManager() {
|
|
1012
1115
|
return this.services.resolveEventsManager(this.entityName);
|
|
1013
1116
|
}
|
|
1117
|
+
resolveVersioningProvider() {
|
|
1118
|
+
return this.services.resolveEntityVersioningProvider();
|
|
1119
|
+
}
|
|
1120
|
+
resolveEntityConfiguration() {
|
|
1121
|
+
return this.services.resolveEntityConfiguration(this.entityName);
|
|
1122
|
+
}
|
|
1014
1123
|
resolveReplicaSyncManager() {
|
|
1015
1124
|
return this.services.resolveReplicaSyncManager(this.entityName);
|
|
1016
1125
|
}
|
|
@@ -1141,6 +1250,12 @@ class EntitiesServiceLocator {
|
|
|
1141
1250
|
registerEmailProvider(instance) {
|
|
1142
1251
|
this.provider.register(GlobalServices.Plugins.IEmailProvider, instance);
|
|
1143
1252
|
}
|
|
1253
|
+
resolveEntityVersioningProvider() {
|
|
1254
|
+
return this.provider.resolve(GlobalServices.Versioning.IEntityVersioningProvider);
|
|
1255
|
+
}
|
|
1256
|
+
registerEntityVersioningProvider(instance) {
|
|
1257
|
+
this.provider.register(GlobalServices.Versioning.IEntityVersioningProvider, instance);
|
|
1258
|
+
}
|
|
1144
1259
|
resolveBucketProvider() {
|
|
1145
1260
|
return this.provider.resolve(GlobalServices.Plugins.IBucketProvider);
|
|
1146
1261
|
}
|
|
@@ -1173,6 +1288,12 @@ class EntitiesServiceLocator {
|
|
|
1173
1288
|
registerAuthenticationContextProvider(instance) {
|
|
1174
1289
|
this.provider.register(GlobalServices.Authentication.IAuthenticationContextProvider, instance);
|
|
1175
1290
|
}
|
|
1291
|
+
resolveEntityConfiguration(entityName) {
|
|
1292
|
+
return this.provider.resolveEntityService(EntityServices.Settings.IEntityConfiguration, entityName);
|
|
1293
|
+
}
|
|
1294
|
+
registerEntityConfiguration(entityName, instance) {
|
|
1295
|
+
return this.provider.registerEntityService(EntityServices.Settings.IEntityConfiguration, entityName, instance);
|
|
1296
|
+
}
|
|
1176
1297
|
resolveEntityManager(entityName) {
|
|
1177
1298
|
return this.provider.resolveEntityService(EntityServices.Services.IEntityManager, entityName);
|
|
1178
1299
|
}
|
|
@@ -1771,11 +1892,13 @@ class EntityManagerServiceRoot {
|
|
|
1771
1892
|
addAuthentication({ provider }) {
|
|
1772
1893
|
this.getEntitiesServicesLocator().registerAuthenticationContextProvider(provider);
|
|
1773
1894
|
}
|
|
1774
|
-
registerEntity(
|
|
1895
|
+
registerEntity(entity, repository) {
|
|
1896
|
+
const { name: entityName } = entity;
|
|
1775
1897
|
const collection = new EntityManagerServiceCollection(entityName, this.getEntitiesServicesLocator());
|
|
1776
1898
|
const services = this.getEntityServicesLocator(entityName);
|
|
1777
1899
|
collection.locator.registerEntityManager(entityName, new EntityManager(services));
|
|
1778
1900
|
collection.locator.registerEntityActions(entityName, new EntityActions(services));
|
|
1901
|
+
collection.locator.registerEntityConfiguration(entityName, entity);
|
|
1779
1902
|
collection.locator.registerRepository(entityName, repository);
|
|
1780
1903
|
const replicaManager = new EntityReplicaManager(services);
|
|
1781
1904
|
collection.locator.registerReplicaSyncManager(entityName, replicaManager);
|
|
@@ -1957,6 +2080,7 @@ const EntityManagerSymbols = {
|
|
|
1957
2080
|
EntityManager: Symbol.for("WP:ENTITY_MANAGER"),
|
|
1958
2081
|
EntityQueryBuilder: Symbol.for("WP:ENTITY_QUERY_BUILDER"),
|
|
1959
2082
|
EntitySeeder: Symbol.for("WP:ENTITY_SEEDER"),
|
|
2083
|
+
EntityVersioningProvider: Symbol.for("WP:ENTITY_VERSIONING_PROVIDER"),
|
|
1960
2084
|
EmailProvider: Symbol.for("WP:EMAIL_PROVIDER"),
|
|
1961
2085
|
EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
|
|
1962
2086
|
BucketProvider: Symbol.for("WP:BUCKET_PROVIDER"),
|
|
@@ -2040,6 +2164,10 @@ const WpEventsTracker = (props = {}) => common.applyDecorators(common.Injectable
|
|
|
2040
2164
|
...props,
|
|
2041
2165
|
}));
|
|
2042
2166
|
|
|
2167
|
+
const WpEntityVersioningProvider = (props = {}) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.EntityVersioningProvider, {
|
|
2168
|
+
...props,
|
|
2169
|
+
}));
|
|
2170
|
+
|
|
2043
2171
|
/******************************************************************************
|
|
2044
2172
|
Copyright (c) Microsoft Corporation.
|
|
2045
2173
|
|
|
@@ -2303,12 +2431,12 @@ exports.EntityManagerRegistry = class EntityManagerRegistry {
|
|
|
2303
2431
|
.registerEventEmitter(eventEmitter);
|
|
2304
2432
|
}
|
|
2305
2433
|
}
|
|
2306
|
-
async registerDiscoveredEntity(app, { adapter, entityName, converter, queryBuilder, repository, authMiddleware, serializer, settings, }) {
|
|
2434
|
+
async registerDiscoveredEntity(app, { adapter, entityName, entity, converter, queryBuilder, repository, authMiddleware, serializer, settings, }) {
|
|
2307
2435
|
if (!repository.discoveredClass.injectType) {
|
|
2308
2436
|
throw new Error(`No inject type found for entity repository: ${entityName}`);
|
|
2309
2437
|
}
|
|
2310
2438
|
const repositoryInstance = (await app.resolve(repository.discoveredClass.injectType));
|
|
2311
|
-
const registration = this.container.registerEntity(
|
|
2439
|
+
const registration = this.container.registerEntity(entity.meta, repositoryInstance);
|
|
2312
2440
|
if (!serializer?.discoveredClass?.injectType) {
|
|
2313
2441
|
throw new Error(`No inject type found for entity serializer: ${entityName}`);
|
|
2314
2442
|
}
|
|
@@ -20867,6 +20995,7 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
20867
20995
|
await this.registerEmailTemplates();
|
|
20868
20996
|
await this.registerEmailProviders();
|
|
20869
20997
|
await this.registerEventTrackingProviders();
|
|
20998
|
+
await this.registerVersioningProviders();
|
|
20870
20999
|
await this.registerBucketProviders();
|
|
20871
21000
|
await this.executeInitializers(app);
|
|
20872
21001
|
await this.executeSeeders();
|
|
@@ -20878,21 +21007,27 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
20878
21007
|
});
|
|
20879
21008
|
}
|
|
20880
21009
|
async registerEntities(app, staticProviders) {
|
|
21010
|
+
const entities = await this.discoverEntities();
|
|
20881
21011
|
const repositories = await this.discoverRepositories();
|
|
20882
21012
|
const queryBuilders = await this.discoverQueryBuilders();
|
|
20883
21013
|
const converters = await this.discoverConverters();
|
|
20884
21014
|
const serializers = await this.discoverSerializers();
|
|
20885
21015
|
const adapters = await this.discoverAdapters();
|
|
20886
21016
|
const auth = await this.discoverAuthMiddlewares();
|
|
21017
|
+
const repositoriesDict = backendCore.toDict(repositories, (q) => q.meta.entityName);
|
|
20887
21018
|
const queryBuilderDict = backendCore.toDict(queryBuilders, (q) => q.meta.entityName);
|
|
20888
21019
|
const converterDict = backendCore.toDict(converters, (c) => c.meta.entityName);
|
|
20889
21020
|
const serializerDict = backendCore.toDict(serializers, (s) => s.meta.entityName);
|
|
20890
21021
|
const adapterDict = backendCore.toDict(adapters, (a) => a.meta.entityName);
|
|
20891
21022
|
const authDict = backendCore.toDict(auth, (a) => a.meta.entityName);
|
|
20892
|
-
const
|
|
20893
|
-
this.logger.log(`Discovered
|
|
20894
|
-
for (const
|
|
20895
|
-
const entityName =
|
|
21023
|
+
const sortedEntities = lodash.exports.orderBy(entities, (x) => x.meta.name);
|
|
21024
|
+
this.logger.log(`Discovered entities: \n${sortedEntities.join(" \n")}`);
|
|
21025
|
+
for (const entity of sortedEntities) {
|
|
21026
|
+
const entityName = entity.meta.name;
|
|
21027
|
+
const repository = repositoriesDict[entityName];
|
|
21028
|
+
if (!repository) {
|
|
21029
|
+
throw new Error(`No repository found for entity: ${entityName}`);
|
|
21030
|
+
}
|
|
20896
21031
|
const queryBuilder = queryBuilderDict[entityName];
|
|
20897
21032
|
if (!queryBuilder) {
|
|
20898
21033
|
throw new Error(`No query builder found for entity: ${entityName}`);
|
|
@@ -20903,6 +21038,7 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
20903
21038
|
const serializer = serializerDict[entityName];
|
|
20904
21039
|
await this.registry.registerDiscoveredEntity(app, {
|
|
20905
21040
|
entityName,
|
|
21041
|
+
entity,
|
|
20906
21042
|
adapter,
|
|
20907
21043
|
repository,
|
|
20908
21044
|
queryBuilder,
|
|
@@ -20965,6 +21101,19 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
20965
21101
|
.registerEventsTracker(providers[0].discoveredClass.instance);
|
|
20966
21102
|
this.logger.log(`Events tracker ${providers[0].discoveredClass.name} registered 🚜`);
|
|
20967
21103
|
}
|
|
21104
|
+
async registerVersioningProviders() {
|
|
21105
|
+
const providers = await this.discoverVersioningProviders();
|
|
21106
|
+
if (!providers.length) {
|
|
21107
|
+
return;
|
|
21108
|
+
}
|
|
21109
|
+
for (const provider of providers) {
|
|
21110
|
+
this.registry
|
|
21111
|
+
.getContainer()
|
|
21112
|
+
.getEntitiesServicesLocator()
|
|
21113
|
+
.registerEntityVersioningProvider(provider.discoveredClass.instance);
|
|
21114
|
+
this.logger.log(`Versioning provider ${provider.discoveredClass.name} registered 🚜`);
|
|
21115
|
+
}
|
|
21116
|
+
}
|
|
20968
21117
|
async registerEmailProviders() {
|
|
20969
21118
|
const providers = await this.discoverEmailProviders();
|
|
20970
21119
|
if (!providers.length) {
|
|
@@ -21001,9 +21150,15 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
21001
21150
|
.get(exports.ModulesContainerProvider)
|
|
21002
21151
|
.setModulesContainer(staticProviders.modulesContainer);
|
|
21003
21152
|
}
|
|
21153
|
+
async discoverEntities() {
|
|
21154
|
+
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.Entity);
|
|
21155
|
+
}
|
|
21004
21156
|
async discoverRepositories() {
|
|
21005
21157
|
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntityRepository);
|
|
21006
21158
|
}
|
|
21159
|
+
async discoverVersioningProviders() {
|
|
21160
|
+
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntityVersioningProvider);
|
|
21161
|
+
}
|
|
21007
21162
|
async discoverQueryBuilders() {
|
|
21008
21163
|
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntityQueryBuilder);
|
|
21009
21164
|
}
|
|
@@ -27453,6 +27608,7 @@ exports.WpEntityQueryBuilder = WpEntityQueryBuilder;
|
|
|
27453
27608
|
exports.WpEntityRepository = WpEntityRepository;
|
|
27454
27609
|
exports.WpEntitySeeder = WpEntitySeeder;
|
|
27455
27610
|
exports.WpEntitySerializer = WpEntitySerializer;
|
|
27611
|
+
exports.WpEntityVersioningTracker = WpEntityVersioningProvider;
|
|
27456
27612
|
exports.WpEventsTracker = WpEventsTracker;
|
|
27457
27613
|
exports.WpPipeline = WpPipeline;
|
|
27458
27614
|
exports.WpRolesService = WpRolesService;
|