@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.
Files changed (202) hide show
  1. package/dist/configs/service.config.d.ts +5 -0
  2. package/dist/configs/service.config.d.ts.map +1 -0
  3. package/dist/configs/service.config.js +5 -0
  4. package/dist/configs/service.config.js.map +1 -0
  5. package/dist/constants/table.d.ts +4 -0
  6. package/dist/constants/table.d.ts.map +1 -0
  7. package/dist/constants/table.js +4 -0
  8. package/dist/constants/table.js.map +1 -0
  9. package/dist/controllers/entity/create-entity.controller.d.ts +8 -0
  10. package/dist/controllers/entity/create-entity.controller.d.ts.map +1 -0
  11. package/dist/controllers/entity/create-entity.controller.js +44 -0
  12. package/dist/controllers/entity/create-entity.controller.js.map +1 -0
  13. package/dist/controllers/entity/delete-entity.controller.d.ts +8 -0
  14. package/dist/controllers/entity/delete-entity.controller.d.ts.map +1 -0
  15. package/dist/controllers/entity/delete-entity.controller.js +29 -0
  16. package/dist/controllers/entity/delete-entity.controller.js.map +1 -0
  17. package/dist/controllers/entity/get-entity.controller.d.ts +8 -0
  18. package/dist/controllers/entity/get-entity.controller.d.ts.map +1 -0
  19. package/dist/controllers/entity/get-entity.controller.js +24 -0
  20. package/dist/controllers/entity/get-entity.controller.js.map +1 -0
  21. package/dist/controllers/entity/list-entities.controller.d.ts +8 -0
  22. package/dist/controllers/entity/list-entities.controller.d.ts.map +1 -0
  23. package/dist/controllers/entity/list-entities.controller.js +56 -0
  24. package/dist/controllers/entity/list-entities.controller.js.map +1 -0
  25. package/dist/controllers/entity/update-entity.controller.d.ts +8 -0
  26. package/dist/controllers/entity/update-entity.controller.d.ts.map +1 -0
  27. package/dist/controllers/entity/update-entity.controller.js +45 -0
  28. package/dist/controllers/entity/update-entity.controller.js.map +1 -0
  29. package/dist/controllers/entity/upsert-entity.controller.d.ts +12 -0
  30. package/dist/controllers/entity/upsert-entity.controller.d.ts.map +1 -0
  31. package/dist/controllers/entity/upsert-entity.controller.js +74 -0
  32. package/dist/controllers/entity/upsert-entity.controller.js.map +1 -0
  33. package/dist/controllers/mutual/create-mutual.controller.d.ts +8 -0
  34. package/dist/controllers/mutual/create-mutual.controller.d.ts.map +1 -0
  35. package/dist/controllers/mutual/create-mutual.controller.js +49 -0
  36. package/dist/controllers/mutual/create-mutual.controller.js.map +1 -0
  37. package/dist/controllers/mutual/delete-mutual.controller.d.ts +8 -0
  38. package/dist/controllers/mutual/delete-mutual.controller.d.ts.map +1 -0
  39. package/dist/controllers/mutual/delete-mutual.controller.js +31 -0
  40. package/dist/controllers/mutual/delete-mutual.controller.js.map +1 -0
  41. package/dist/controllers/mutual/get-mutual.controller.d.ts +8 -0
  42. package/dist/controllers/mutual/get-mutual.controller.d.ts.map +1 -0
  43. package/dist/controllers/mutual/get-mutual.controller.js +24 -0
  44. package/dist/controllers/mutual/get-mutual.controller.js.map +1 -0
  45. package/dist/controllers/mutual/list-entities-by-entity.controller.d.ts +8 -0
  46. package/dist/controllers/mutual/list-entities-by-entity.controller.d.ts.map +1 -0
  47. package/dist/controllers/mutual/list-entities-by-entity.controller.js +56 -0
  48. package/dist/controllers/mutual/list-entities-by-entity.controller.js.map +1 -0
  49. package/dist/controllers/mutual/update-mutual.controller.d.ts +8 -0
  50. package/dist/controllers/mutual/update-mutual.controller.d.ts.map +1 -0
  51. package/dist/controllers/mutual/update-mutual.controller.js +40 -0
  52. package/dist/controllers/mutual/update-mutual.controller.js.map +1 -0
  53. package/dist/controllers/setupRoutes.d.ts +5 -0
  54. package/dist/controllers/setupRoutes.d.ts.map +1 -0
  55. package/dist/controllers/setupRoutes.js +30 -0
  56. package/dist/controllers/setupRoutes.js.map +1 -0
  57. package/dist/controllers/tag/list-tags.controller.d.ts +8 -0
  58. package/dist/controllers/tag/list-tags.controller.d.ts.map +1 -0
  59. package/dist/controllers/tag/list-tags.controller.js +48 -0
  60. package/dist/controllers/tag/list-tags.controller.js.map +1 -0
  61. package/dist/data/DbUtils.d.ts +7 -0
  62. package/dist/data/DbUtils.d.ts.map +1 -0
  63. package/dist/data/DbUtils.js +23 -0
  64. package/dist/data/DbUtils.js.map +1 -0
  65. package/dist/data/Entity.d.ts +73 -0
  66. package/dist/data/Entity.d.ts.map +1 -0
  67. package/dist/data/Entity.js +361 -0
  68. package/dist/data/Entity.js.map +1 -0
  69. package/dist/data/EventUtils.d.ts +15 -0
  70. package/dist/data/EventUtils.d.ts.map +1 -0
  71. package/dist/data/EventUtils.js +35 -0
  72. package/dist/data/EventUtils.js.map +1 -0
  73. package/dist/data/FileObject.d.ts +62 -0
  74. package/dist/data/FileObject.d.ts.map +1 -0
  75. package/dist/data/FileObject.js +13 -0
  76. package/dist/data/FileObject.js.map +1 -0
  77. package/dist/data/Mutual.d.ts +94 -0
  78. package/dist/data/Mutual.d.ts.map +1 -0
  79. package/dist/data/Mutual.js +492 -0
  80. package/dist/data/Mutual.js.map +1 -0
  81. package/dist/data/ProjectionExpression.d.ts +6 -0
  82. package/dist/data/ProjectionExpression.d.ts.map +1 -0
  83. package/dist/data/ProjectionExpression.js +5 -0
  84. package/dist/data/ProjectionExpression.js.map +1 -0
  85. package/dist/data/Tag.d.ts +77 -0
  86. package/dist/data/Tag.d.ts.map +1 -0
  87. package/dist/data/Tag.js +330 -0
  88. package/dist/data/Tag.js.map +1 -0
  89. package/dist/data/abstract/Item.base.d.ts +11 -0
  90. package/dist/data/abstract/Item.base.d.ts.map +1 -0
  91. package/dist/data/abstract/Item.base.js +9 -0
  92. package/dist/data/abstract/Item.base.js.map +1 -0
  93. package/dist/data/abstract/Repository.base.d.ts +11 -0
  94. package/dist/data/abstract/Repository.base.d.ts.map +1 -0
  95. package/dist/data/abstract/Repository.base.js +54 -0
  96. package/dist/data/abstract/Repository.base.js.map +1 -0
  97. package/dist/errors/api-error.d.ts +23 -0
  98. package/dist/errors/api-error.d.ts.map +1 -0
  99. package/dist/errors/api-error.js +26 -0
  100. package/dist/errors/api-error.js.map +1 -0
  101. package/dist/errors/extendable-error.d.ts +18 -0
  102. package/dist/errors/extendable-error.d.ts.map +1 -0
  103. package/dist/errors/extendable-error.js +22 -0
  104. package/dist/errors/extendable-error.js.map +1 -0
  105. package/dist/errors/standard-error.d.ts +11 -0
  106. package/dist/errors/standard-error.d.ts.map +1 -0
  107. package/dist/errors/standard-error.js +21 -0
  108. package/dist/errors/standard-error.js.map +1 -0
  109. package/dist/helpers/dependencies.d.ts +8 -0
  110. package/dist/helpers/dependencies.d.ts.map +1 -0
  111. package/dist/helpers/dependencies.js +10 -0
  112. package/dist/helpers/dependencies.js.map +1 -0
  113. package/dist/helpers/event.d.ts +22 -0
  114. package/dist/helpers/event.d.ts.map +1 -0
  115. package/dist/helpers/event.js +47 -0
  116. package/dist/helpers/event.js.map +1 -0
  117. package/dist/helpers/fromLastKeyQuery.d.ts +3 -0
  118. package/dist/helpers/fromLastKeyQuery.d.ts.map +1 -0
  119. package/dist/helpers/fromLastKeyQuery.js +7 -0
  120. package/dist/helpers/fromLastKeyQuery.js.map +1 -0
  121. package/dist/helpers/sleep.d.ts +2 -0
  122. package/dist/helpers/sleep.d.ts.map +1 -0
  123. package/dist/helpers/sleep.js +2 -0
  124. package/dist/helpers/sleep.js.map +1 -0
  125. package/dist/helpers/toLastKeyResponse.d.ts +3 -0
  126. package/dist/helpers/toLastKeyResponse.d.ts.map +1 -0
  127. package/dist/helpers/toLastKeyResponse.js +7 -0
  128. package/dist/helpers/toLastKeyResponse.js.map +1 -0
  129. package/dist/index.d.ts +30 -0
  130. package/dist/index.d.ts.map +1 -0
  131. package/dist/index.js +35 -0
  132. package/dist/index.js.map +1 -0
  133. package/dist/middlewares/entity-type-check.d.ts +4 -0
  134. package/dist/middlewares/entity-type-check.d.ts.map +1 -0
  135. package/dist/middlewares/entity-type-check.js +12 -0
  136. package/dist/middlewares/entity-type-check.js.map +1 -0
  137. package/dist/middlewares/mutual-type-check.d.ts +4 -0
  138. package/dist/middlewares/mutual-type-check.d.ts.map +1 -0
  139. package/dist/middlewares/mutual-type-check.js +13 -0
  140. package/dist/middlewares/mutual-type-check.js.map +1 -0
  141. package/dist/mock/entity.d.ts +5 -0
  142. package/dist/mock/entity.d.ts.map +1 -0
  143. package/dist/mock/entity.js +6 -0
  144. package/dist/mock/entity.js.map +1 -0
  145. package/dist/mock/monorise/admin.d.ts +127 -0
  146. package/dist/mock/monorise/admin.d.ts.map +1 -0
  147. package/dist/mock/monorise/admin.js +26 -0
  148. package/dist/mock/monorise/admin.js.map +1 -0
  149. package/dist/mock/monorise/course.d.ts +118 -0
  150. package/dist/mock/monorise/course.d.ts.map +1 -0
  151. package/dist/mock/monorise/course.js +53 -0
  152. package/dist/mock/monorise/course.js.map +1 -0
  153. package/dist/mock/monorise/index.d.ts +330 -0
  154. package/dist/mock/monorise/index.d.ts.map +1 -0
  155. package/dist/mock/monorise/index.js +19 -0
  156. package/dist/mock/monorise/index.js.map +1 -0
  157. package/dist/processors/create-entity-processor.d.ts +6 -0
  158. package/dist/processors/create-entity-processor.d.ts.map +1 -0
  159. package/dist/processors/create-entity-processor.js +32 -0
  160. package/dist/processors/create-entity-processor.js.map +1 -0
  161. package/dist/processors/mutual-processor.d.ts +16 -0
  162. package/dist/processors/mutual-processor.d.ts.map +1 -0
  163. package/dist/processors/mutual-processor.js +131 -0
  164. package/dist/processors/mutual-processor.js.map +1 -0
  165. package/dist/processors/prejoin-processor.d.ts +13 -0
  166. package/dist/processors/prejoin-processor.d.ts.map +1 -0
  167. package/dist/processors/prejoin-processor.js +149 -0
  168. package/dist/processors/prejoin-processor.js.map +1 -0
  169. package/dist/processors/replication-processor.d.ts +9 -0
  170. package/dist/processors/replication-processor.d.ts.map +1 -0
  171. package/dist/processors/replication-processor.js +179 -0
  172. package/dist/processors/replication-processor.js.map +1 -0
  173. package/dist/processors/tag-processor.d.ts +12 -0
  174. package/dist/processors/tag-processor.d.ts.map +1 -0
  175. package/dist/processors/tag-processor.js +105 -0
  176. package/dist/processors/tag-processor.js.map +1 -0
  177. package/dist/services/DependencyContainer.d.ts +63 -0
  178. package/dist/services/DependencyContainer.d.ts.map +1 -0
  179. package/dist/services/DependencyContainer.js +121 -0
  180. package/dist/services/DependencyContainer.js.map +1 -0
  181. package/dist/services/entity-service-lifecycle.d.ts +12 -0
  182. package/dist/services/entity-service-lifecycle.d.ts.map +1 -0
  183. package/dist/services/entity-service-lifecycle.js +32 -0
  184. package/dist/services/entity-service-lifecycle.js.map +1 -0
  185. package/dist/services/entity.service.d.ts +34 -0
  186. package/dist/services/entity.service.d.ts.map +1 -0
  187. package/dist/services/entity.service.js +117 -0
  188. package/dist/services/entity.service.js.map +1 -0
  189. package/dist/services/mutual.service.d.ts +64 -0
  190. package/dist/services/mutual.service.d.ts.map +1 -0
  191. package/dist/services/mutual.service.js +137 -0
  192. package/dist/services/mutual.service.js.map +1 -0
  193. package/dist/tsconfig.tsbuildinfo +1 -0
  194. package/dist/types/entity.type.d.ts +20 -0
  195. package/dist/types/entity.type.d.ts.map +1 -0
  196. package/dist/types/entity.type.js +2 -0
  197. package/dist/types/entity.type.js.map +1 -0
  198. package/dist/types/event.d.ts +72 -0
  199. package/dist/types/event.d.ts.map +1 -0
  200. package/dist/types/event.js +74 -0
  201. package/dist/types/event.js.map +1 -0
  202. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entity.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.type.js","sourceRoot":"","sources":["../../types/entity.type.ts"],"names":[],"mappings":""}