@monorise/core 0.0.1-dev.0
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/configs/service.config.d.ts +5 -0
- package/dist/configs/service.config.d.ts.map +1 -0
- package/dist/configs/service.config.js +5 -0
- package/dist/configs/service.config.js.map +1 -0
- package/dist/constants/table.d.ts +4 -0
- package/dist/constants/table.d.ts.map +1 -0
- package/dist/constants/table.js +4 -0
- package/dist/constants/table.js.map +1 -0
- package/dist/controllers/entity/create-entity.controller.d.ts +8 -0
- package/dist/controllers/entity/create-entity.controller.d.ts.map +1 -0
- package/dist/controllers/entity/create-entity.controller.js +44 -0
- package/dist/controllers/entity/create-entity.controller.js.map +1 -0
- package/dist/controllers/entity/delete-entity.controller.d.ts +8 -0
- package/dist/controllers/entity/delete-entity.controller.d.ts.map +1 -0
- package/dist/controllers/entity/delete-entity.controller.js +29 -0
- package/dist/controllers/entity/delete-entity.controller.js.map +1 -0
- package/dist/controllers/entity/get-entity.controller.d.ts +8 -0
- package/dist/controllers/entity/get-entity.controller.d.ts.map +1 -0
- package/dist/controllers/entity/get-entity.controller.js +24 -0
- package/dist/controllers/entity/get-entity.controller.js.map +1 -0
- package/dist/controllers/entity/list-entities.controller.d.ts +8 -0
- package/dist/controllers/entity/list-entities.controller.d.ts.map +1 -0
- package/dist/controllers/entity/list-entities.controller.js +56 -0
- package/dist/controllers/entity/list-entities.controller.js.map +1 -0
- package/dist/controllers/entity/update-entity.controller.d.ts +8 -0
- package/dist/controllers/entity/update-entity.controller.d.ts.map +1 -0
- package/dist/controllers/entity/update-entity.controller.js +45 -0
- package/dist/controllers/entity/update-entity.controller.js.map +1 -0
- package/dist/controllers/entity/upsert-entity.controller.d.ts +12 -0
- package/dist/controllers/entity/upsert-entity.controller.d.ts.map +1 -0
- package/dist/controllers/entity/upsert-entity.controller.js +74 -0
- package/dist/controllers/entity/upsert-entity.controller.js.map +1 -0
- package/dist/controllers/mutual/create-mutual.controller.d.ts +8 -0
- package/dist/controllers/mutual/create-mutual.controller.d.ts.map +1 -0
- package/dist/controllers/mutual/create-mutual.controller.js +49 -0
- package/dist/controllers/mutual/create-mutual.controller.js.map +1 -0
- package/dist/controllers/mutual/delete-mutual.controller.d.ts +8 -0
- package/dist/controllers/mutual/delete-mutual.controller.d.ts.map +1 -0
- package/dist/controllers/mutual/delete-mutual.controller.js +31 -0
- package/dist/controllers/mutual/delete-mutual.controller.js.map +1 -0
- package/dist/controllers/mutual/get-mutual.controller.d.ts +8 -0
- package/dist/controllers/mutual/get-mutual.controller.d.ts.map +1 -0
- package/dist/controllers/mutual/get-mutual.controller.js +24 -0
- package/dist/controllers/mutual/get-mutual.controller.js.map +1 -0
- package/dist/controllers/mutual/list-entities-by-entity.controller.d.ts +8 -0
- package/dist/controllers/mutual/list-entities-by-entity.controller.d.ts.map +1 -0
- package/dist/controllers/mutual/list-entities-by-entity.controller.js +56 -0
- package/dist/controllers/mutual/list-entities-by-entity.controller.js.map +1 -0
- package/dist/controllers/mutual/update-mutual.controller.d.ts +8 -0
- package/dist/controllers/mutual/update-mutual.controller.d.ts.map +1 -0
- package/dist/controllers/mutual/update-mutual.controller.js +40 -0
- package/dist/controllers/mutual/update-mutual.controller.js.map +1 -0
- package/dist/controllers/setupRoutes.d.ts +5 -0
- package/dist/controllers/setupRoutes.d.ts.map +1 -0
- package/dist/controllers/setupRoutes.js +30 -0
- package/dist/controllers/setupRoutes.js.map +1 -0
- package/dist/controllers/tag/list-tags.controller.d.ts +8 -0
- package/dist/controllers/tag/list-tags.controller.d.ts.map +1 -0
- package/dist/controllers/tag/list-tags.controller.js +48 -0
- package/dist/controllers/tag/list-tags.controller.js.map +1 -0
- package/dist/data/DbUtils.d.ts +7 -0
- package/dist/data/DbUtils.d.ts.map +1 -0
- package/dist/data/DbUtils.js +23 -0
- package/dist/data/DbUtils.js.map +1 -0
- package/dist/data/Entity.d.ts +73 -0
- package/dist/data/Entity.d.ts.map +1 -0
- package/dist/data/Entity.js +361 -0
- package/dist/data/Entity.js.map +1 -0
- package/dist/data/EventUtils.d.ts +15 -0
- package/dist/data/EventUtils.d.ts.map +1 -0
- package/dist/data/EventUtils.js +35 -0
- package/dist/data/EventUtils.js.map +1 -0
- package/dist/data/FileObject.d.ts +62 -0
- package/dist/data/FileObject.d.ts.map +1 -0
- package/dist/data/FileObject.js +13 -0
- package/dist/data/FileObject.js.map +1 -0
- package/dist/data/Mutual.d.ts +94 -0
- package/dist/data/Mutual.d.ts.map +1 -0
- package/dist/data/Mutual.js +492 -0
- package/dist/data/Mutual.js.map +1 -0
- package/dist/data/ProjectionExpression.d.ts +6 -0
- package/dist/data/ProjectionExpression.d.ts.map +1 -0
- package/dist/data/ProjectionExpression.js +5 -0
- package/dist/data/ProjectionExpression.js.map +1 -0
- package/dist/data/Tag.d.ts +77 -0
- package/dist/data/Tag.d.ts.map +1 -0
- package/dist/data/Tag.js +330 -0
- package/dist/data/Tag.js.map +1 -0
- package/dist/data/abstract/Item.base.d.ts +11 -0
- package/dist/data/abstract/Item.base.d.ts.map +1 -0
- package/dist/data/abstract/Item.base.js +9 -0
- package/dist/data/abstract/Item.base.js.map +1 -0
- package/dist/data/abstract/Repository.base.d.ts +11 -0
- package/dist/data/abstract/Repository.base.d.ts.map +1 -0
- package/dist/data/abstract/Repository.base.js +54 -0
- package/dist/data/abstract/Repository.base.js.map +1 -0
- package/dist/errors/api-error.d.ts +23 -0
- package/dist/errors/api-error.d.ts.map +1 -0
- package/dist/errors/api-error.js +26 -0
- package/dist/errors/api-error.js.map +1 -0
- package/dist/errors/extendable-error.d.ts +18 -0
- package/dist/errors/extendable-error.d.ts.map +1 -0
- package/dist/errors/extendable-error.js +22 -0
- package/dist/errors/extendable-error.js.map +1 -0
- package/dist/errors/standard-error.d.ts +11 -0
- package/dist/errors/standard-error.d.ts.map +1 -0
- package/dist/errors/standard-error.js +21 -0
- package/dist/errors/standard-error.js.map +1 -0
- package/dist/helpers/dependencies.d.ts +8 -0
- package/dist/helpers/dependencies.d.ts.map +1 -0
- package/dist/helpers/dependencies.js +10 -0
- package/dist/helpers/dependencies.js.map +1 -0
- package/dist/helpers/event.d.ts +22 -0
- package/dist/helpers/event.d.ts.map +1 -0
- package/dist/helpers/event.js +47 -0
- package/dist/helpers/event.js.map +1 -0
- package/dist/helpers/fromLastKeyQuery.d.ts +3 -0
- package/dist/helpers/fromLastKeyQuery.d.ts.map +1 -0
- package/dist/helpers/fromLastKeyQuery.js +7 -0
- package/dist/helpers/fromLastKeyQuery.js.map +1 -0
- package/dist/helpers/sleep.d.ts +2 -0
- package/dist/helpers/sleep.d.ts.map +1 -0
- package/dist/helpers/sleep.js +2 -0
- package/dist/helpers/sleep.js.map +1 -0
- package/dist/helpers/toLastKeyResponse.d.ts +3 -0
- package/dist/helpers/toLastKeyResponse.d.ts.map +1 -0
- package/dist/helpers/toLastKeyResponse.js +7 -0
- package/dist/helpers/toLastKeyResponse.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/middlewares/entity-type-check.d.ts +4 -0
- package/dist/middlewares/entity-type-check.d.ts.map +1 -0
- package/dist/middlewares/entity-type-check.js +12 -0
- package/dist/middlewares/entity-type-check.js.map +1 -0
- package/dist/middlewares/mutual-type-check.d.ts +4 -0
- package/dist/middlewares/mutual-type-check.d.ts.map +1 -0
- package/dist/middlewares/mutual-type-check.js +13 -0
- package/dist/middlewares/mutual-type-check.js.map +1 -0
- package/dist/mock/entity.d.ts +5 -0
- package/dist/mock/entity.d.ts.map +1 -0
- package/dist/mock/entity.js +6 -0
- package/dist/mock/entity.js.map +1 -0
- package/dist/mock/monorise/admin.d.ts +127 -0
- package/dist/mock/monorise/admin.d.ts.map +1 -0
- package/dist/mock/monorise/admin.js +26 -0
- package/dist/mock/monorise/admin.js.map +1 -0
- package/dist/mock/monorise/course.d.ts +118 -0
- package/dist/mock/monorise/course.d.ts.map +1 -0
- package/dist/mock/monorise/course.js +53 -0
- package/dist/mock/monorise/course.js.map +1 -0
- package/dist/mock/monorise/index.d.ts +330 -0
- package/dist/mock/monorise/index.d.ts.map +1 -0
- package/dist/mock/monorise/index.js +19 -0
- package/dist/mock/monorise/index.js.map +1 -0
- package/dist/processors/create-entity-processor.d.ts +6 -0
- package/dist/processors/create-entity-processor.d.ts.map +1 -0
- package/dist/processors/create-entity-processor.js +32 -0
- package/dist/processors/create-entity-processor.js.map +1 -0
- package/dist/processors/mutual-processor.d.ts +16 -0
- package/dist/processors/mutual-processor.d.ts.map +1 -0
- package/dist/processors/mutual-processor.js +131 -0
- package/dist/processors/mutual-processor.js.map +1 -0
- package/dist/processors/prejoin-processor.d.ts +13 -0
- package/dist/processors/prejoin-processor.d.ts.map +1 -0
- package/dist/processors/prejoin-processor.js +149 -0
- package/dist/processors/prejoin-processor.js.map +1 -0
- package/dist/processors/replication-processor.d.ts +9 -0
- package/dist/processors/replication-processor.d.ts.map +1 -0
- package/dist/processors/replication-processor.js +179 -0
- package/dist/processors/replication-processor.js.map +1 -0
- package/dist/processors/tag-processor.d.ts +12 -0
- package/dist/processors/tag-processor.d.ts.map +1 -0
- package/dist/processors/tag-processor.js +105 -0
- package/dist/processors/tag-processor.js.map +1 -0
- package/dist/services/DependencyContainer.d.ts +63 -0
- package/dist/services/DependencyContainer.d.ts.map +1 -0
- package/dist/services/DependencyContainer.js +121 -0
- package/dist/services/DependencyContainer.js.map +1 -0
- package/dist/services/entity-service-lifecycle.d.ts +12 -0
- package/dist/services/entity-service-lifecycle.d.ts.map +1 -0
- package/dist/services/entity-service-lifecycle.js +32 -0
- package/dist/services/entity-service-lifecycle.js.map +1 -0
- package/dist/services/entity.service.d.ts +34 -0
- package/dist/services/entity.service.d.ts.map +1 -0
- package/dist/services/entity.service.js +117 -0
- package/dist/services/entity.service.js.map +1 -0
- package/dist/services/mutual.service.d.ts +64 -0
- package/dist/services/mutual.service.d.ts.map +1 -0
- package/dist/services/mutual.service.js +137 -0
- package/dist/services/mutual.service.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/entity.type.d.ts +20 -0
- package/dist/types/entity.type.d.ts.map +1 -0
- package/dist/types/entity.type.js +2 -0
- package/dist/types/entity.type.js.map +1 -0
- package/dist/types/event.d.ts +72 -0
- package/dist/types/event.d.ts.map +1 -0
- package/dist/types/event.js +74 -0
- package/dist/types/event.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { DynamoDB } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import { CORE_TABLE } from '../configs/service.config';
|
|
3
|
+
import { getDependencies } from '../helpers/dependencies';
|
|
4
|
+
import { DbUtils } from '../data/DbUtils';
|
|
5
|
+
import { EntityRepository } from '../data/Entity';
|
|
6
|
+
import { EventUtils } from '../data/EventUtils';
|
|
7
|
+
import { MutualRepository } from '../data/Mutual';
|
|
8
|
+
import { TagRepository } from '../data/Tag';
|
|
9
|
+
import { CreateEntityController } from '../controllers/entity/create-entity.controller';
|
|
10
|
+
import { DeleteEntityController } from '../controllers/entity/delete-entity.controller';
|
|
11
|
+
import { GetEntityController } from '../controllers/entity/get-entity.controller';
|
|
12
|
+
import { ListEntitiesController } from '../controllers/entity/list-entities.controller';
|
|
13
|
+
import { UpdateEntityController } from '../controllers/entity/update-entity.controller';
|
|
14
|
+
import { UpsertEntityController } from '../controllers/entity/upsert-entity.controller';
|
|
15
|
+
import { CreateMutualController } from '../controllers/mutual/create-mutual.controller';
|
|
16
|
+
import { DeleteMutualController } from '../controllers/mutual/delete-mutual.controller';
|
|
17
|
+
import { GetMutualController } from '../controllers/mutual/get-mutual.controller';
|
|
18
|
+
import { ListEntitiesByEntityController } from '../controllers/mutual/list-entities-by-entity.controller';
|
|
19
|
+
import { UpdateMutualController } from '../controllers/mutual/update-mutual.controller';
|
|
20
|
+
import { EntityService } from './entity.service';
|
|
21
|
+
import { MutualService } from './mutual.service';
|
|
22
|
+
import { ListTagsController } from '../controllers/tag/list-tags.controller';
|
|
23
|
+
import { EntityServiceLifeCycle } from './entity-service-lifecycle';
|
|
24
|
+
export class DependencyContainer {
|
|
25
|
+
config;
|
|
26
|
+
_instanceCache;
|
|
27
|
+
_publishEvent;
|
|
28
|
+
_tableName;
|
|
29
|
+
constructor(config) {
|
|
30
|
+
this.config = config;
|
|
31
|
+
this._instanceCache = new Map();
|
|
32
|
+
this._publishEvent = null;
|
|
33
|
+
this._tableName = CORE_TABLE;
|
|
34
|
+
}
|
|
35
|
+
createCachedInstance(ClassRef, ...args) {
|
|
36
|
+
const cacheKey = ClassRef.name;
|
|
37
|
+
if (this._instanceCache.has(cacheKey)) {
|
|
38
|
+
return this._instanceCache.get(cacheKey);
|
|
39
|
+
}
|
|
40
|
+
const instance = new ClassRef(...args);
|
|
41
|
+
this._instanceCache.set(cacheKey, instance);
|
|
42
|
+
return instance;
|
|
43
|
+
}
|
|
44
|
+
get coreTable() {
|
|
45
|
+
if (this._tableName)
|
|
46
|
+
return this._tableName;
|
|
47
|
+
this._tableName = CORE_TABLE;
|
|
48
|
+
return this._tableName;
|
|
49
|
+
}
|
|
50
|
+
get publishEvent() {
|
|
51
|
+
// for non class based function you can still have your own way of constructing
|
|
52
|
+
if (this._publishEvent)
|
|
53
|
+
return this._publishEvent;
|
|
54
|
+
this._publishEvent = getDependencies().publishEvent;
|
|
55
|
+
return this._publishEvent;
|
|
56
|
+
}
|
|
57
|
+
get dynamodbClient() {
|
|
58
|
+
return this.createCachedInstance(DynamoDB);
|
|
59
|
+
}
|
|
60
|
+
get dbUtils() {
|
|
61
|
+
return this.createCachedInstance(DbUtils, this.dynamodbClient);
|
|
62
|
+
}
|
|
63
|
+
get eventUtils() {
|
|
64
|
+
return this.createCachedInstance(EventUtils, this.config.EntityConfig, this.publishEvent);
|
|
65
|
+
}
|
|
66
|
+
get entityRepository() {
|
|
67
|
+
return this.createCachedInstance(EntityRepository, this.config.EntityConfig, this.coreTable, this.dynamodbClient, this.config.EmailAuthEnabledEntities);
|
|
68
|
+
}
|
|
69
|
+
get mutualRepository() {
|
|
70
|
+
return this.createCachedInstance(MutualRepository, this.coreTable, this.dynamodbClient, this.dbUtils);
|
|
71
|
+
}
|
|
72
|
+
get entityServiceLifeCycle() {
|
|
73
|
+
return this.createCachedInstance(EntityServiceLifeCycle, this.config.EntityConfig, this.publishEvent, this.eventUtils);
|
|
74
|
+
}
|
|
75
|
+
get entityService() {
|
|
76
|
+
return this.createCachedInstance(EntityService, this.config.EntityConfig, this.config.EmailAuthEnabledEntities, this.entityRepository, this.publishEvent, this.entityServiceLifeCycle);
|
|
77
|
+
}
|
|
78
|
+
get mutualService() {
|
|
79
|
+
return this.createCachedInstance(MutualService, this.entityRepository, this.mutualRepository, this.publishEvent, this.dbUtils, this.entityServiceLifeCycle);
|
|
80
|
+
}
|
|
81
|
+
get tagRepository() {
|
|
82
|
+
return this.createCachedInstance(TagRepository, this.coreTable, this.dynamodbClient);
|
|
83
|
+
}
|
|
84
|
+
get getEntityController() {
|
|
85
|
+
return this.createCachedInstance(GetEntityController, this.entityRepository);
|
|
86
|
+
}
|
|
87
|
+
get listEntitiesController() {
|
|
88
|
+
return this.createCachedInstance(ListEntitiesController, this.entityRepository);
|
|
89
|
+
}
|
|
90
|
+
get createEntityController() {
|
|
91
|
+
return this.createCachedInstance(CreateEntityController, this.entityService);
|
|
92
|
+
}
|
|
93
|
+
get upsertEntityController() {
|
|
94
|
+
return this.createCachedInstance(UpsertEntityController, this.config.EntityConfig, this.entityRepository, this.publishEvent);
|
|
95
|
+
}
|
|
96
|
+
get updateEntityController() {
|
|
97
|
+
return this.createCachedInstance(UpdateEntityController, this.entityService);
|
|
98
|
+
}
|
|
99
|
+
get deleteEntityController() {
|
|
100
|
+
return this.createCachedInstance(DeleteEntityController, this.entityService);
|
|
101
|
+
}
|
|
102
|
+
get listEntitiesByEntityController() {
|
|
103
|
+
return this.createCachedInstance(ListEntitiesByEntityController, this.mutualRepository);
|
|
104
|
+
}
|
|
105
|
+
get getMutualController() {
|
|
106
|
+
return this.createCachedInstance(GetMutualController, this.mutualRepository);
|
|
107
|
+
}
|
|
108
|
+
get createMutualController() {
|
|
109
|
+
return this.createCachedInstance(CreateMutualController, this.mutualService);
|
|
110
|
+
}
|
|
111
|
+
get updateMutualController() {
|
|
112
|
+
return this.createCachedInstance(UpdateMutualController, this.mutualService);
|
|
113
|
+
}
|
|
114
|
+
get deleteMutualController() {
|
|
115
|
+
return this.createCachedInstance(DeleteMutualController, this.mutualService);
|
|
116
|
+
}
|
|
117
|
+
get listTagsController() {
|
|
118
|
+
return this.createCachedInstance(ListTagsController, this.tagRepository);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=DependencyContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependencyContainer.js","sourceRoot":"","sources":["../../services/DependencyContainer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Entity as EntityType } from '@monorise/base';
|
|
2
|
+
import type { Entity } from '../data/Entity';
|
|
3
|
+
import type { EventUtils } from '../data/EventUtils';
|
|
4
|
+
import type { publishEvent as publishEventType } from '../helpers/event';
|
|
5
|
+
export declare class EntityServiceLifeCycle {
|
|
6
|
+
private EntityConfig;
|
|
7
|
+
private publishEvent;
|
|
8
|
+
private eventUtils;
|
|
9
|
+
constructor(EntityConfig: any, publishEvent: typeof publishEventType, eventUtils: EventUtils);
|
|
10
|
+
afterCreateEntityHook<T extends EntityType>(entity: Entity<T>, entityPayload?: Record<string, unknown>, accountId?: string | string[]): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=entity-service-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-service-lifecycle.d.ts","sourceRoot":"","sources":["../../services/entity-service-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzE,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,UAAU;gBAFV,YAAY,EAAE,GAAG,EACjB,YAAY,EAAE,OAAO,gBAAgB,EACrC,UAAU,EAAE,UAAU;IAG1B,qBAAqB,CAAC,CAAC,SAAS,UAAU,EAC9C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;CAwBhC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { EVENT } from '../types/event';
|
|
2
|
+
export class EntityServiceLifeCycle {
|
|
3
|
+
EntityConfig;
|
|
4
|
+
publishEvent;
|
|
5
|
+
eventUtils;
|
|
6
|
+
constructor(EntityConfig, publishEvent, eventUtils) {
|
|
7
|
+
this.EntityConfig = EntityConfig;
|
|
8
|
+
this.publishEvent = publishEvent;
|
|
9
|
+
this.eventUtils = eventUtils;
|
|
10
|
+
}
|
|
11
|
+
async afterCreateEntityHook(entity, entityPayload, accountId) {
|
|
12
|
+
const mutualSchema = this.EntityConfig[entity.entityType].mutual?.mutualSchema;
|
|
13
|
+
const parsedMutualPayload = mutualSchema?.parse(entityPayload);
|
|
14
|
+
if (parsedMutualPayload) {
|
|
15
|
+
await this.eventUtils.publishCreateMutualsEvent({
|
|
16
|
+
entity,
|
|
17
|
+
mutualPayload: parsedMutualPayload,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
await this.publishEvent({
|
|
21
|
+
event: EVENT.CORE.ENTITY_CREATED,
|
|
22
|
+
payload: {
|
|
23
|
+
entityType: entity.entityType,
|
|
24
|
+
entityId: entity.entityId,
|
|
25
|
+
data: entity.data,
|
|
26
|
+
createdByAccountId: accountId,
|
|
27
|
+
publishedAt: entity.updatedAt || new Date().toISOString(),
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=entity-service-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-service-lifecycle.js","sourceRoot":"","sources":["../../services/entity-service-lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,OAAO,sBAAsB;IAEvB;IACA;IACA;IAHV,YACU,YAAiB,EACjB,YAAqC,EACrC,UAAsB;QAFtB,iBAAY,GAAZ,YAAY,CAAK;QACjB,iBAAY,GAAZ,YAAY,CAAyB;QACrC,eAAU,GAAV,UAAU,CAAY;IAC7B,CAAC;IAEJ,KAAK,CAAC,qBAAqB,CACzB,MAAiB,EACjB,aAAuC,EACvC,SAA6B;QAE7B,MAAM,YAAY,GAChB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC;QAC5D,MAAM,mBAAmB,GAAG,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAE/D,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC;gBAC9C,MAAM;gBACN,aAAa,EAAE,mBAAmB;aACnC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,CAAC;YACtB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc;YAChC,OAAO,EAAE;gBACP,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,kBAAkB,EAAE,SAAS;gBAC7B,WAAW,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC1D;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Entity, EntitySchemaMap, createEntityConfig } from '@monorise/base';
|
|
2
|
+
import type { EntityRepository } from '../data/Entity';
|
|
3
|
+
import type { publishEvent as publishEventType } from '../helpers/event';
|
|
4
|
+
import type { EntityServiceLifeCycle } from './entity-service-lifecycle';
|
|
5
|
+
export declare class EntityService {
|
|
6
|
+
private EntityConfig;
|
|
7
|
+
private EmailAuthEnabledEntities;
|
|
8
|
+
private entityRepository;
|
|
9
|
+
private publishEvent;
|
|
10
|
+
private entityServiceLifeCycle;
|
|
11
|
+
constructor(EntityConfig: Record<Entity, ReturnType<typeof createEntityConfig>>, EmailAuthEnabledEntities: string[], entityRepository: EntityRepository, publishEvent: typeof publishEventType, entityServiceLifeCycle: EntityServiceLifeCycle);
|
|
12
|
+
createEntity: <T extends Entity>({ entityType, entityId, entityPayload, accountId, options, }: {
|
|
13
|
+
entityType: T;
|
|
14
|
+
entityPayload: EntitySchemaMap[T] | Record<string, any>;
|
|
15
|
+
entityId?: string;
|
|
16
|
+
accountId?: string | string[];
|
|
17
|
+
options?: {
|
|
18
|
+
createAndUpdateDatetime?: string;
|
|
19
|
+
mutualId?: string;
|
|
20
|
+
};
|
|
21
|
+
}) => Promise<import("..").Entity<T>>;
|
|
22
|
+
updateEntity: <T extends Entity>({ entityType, entityId, entityPayload, accountId, }: {
|
|
23
|
+
entityType: T;
|
|
24
|
+
entityId: string;
|
|
25
|
+
entityPayload: Partial<EntitySchemaMap[T]>;
|
|
26
|
+
accountId?: string | string[];
|
|
27
|
+
}) => Promise<import("..").Entity<T>>;
|
|
28
|
+
deleteEntity: <T extends Entity>({ entityType, entityId, accountId, }: {
|
|
29
|
+
entityType: T;
|
|
30
|
+
entityId: string;
|
|
31
|
+
accountId?: string | string[];
|
|
32
|
+
}) => Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=entity.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.service.d.ts","sourceRoot":"","sources":["../../services/entity.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEzE,qBAAa,aAAa;IAEtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,wBAAwB;IAChC,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,sBAAsB;gBAJtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,EACnE,wBAAwB,EAAE,MAAM,EAAE,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,OAAO,gBAAgB,EACrC,sBAAsB,EAAE,sBAAsB;IAGxD,YAAY,GAAU,CAAC,SAAS,MAAM,EAAE,8DAMrC;QACD,UAAU,EAAE,CAAC,CAAC;QACd,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE;YACR,uBAAuB,CAAC,EAAE,MAAM,CAAC;YACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,qCAoDC;IAEF,YAAY,GAAU,CAAC,SAAS,MAAM,EAAE,qDAKrC;QACD,UAAU,EAAE,CAAC,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC/B,qCA4EC;IAEF,YAAY,GAAU,CAAC,SAAS,MAAM,EAAE,sCAIrC;QACD,UAAU,EAAE,CAAC,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC/B,mBAWC;CACH"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { StandardError } from '../errors/standard-error';
|
|
3
|
+
import { EVENT } from '../types/event';
|
|
4
|
+
export class EntityService {
|
|
5
|
+
EntityConfig;
|
|
6
|
+
EmailAuthEnabledEntities;
|
|
7
|
+
entityRepository;
|
|
8
|
+
publishEvent;
|
|
9
|
+
entityServiceLifeCycle;
|
|
10
|
+
constructor(EntityConfig, EmailAuthEnabledEntities, entityRepository, publishEvent, entityServiceLifeCycle) {
|
|
11
|
+
this.EntityConfig = EntityConfig;
|
|
12
|
+
this.EmailAuthEnabledEntities = EmailAuthEnabledEntities;
|
|
13
|
+
this.entityRepository = entityRepository;
|
|
14
|
+
this.publishEvent = publishEvent;
|
|
15
|
+
this.entityServiceLifeCycle = entityServiceLifeCycle;
|
|
16
|
+
}
|
|
17
|
+
createEntity = async ({ entityType, entityId, entityPayload, accountId, options, }) => {
|
|
18
|
+
const finalSchema = this.EntityConfig[entityType].finalSchema;
|
|
19
|
+
const entitySchema = this.EntityConfig[entityType]?.createSchema ||
|
|
20
|
+
this.EntityConfig[entityType]?.baseSchema ||
|
|
21
|
+
z.object({});
|
|
22
|
+
// const mutualSchema = this.EntityConfig[entityType]?.mutual?.mutualSchema;
|
|
23
|
+
if (!finalSchema || !entitySchema) {
|
|
24
|
+
throw new StandardError('INVALID_ENTITY_TYPE', 'Invalid entity type');
|
|
25
|
+
}
|
|
26
|
+
finalSchema.parse(entityPayload);
|
|
27
|
+
const parsedEntityPayload = entitySchema.parse(entityPayload);
|
|
28
|
+
// TODO: Create entity to accept mutual payload, so that mutual
|
|
29
|
+
// relationship can be formed when creating entity
|
|
30
|
+
// const parsedMutualPayload = mutualSchema?.parse(entityPayload);
|
|
31
|
+
if (this.EmailAuthEnabledEntities.includes(entityType)) {
|
|
32
|
+
await this.entityRepository.getEmailAvailability(entityType, parsedEntityPayload.email);
|
|
33
|
+
}
|
|
34
|
+
const entity = await this.entityRepository.createEntity(entityType, parsedEntityPayload, entityId, {
|
|
35
|
+
...(options?.mutualId
|
|
36
|
+
? {
|
|
37
|
+
mutualId: `MUTUAL#${options.mutualId}`,
|
|
38
|
+
}
|
|
39
|
+
: {}),
|
|
40
|
+
createAndUpdateDatetime: options?.createAndUpdateDatetime
|
|
41
|
+
? new Date(options.createAndUpdateDatetime)
|
|
42
|
+
: new Date(),
|
|
43
|
+
});
|
|
44
|
+
await this.entityServiceLifeCycle.afterCreateEntityHook(entity, entityPayload, accountId);
|
|
45
|
+
return entity;
|
|
46
|
+
};
|
|
47
|
+
updateEntity = async ({ entityType, entityId, entityPayload, accountId, }) => {
|
|
48
|
+
const errorContext = {};
|
|
49
|
+
try {
|
|
50
|
+
const entitySchema = this.EntityConfig[entityType].baseSchema;
|
|
51
|
+
const mutualSchema = this.EntityConfig[entityType].mutual?.mutualSchema;
|
|
52
|
+
if (!entitySchema) {
|
|
53
|
+
throw new StandardError('Invalid entity type', 'INVALID_ENTITY_TYPE');
|
|
54
|
+
}
|
|
55
|
+
const parsedEntityPayload = entitySchema.parse(entityPayload);
|
|
56
|
+
const parsedMutualPayload = mutualSchema?.parse(entityPayload);
|
|
57
|
+
errorContext.parsedMutualPayload = parsedMutualPayload;
|
|
58
|
+
const entity = await this.entityRepository.updateEntity(entityType, entityId, { data: parsedEntityPayload });
|
|
59
|
+
errorContext.entity = entity;
|
|
60
|
+
if (parsedMutualPayload) {
|
|
61
|
+
const byEntityType = entityType;
|
|
62
|
+
const byEntityId = entityId;
|
|
63
|
+
const publishEventPromises = [];
|
|
64
|
+
for (const [fieldKey, config] of Object.entries(this.EntityConfig[entityType].mutual?.mutualFields || {})) {
|
|
65
|
+
const toMutualIds = config.toMutualIds;
|
|
66
|
+
const mutualPayload = parsedMutualPayload[fieldKey];
|
|
67
|
+
if (!mutualPayload)
|
|
68
|
+
continue;
|
|
69
|
+
publishEventPromises.push(this.publishEvent({
|
|
70
|
+
event: EVENT.CORE.ENTITY_MUTUAL_TO_UPDATE,
|
|
71
|
+
payload: {
|
|
72
|
+
byEntityType,
|
|
73
|
+
byEntityId,
|
|
74
|
+
entityType: config.entityType,
|
|
75
|
+
field: fieldKey,
|
|
76
|
+
mutualIds: toMutualIds
|
|
77
|
+
? toMutualIds(mutualPayload)
|
|
78
|
+
: mutualPayload,
|
|
79
|
+
customContext: toMutualIds ? mutualPayload : {},
|
|
80
|
+
publishedAt: entity.updatedAt || new Date().toISOString(),
|
|
81
|
+
},
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
await Promise.allSettled(publishEventPromises);
|
|
85
|
+
}
|
|
86
|
+
await this.publishEvent({
|
|
87
|
+
event: EVENT.CORE.ENTITY_UPDATED,
|
|
88
|
+
payload: {
|
|
89
|
+
entityType,
|
|
90
|
+
entityId,
|
|
91
|
+
data: entity.data,
|
|
92
|
+
updatedByAccountId: accountId,
|
|
93
|
+
publishedAt: entity.updatedAt || new Date().toISOString(),
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
return entity;
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
if (error && typeof error === 'object') {
|
|
100
|
+
error.context = errorContext;
|
|
101
|
+
}
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
deleteEntity = async ({ entityType, entityId, accountId, }) => {
|
|
106
|
+
await this.entityRepository.deleteEntity(entityType, entityId);
|
|
107
|
+
await this.publishEvent({
|
|
108
|
+
event: EVENT.CORE.ENTITY_DELETED,
|
|
109
|
+
payload: {
|
|
110
|
+
entityType,
|
|
111
|
+
entityId,
|
|
112
|
+
deletedByAccountId: accountId,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=entity.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.service.js","sourceRoot":"","sources":["../../services/entity.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { AttributeValue } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import type { Entity as EntityType } from '@monorise/base';
|
|
3
|
+
import type { DbUtils } from '../data/DbUtils';
|
|
4
|
+
import { type EntityRepository } from '../data/Entity';
|
|
5
|
+
import { Mutual, type MutualRepository } from '../data/Mutual';
|
|
6
|
+
import type { publishEvent as publishEventType } from '../helpers/event';
|
|
7
|
+
import type { EntityServiceLifeCycle } from './entity-service-lifecycle';
|
|
8
|
+
export declare class MutualService {
|
|
9
|
+
private entityRepository;
|
|
10
|
+
private mutualRepository;
|
|
11
|
+
private publishEvent;
|
|
12
|
+
private ddbUtils;
|
|
13
|
+
private entityServiceLifeCycle;
|
|
14
|
+
constructor(entityRepository: EntityRepository, mutualRepository: MutualRepository, publishEvent: typeof publishEventType, ddbUtils: DbUtils, entityServiceLifeCycle: EntityServiceLifeCycle);
|
|
15
|
+
createMutual: <B extends EntityType, T extends EntityType, A extends EntityType>({ byEntityType, byEntityId, entityType, entityId, mutualPayload, accountId, options, }: {
|
|
16
|
+
byEntityType: B;
|
|
17
|
+
byEntityId: string;
|
|
18
|
+
entityType: T;
|
|
19
|
+
entityId: string;
|
|
20
|
+
mutualPayload?: Record<string, unknown>;
|
|
21
|
+
accountId?: string | string[];
|
|
22
|
+
options?: {
|
|
23
|
+
asEntity?: A;
|
|
24
|
+
ensureEntityStrongConsistentWrite?: boolean;
|
|
25
|
+
mutualId?: string;
|
|
26
|
+
skipMutualCreation?: boolean;
|
|
27
|
+
createAndUpdateDatetime?: Date;
|
|
28
|
+
ConditionExpression?: string;
|
|
29
|
+
ExpressionAttributeNames?: Record<string, string>;
|
|
30
|
+
ExpressionAttributeValues?: Record<string, AttributeValue>;
|
|
31
|
+
};
|
|
32
|
+
}) => Promise<{
|
|
33
|
+
mutual: Mutual<B, T, Record<string, any>>;
|
|
34
|
+
eventPayload: {
|
|
35
|
+
byEntityType: B;
|
|
36
|
+
byEntityId: string;
|
|
37
|
+
entityType: T;
|
|
38
|
+
entityId: string;
|
|
39
|
+
parsedMutualPayload: Record<string, any>;
|
|
40
|
+
accountId: string | string[] | undefined;
|
|
41
|
+
publishedAt: string;
|
|
42
|
+
};
|
|
43
|
+
}>;
|
|
44
|
+
updateMutual: <B extends EntityType, T extends EntityType, M extends Record<string, unknown>>({ byEntityType, byEntityId, entityType, entityId, mutualPayload, accountId, options, }: {
|
|
45
|
+
byEntityType: B;
|
|
46
|
+
byEntityId: string;
|
|
47
|
+
entityType: T;
|
|
48
|
+
entityId: string;
|
|
49
|
+
mutualPayload: M;
|
|
50
|
+
accountId?: string | string[];
|
|
51
|
+
options?: {
|
|
52
|
+
maxObjectUpdateLevel?: number;
|
|
53
|
+
returnUpdatedValue?: boolean;
|
|
54
|
+
};
|
|
55
|
+
}) => Promise<Mutual<B, T, Record<string, unknown>> | undefined>;
|
|
56
|
+
deleteMutual: ({ byEntityType, byEntityId, entityType, entityId, accountId, }: {
|
|
57
|
+
byEntityType: EntityType;
|
|
58
|
+
byEntityId: string;
|
|
59
|
+
entityType: EntityType;
|
|
60
|
+
entityId: string;
|
|
61
|
+
accountId?: string | string[];
|
|
62
|
+
}) => Promise<Mutual<EntityType, EntityType, Record<string, unknown>>>;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=mutual.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutual.service.d.ts","sourceRoot":"","sources":["../../services/mutual.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAmB,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAU,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEzE,qBAAa,aAAa;IAEtB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,sBAAsB;gBAJtB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,OAAO,gBAAgB,EACrC,QAAQ,EAAE,OAAO,EACjB,sBAAsB,EAAE,sBAAsB;IAGxD,YAAY,GACV,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,UAAU,EACpB,wFAQC;QACD,YAAY,EAAE,CAAC,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,CAAC,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE;YACR,QAAQ,CAAC,EAAE,CAAC,CAAC;YAKb,iCAAiC,CAAC,EAAE,OAAO,CAAC;YAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;YAGlB,kBAAkB,CAAC,EAAE,OAAO,CAAC;YAC7B,uBAAuB,CAAC,EAAE,IAAI,CAAC;YAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;YAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClD,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;SAC5D,CAAC;KACH;;;;;;;;;;;OA6IC;IAEF,YAAY,GACV,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,wFAQC;QACD,YAAY,EAAE,CAAC,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,CAAC,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,CAAC,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE;YACR,oBAAoB,CAAC,EAAE,MAAM,CAAC;YAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;SAC9B,CAAC;KACH,gEAyBC;IAEF,YAAY,GAAU,gEAMnB;QACD,YAAY,EAAE,UAAU,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC/B,sEAoBC;CACH"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { ulid } from 'ulid';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { Entity } from '../data/Entity';
|
|
4
|
+
import { Mutual } from '../data/Mutual';
|
|
5
|
+
import { EVENT } from '../types/event';
|
|
6
|
+
export class MutualService {
|
|
7
|
+
entityRepository;
|
|
8
|
+
mutualRepository;
|
|
9
|
+
publishEvent;
|
|
10
|
+
ddbUtils;
|
|
11
|
+
entityServiceLifeCycle;
|
|
12
|
+
constructor(entityRepository, mutualRepository, publishEvent, ddbUtils, entityServiceLifeCycle) {
|
|
13
|
+
this.entityRepository = entityRepository;
|
|
14
|
+
this.mutualRepository = mutualRepository;
|
|
15
|
+
this.publishEvent = publishEvent;
|
|
16
|
+
this.ddbUtils = ddbUtils;
|
|
17
|
+
this.entityServiceLifeCycle = entityServiceLifeCycle;
|
|
18
|
+
}
|
|
19
|
+
createMutual = async ({ byEntityType, byEntityId, entityType, entityId, mutualPayload, accountId, options = {}, }) => {
|
|
20
|
+
const { ensureEntityStrongConsistentWrite = false, asEntity, createAndUpdateDatetime, mutualId, skipMutualCreation = false, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } = options;
|
|
21
|
+
const errorContext = {
|
|
22
|
+
arguments: {
|
|
23
|
+
byEntityType,
|
|
24
|
+
byEntityId,
|
|
25
|
+
entityType,
|
|
26
|
+
entityId,
|
|
27
|
+
mutualPayload,
|
|
28
|
+
options,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
// TODO: schema validation for mutual data by config
|
|
32
|
+
const schema = z.record(z.string(), z.any());
|
|
33
|
+
const parsedMutualPayload = schema.parse(mutualPayload);
|
|
34
|
+
const [{ data: byEntityData }, { data: entityData }] = await Promise.all([
|
|
35
|
+
this.entityRepository.getEntity(byEntityType, byEntityId),
|
|
36
|
+
this.entityRepository.getEntity(entityType, entityId),
|
|
37
|
+
]);
|
|
38
|
+
errorContext.byEntityData = byEntityData;
|
|
39
|
+
errorContext.entityData = entityData;
|
|
40
|
+
await this.mutualRepository.checkMutualExist(byEntityType, byEntityId, entityType, entityId);
|
|
41
|
+
const currentDatetime = createAndUpdateDatetime || new Date();
|
|
42
|
+
const mutual = new Mutual(byEntityType, byEntityId, byEntityData, entityType, entityId, entityData, parsedMutualPayload, mutualId || ulid(), currentDatetime, currentDatetime, currentDatetime);
|
|
43
|
+
const mutualTransactions = skipMutualCreation
|
|
44
|
+
? []
|
|
45
|
+
: this.mutualRepository.createMutualTransactItems(mutual, {
|
|
46
|
+
ConditionExpression,
|
|
47
|
+
ExpressionAttributeNames,
|
|
48
|
+
ExpressionAttributeValues,
|
|
49
|
+
});
|
|
50
|
+
const entityTransactions = [];
|
|
51
|
+
let entity;
|
|
52
|
+
// construct entity transact item only if need to ensure strong consistent write
|
|
53
|
+
if (asEntity && ensureEntityStrongConsistentWrite) {
|
|
54
|
+
entity = new Entity(asEntity, mutual.mutualId, parsedMutualPayload, currentDatetime, currentDatetime);
|
|
55
|
+
entityTransactions.push(...this.entityRepository.createEntityTransactItems(entity, {
|
|
56
|
+
mutualId: mutual.mainPk,
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
// write to db regardless of options
|
|
60
|
+
const createTransactItems = [...mutualTransactions, ...entityTransactions];
|
|
61
|
+
errorContext.createTransactItems = createTransactItems;
|
|
62
|
+
await this.ddbUtils.executeTransactWrite({
|
|
63
|
+
TransactItems: createTransactItems,
|
|
64
|
+
});
|
|
65
|
+
// duplicated behaviour from entityService.createEntity after write success
|
|
66
|
+
if (asEntity && entity && ensureEntityStrongConsistentWrite) {
|
|
67
|
+
await this.entityServiceLifeCycle.afterCreateEntityHook(entity, mutualPayload, accountId);
|
|
68
|
+
}
|
|
69
|
+
// publish an event to create entity if asEntity defined
|
|
70
|
+
// since it's event-driven, it would be the creation of entity
|
|
71
|
+
// would be eventual consistent
|
|
72
|
+
if (options.asEntity && !ensureEntityStrongConsistentWrite) {
|
|
73
|
+
await this.publishEvent({
|
|
74
|
+
event: EVENT.CORE.CREATE_ENTITY,
|
|
75
|
+
payload: {
|
|
76
|
+
entityType: options.asEntity,
|
|
77
|
+
entityId: mutual.mutualId,
|
|
78
|
+
entityPayload: mutual.mutualData,
|
|
79
|
+
accountId,
|
|
80
|
+
options: {
|
|
81
|
+
createAndUpdateDatetime: mutual.createdAt,
|
|
82
|
+
mutualId: mutual.mutualId,
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
const eventPayload = {
|
|
88
|
+
byEntityType,
|
|
89
|
+
byEntityId,
|
|
90
|
+
entityType,
|
|
91
|
+
entityId,
|
|
92
|
+
parsedMutualPayload,
|
|
93
|
+
accountId,
|
|
94
|
+
publishedAt: new Date().toISOString(),
|
|
95
|
+
};
|
|
96
|
+
const eventPromises = [
|
|
97
|
+
this.publishEvent({
|
|
98
|
+
event: EVENT.CORE.MUTUAL_CREATED(byEntityType, entityType),
|
|
99
|
+
payload: eventPayload,
|
|
100
|
+
}),
|
|
101
|
+
];
|
|
102
|
+
await Promise.all(eventPromises);
|
|
103
|
+
return { mutual, eventPayload };
|
|
104
|
+
};
|
|
105
|
+
updateMutual = async ({ byEntityType, byEntityId, entityType, entityId, mutualPayload, accountId, options, }) => {
|
|
106
|
+
const schema = z.record(z.string(), z.any());
|
|
107
|
+
const parsedMutualPayload = schema.parse(mutualPayload);
|
|
108
|
+
const mutual = await this.mutualRepository.updateMutual(byEntityType, byEntityId, entityType, entityId, { mutualData: parsedMutualPayload }, options);
|
|
109
|
+
await this.publishEvent({
|
|
110
|
+
event: EVENT.CORE.MUTUAL_UPDATED(byEntityType, entityType),
|
|
111
|
+
payload: {
|
|
112
|
+
byEntityType,
|
|
113
|
+
byEntityId,
|
|
114
|
+
entityType,
|
|
115
|
+
entityId,
|
|
116
|
+
parsedMutualPayload,
|
|
117
|
+
updatedByAccountId: accountId,
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
return mutual;
|
|
121
|
+
};
|
|
122
|
+
deleteMutual = async ({ byEntityType, byEntityId, entityType, entityId, accountId, }) => {
|
|
123
|
+
const mutual = await this.mutualRepository.deleteMutual(byEntityType, byEntityId, entityType, entityId);
|
|
124
|
+
await this.publishEvent({
|
|
125
|
+
event: EVENT.CORE.MUTUAL_UPDATED(byEntityType, entityType),
|
|
126
|
+
payload: {
|
|
127
|
+
byEntityType,
|
|
128
|
+
byEntityId,
|
|
129
|
+
entityType,
|
|
130
|
+
entityId,
|
|
131
|
+
deletedByAccountId: accountId,
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
return mutual;
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=mutual.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutual.service.js","sourceRoot":"","sources":["../../services/mutual.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../index.ts","../configs/service.config.ts","../constants/table.ts","../controllers/setupRoutes.ts","../controllers/entity/create-entity.controller.ts","../controllers/entity/delete-entity.controller.ts","../controllers/entity/get-entity.controller.ts","../controllers/entity/list-entities.controller.ts","../controllers/entity/update-entity.controller.ts","../controllers/entity/upsert-entity.controller.ts","../controllers/mutual/create-mutual.controller.ts","../controllers/mutual/delete-mutual.controller.ts","../controllers/mutual/get-mutual.controller.ts","../controllers/mutual/list-entities-by-entity.controller.ts","../controllers/mutual/update-mutual.controller.ts","../controllers/tag/list-tags.controller.ts","../data/DbUtils.ts","../data/Entity.ts","../data/EventUtils.ts","../data/FileObject.ts","../data/Mutual.ts","../data/ProjectionExpression.ts","../data/Tag.ts","../data/abstract/Item.base.ts","../data/abstract/Repository.base.ts","../errors/api-error.ts","../errors/extendable-error.ts","../errors/standard-error.ts","../helpers/dependencies.ts","../helpers/event.ts","../helpers/fromLastKeyQuery.ts","../helpers/sleep.ts","../helpers/toLastKeyResponse.ts","../middlewares/entity-type-check.ts","../middlewares/mutual-type-check.ts","../mock/entity.ts","../mock/monorise/admin.ts","../mock/monorise/course.ts","../mock/monorise/index.ts","../processors/create-entity-processor.ts","../processors/mutual-processor.ts","../processors/prejoin-processor.ts","../processors/replication-processor.ts","../processors/tag-processor.ts","../services/DependencyContainer.ts","../services/entity-service-lifecycle.ts","../services/entity.service.ts","../services/mutual.service.ts","../types/entity.type.ts","../types/event.ts"],"version":"5.8.2"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Entity as EntityType } from '@monorise/base';
|
|
2
|
+
import type { Mutual } from '../data/Mutual';
|
|
3
|
+
export type Tag = {
|
|
4
|
+
group?: string;
|
|
5
|
+
sortValue?: string;
|
|
6
|
+
};
|
|
7
|
+
type Prejoins = {
|
|
8
|
+
mutualField: string;
|
|
9
|
+
targetEntityType: EntityType;
|
|
10
|
+
entityPaths: {
|
|
11
|
+
skipCache?: boolean;
|
|
12
|
+
entityType: EntityType;
|
|
13
|
+
processor?: (items: Mutual<EntityType, EntityType, Record<string, unknown>>[], context: Record<string, unknown>) => {
|
|
14
|
+
items: Mutual<EntityType, EntityType, Record<string, unknown>>[];
|
|
15
|
+
context?: Record<string, unknown>;
|
|
16
|
+
};
|
|
17
|
+
}[];
|
|
18
|
+
}[];
|
|
19
|
+
export type { Prejoins };
|
|
20
|
+
//# sourceMappingURL=entity.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.type.d.ts","sourceRoot":"","sources":["../../types/entity.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,GAAG,GAAG;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,WAAW,EAAE;QACX,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,CAAC,EAAE,CACV,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,EAChE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B;YACH,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACnC,CAAC;KACH,EAAE,CAAC;CACL,EAAE,CAAC;AAEJ,YAAY,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.type.js","sourceRoot":"","sources":["../../types/entity.type.ts"],"names":[],"mappings":""}
|