@zeeshan60/event-processor 1.0.13 → 1.0.15
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/ActivityEventHandler.d.ts +5 -5
- package/dist/ActivityEventHandler.d.ts.map +1 -1
- package/dist/ActivityEventHandler.js +27 -1
- package/dist/ActivityLogEvents.d.ts.map +1 -1
- package/dist/BaseEventHandler.d.ts +6 -0
- package/dist/BaseEventHandler.d.ts.map +1 -0
- package/dist/BaseEventHandler.js +2 -0
- package/dist/EventProcessorSDK.d.ts +30 -1
- package/dist/EventProcessorSDK.d.ts.map +1 -1
- package/dist/EventProcessorSDK.js +88 -5
- package/dist/FriendEventHandler.d.ts +5 -2
- package/dist/FriendEventHandler.d.ts.map +1 -1
- package/dist/FriendEventHandler.js +49 -15
- package/dist/GroupEventHandler.d.ts +5 -7
- package/dist/GroupEventHandler.d.ts.map +1 -1
- package/dist/GroupEventHandler.js +96 -18
- package/dist/GroupEvents.d.ts.map +1 -1
- package/dist/GroupTransactionEventHandler.d.ts +4 -1
- package/dist/GroupTransactionEventHandler.d.ts.map +1 -1
- package/dist/GroupTransactionEventHandler.js +57 -13
- package/dist/GroupTransactionEvents.d.ts.map +1 -1
- package/dist/ModelChangeEmitter.d.ts +15 -0
- package/dist/ModelChangeEmitter.d.ts.map +1 -0
- package/dist/ModelChangeEmitter.js +31 -0
- package/dist/TransactionEventHandler.d.ts +6 -4
- package/dist/TransactionEventHandler.d.ts.map +1 -1
- package/dist/TransactionEventHandler.js +33 -21
- package/dist/TransactionEvents.d.ts.map +1 -1
- package/dist/UserEventHandler.d.ts +5 -2
- package/dist/UserEventHandler.d.ts.map +1 -1
- package/dist/UserEventHandler.js +32 -28
- package/dist/UserEvents.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMActivityLogEventStore.js +1 -3
- package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMActivityLogModelStore.js +1 -3
- package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMFriendEventStore.js +1 -3
- package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMFriendModelStore.js +1 -3
- package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupEventStore.js +1 -3
- package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupModelStore.js +1 -3
- package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.js +1 -3
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.js +1 -3
- package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMTransactionEventStore.js +1 -3
- package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMTransactionModelStore.js +1 -3
- package/dist/__tests__/test-helpers/IMUserEventStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMUserEventStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMUserEventStore.js +1 -3
- package/dist/__tests__/test-helpers/IMUserModelStore.d.ts +2 -3
- package/dist/__tests__/test-helpers/IMUserModelStore.d.ts.map +1 -1
- package/dist/__tests__/test-helpers/IMUserModelStore.js +1 -3
- package/dist/client/controllers/FriendController.d.ts +6 -5
- package/dist/client/controllers/FriendController.d.ts.map +1 -1
- package/dist/client/controllers/FriendController.js +23 -12
- package/dist/client/controllers/TransactionController.d.ts +12 -0
- package/dist/client/controllers/TransactionController.d.ts.map +1 -0
- package/dist/client/controllers/TransactionController.js +214 -0
- package/dist/client/controllers/UserController.d.ts.map +1 -1
- package/dist/client/controllers/UserController.js +3 -23
- package/dist/client/handlers/UIEventHandler.d.ts +3 -22
- package/dist/client/handlers/UIEventHandler.d.ts.map +1 -1
- package/dist/client/handlers/UIEventHandler.js +5 -44
- package/dist/common/DomainEvents.d.ts +0 -70
- package/dist/common/DomainEvents.d.ts.map +1 -1
- package/dist/common/DomainEvents.js +0 -89
- package/dist/contracts/expenses/index.d.ts.map +1 -1
- package/dist/contracts/friends/index.d.ts +1 -1
- package/dist/contracts/friends/index.d.ts.map +1 -1
- package/dist/contracts/groups/index.d.ts.map +1 -1
- package/dist/contracts/transactions/index.d.ts +1 -1
- package/dist/contracts/transactions/index.d.ts.map +1 -1
- package/dist/converters/ActivityLogConverters.d.ts +9 -0
- package/dist/converters/ActivityLogConverters.d.ts.map +1 -0
- package/dist/converters/ActivityLogConverters.js +39 -0
- package/dist/converters/EventConverterCore.d.ts +67 -0
- package/dist/converters/EventConverterCore.d.ts.map +1 -0
- package/dist/converters/EventConverterCore.js +59 -0
- package/dist/converters/FriendConverters.d.ts +33 -0
- package/dist/converters/FriendConverters.d.ts.map +1 -0
- package/dist/converters/FriendConverters.js +142 -0
- package/dist/converters/GroupConverters.d.ts +39 -0
- package/dist/converters/GroupConverters.d.ts.map +1 -0
- package/dist/converters/GroupConverters.js +160 -0
- package/dist/converters/GroupTransactionConverters.d.ts +57 -0
- package/dist/converters/GroupTransactionConverters.d.ts.map +1 -0
- package/dist/converters/GroupTransactionConverters.js +249 -0
- package/dist/converters/TransactionConverters.d.ts +51 -0
- package/dist/converters/TransactionConverters.d.ts.map +1 -0
- package/dist/converters/TransactionConverters.js +234 -0
- package/dist/converters/UserConverters.d.ts +51 -0
- package/dist/converters/UserConverters.d.ts.map +1 -0
- package/dist/converters/UserConverters.js +226 -0
- package/dist/converters/eventConverter.d.ts +10 -15
- package/dist/converters/eventConverter.d.ts.map +1 -1
- package/dist/converters/eventConverter.js +96 -352
- package/dist/events.d.ts +0 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -3
- package/dist/index.d.ts +6 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -33
- package/dist/store/ActivityLogEventStore.d.ts +2 -2
- package/dist/store/ActivityLogEventStore.d.ts.map +1 -1
- package/dist/store/ActivityLogEventStore.js +0 -4
- package/dist/store/ActivityLogModelStore.d.ts +4 -4
- package/dist/store/ActivityLogModelStore.d.ts.map +1 -1
- package/dist/store/ActivityLogModelStore.js +0 -5
- package/dist/store/FriendEventStore.d.ts +2 -2
- package/dist/store/FriendEventStore.d.ts.map +1 -1
- package/dist/store/FriendEventStore.js +0 -4
- package/dist/store/FriendModelStore.d.ts +9 -9
- package/dist/store/FriendModelStore.d.ts.map +1 -1
- package/dist/store/FriendModelStore.js +0 -5
- package/dist/store/GroupEventStore.d.ts +2 -2
- package/dist/store/GroupEventStore.d.ts.map +1 -1
- package/dist/store/GroupEventStore.js +0 -4
- package/dist/store/GroupModelStore.d.ts +6 -6
- package/dist/store/GroupModelStore.d.ts.map +1 -1
- package/dist/store/GroupModelStore.js +0 -5
- package/dist/store/GroupTransactionEventStore.d.ts +2 -2
- package/dist/store/GroupTransactionEventStore.d.ts.map +1 -1
- package/dist/store/GroupTransactionEventStore.js +0 -4
- package/dist/store/GroupTransactionModelStore.d.ts +6 -6
- package/dist/store/GroupTransactionModelStore.d.ts.map +1 -1
- package/dist/store/GroupTransactionModelStore.js +0 -5
- package/dist/store/ModelStore.d.ts +4 -4
- package/dist/store/ModelStore.d.ts.map +1 -1
- package/dist/store/ModelStore.js +0 -4
- package/dist/store/TransactionEventStore.d.ts +2 -2
- package/dist/store/TransactionEventStore.d.ts.map +1 -1
- package/dist/store/TransactionEventStore.js +0 -4
- package/dist/store/TransactionModelStore.d.ts +6 -6
- package/dist/store/TransactionModelStore.d.ts.map +1 -1
- package/dist/store/TransactionModelStore.js +0 -5
- package/dist/store/UserEventStore.d.ts +2 -2
- package/dist/store/UserEventStore.d.ts.map +1 -1
- package/dist/store/UserEventStore.js +0 -4
- package/dist/store/UserModelStore.d.ts +7 -7
- package/dist/store/UserModelStore.d.ts.map +1 -1
- package/dist/store/UserModelStore.js +0 -5
- package/package.json +1 -1
- package/dist/__tests__/e2e/setup/firebaseEmulator.d.ts +0 -3
- package/dist/__tests__/e2e/setup/firebaseEmulator.d.ts.map +0 -1
- package/dist/__tests__/e2e/setup/firebaseEmulator.js +0 -87
- package/dist/__tests__/e2e/setup/firestoreStores.d.ts +0 -28
- package/dist/__tests__/e2e/setup/firestoreStores.d.ts.map +0 -1
- package/dist/__tests__/e2e/setup/firestoreStores.js +0 -276
- package/dist/__tests__/e2e/setup/firestoreTestHelpers.d.ts +0 -15
- package/dist/__tests__/e2e/setup/firestoreTestHelpers.d.ts.map +0 -1
- package/dist/__tests__/e2e/setup/firestoreTestHelpers.js +0 -167
- package/dist/adapters/FirebaseAdminAdapter.d.ts +0 -8
- package/dist/adapters/FirebaseAdminAdapter.d.ts.map +0 -1
- package/dist/adapters/FirebaseAdminAdapter.js +0 -21
- package/dist/adapters/FirebaseClientAdapter.d.ts +0 -8
- package/dist/adapters/FirebaseClientAdapter.d.ts.map +0 -1
- package/dist/adapters/FirebaseClientAdapter.js +0 -22
- package/dist/client/handlers/UIActivityEventHandler.d.ts +0 -12
- package/dist/client/handlers/UIActivityEventHandler.d.ts.map +0 -1
- package/dist/client/handlers/UIActivityEventHandler.js +0 -14
- package/dist/common/EventBus.d.ts +0 -12
- package/dist/common/EventBus.d.ts.map +0 -1
- package/dist/common/EventBus.js +0 -26
- package/dist/common/EventBusSingleton.d.ts +0 -4
- package/dist/common/EventBusSingleton.d.ts.map +0 -1
- package/dist/common/EventBusSingleton.js +0 -18
- package/dist/config/environment.d.ts +0 -25
- package/dist/config/environment.d.ts.map +0 -1
- package/dist/config/environment.js +0 -77
- package/dist/controllers/UIEventHandler.d.ts +0 -25
- package/dist/controllers/UIEventHandler.d.ts.map +0 -1
- package/dist/controllers/UIEventHandler.js +0 -50
- package/dist/controllers/UserController.d.ts +0 -9
- package/dist/controllers/UserController.d.ts.map +0 -1
- package/dist/controllers/UserController.js +0 -36
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GroupEventHandler = void 0;
|
|
4
4
|
const _1 = require(".");
|
|
5
|
-
const DomainEvents_1 = require("./common/DomainEvents");
|
|
6
5
|
const uuid_1 = require("uuid");
|
|
6
|
+
const EventProcessorSDK_1 = require("./EventProcessorSDK");
|
|
7
7
|
class GroupEventHandler {
|
|
8
8
|
constructor(modelStore, friendModelStore, userModelStore, groupEventStore, friendEventStore, activityEventHandler) {
|
|
9
9
|
this.modelStore = modelStore;
|
|
@@ -13,11 +13,25 @@ class GroupEventHandler {
|
|
|
13
13
|
this.friendEventStore = friendEventStore;
|
|
14
14
|
this.activityEventHandler = activityEventHandler;
|
|
15
15
|
}
|
|
16
|
+
shouldSkipSave(existingModel, updatedModel) {
|
|
17
|
+
if (!existingModel) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return (existingModel.streamId === updatedModel.streamId &&
|
|
21
|
+
existingModel.version === updatedModel.version);
|
|
22
|
+
}
|
|
23
|
+
async handleClientEventFromRemoteListener(event) {
|
|
24
|
+
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
25
|
+
const updatedModel = event.apply(existingModel);
|
|
26
|
+
if (!this.shouldSkipSave(existingModel, updatedModel)) {
|
|
27
|
+
await this.modelStore.save(updatedModel);
|
|
28
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
29
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
16
33
|
async handleEvent(event) {
|
|
17
34
|
const eventType = event.constructor.name;
|
|
18
|
-
if (!(0, DomainEvents_1.isValidGroupEventType)(eventType)) {
|
|
19
|
-
throw new Error(`Unknown group event type: ${eventType}`);
|
|
20
|
-
}
|
|
21
35
|
switch (eventType) {
|
|
22
36
|
case "GroupCreated":
|
|
23
37
|
return await this.handleGroupCreated(event);
|
|
@@ -61,7 +75,9 @@ class GroupEventHandler {
|
|
|
61
75
|
});
|
|
62
76
|
await this.friendEventStore.addEvent(friendCreatedEvent);
|
|
63
77
|
const friendModel = friendCreatedEvent.apply(undefined);
|
|
64
|
-
|
|
78
|
+
if (!this.shouldSkipSave(undefined, friendModel)) {
|
|
79
|
+
await this.friendModelStore.save(friendModel);
|
|
80
|
+
}
|
|
65
81
|
}
|
|
66
82
|
const existingFriend2to1 = await this.friendModelStore.findByUserIdAndFriendIdAndDeletedIsFalse(userId2, userId1);
|
|
67
83
|
if (!existingFriend2to1) {
|
|
@@ -82,13 +98,20 @@ class GroupEventHandler {
|
|
|
82
98
|
});
|
|
83
99
|
await this.friendEventStore.addEvent(friendCreatedEvent);
|
|
84
100
|
const friendModel = friendCreatedEvent.apply(undefined);
|
|
85
|
-
|
|
101
|
+
if (!this.shouldSkipSave(undefined, friendModel)) {
|
|
102
|
+
await this.friendModelStore.save(friendModel);
|
|
103
|
+
}
|
|
86
104
|
}
|
|
87
105
|
}
|
|
88
106
|
async handleGroupCreated(event) {
|
|
89
107
|
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
90
108
|
const updatedModel = event.apply(existingModel);
|
|
91
|
-
|
|
109
|
+
if (!this.shouldSkipSave(existingModel, updatedModel)) {
|
|
110
|
+
await this.modelStore.save(updatedModel);
|
|
111
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
112
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
92
115
|
const allMemberIds = event.members ?? [];
|
|
93
116
|
const otherMembers = allMemberIds.filter((id) => id !== event.userId);
|
|
94
117
|
for (const memberId of otherMembers) {
|
|
@@ -118,7 +141,12 @@ class GroupEventHandler {
|
|
|
118
141
|
});
|
|
119
142
|
await this.groupEventStore.addEvent(perspectiveGroupCreated);
|
|
120
143
|
const perspectiveModel = perspectiveGroupCreated.apply(undefined);
|
|
121
|
-
|
|
144
|
+
if (!this.shouldSkipSave(undefined, perspectiveModel)) {
|
|
145
|
+
await this.modelStore.save(perspectiveModel);
|
|
146
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
147
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", perspectiveModel);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
122
150
|
}
|
|
123
151
|
if (this.activityEventHandler) {
|
|
124
152
|
await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
|
|
@@ -128,7 +156,12 @@ class GroupEventHandler {
|
|
|
128
156
|
async handleGroupNameChanged(event) {
|
|
129
157
|
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
130
158
|
const updatedModel = event.apply(existingModel);
|
|
131
|
-
|
|
159
|
+
if (!this.shouldSkipSave(existingModel, updatedModel)) {
|
|
160
|
+
await this.modelStore.save(updatedModel);
|
|
161
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
162
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
132
165
|
const allPerspectives = await this.modelStore.findAllByGroupIdAndDeletedIsFalse(updatedModel.groupId);
|
|
133
166
|
for (const perspective of allPerspectives) {
|
|
134
167
|
if (perspective.streamId !== event.streamId) {
|
|
@@ -144,7 +177,12 @@ class GroupEventHandler {
|
|
|
144
177
|
});
|
|
145
178
|
await this.groupEventStore.addEvent(perspectiveEvent);
|
|
146
179
|
const updatedPerspective = perspectiveEvent.apply(perspective);
|
|
147
|
-
|
|
180
|
+
if (!this.shouldSkipSave(perspective, updatedPerspective)) {
|
|
181
|
+
await this.modelStore.save(updatedPerspective);
|
|
182
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
183
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedPerspective);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
148
186
|
}
|
|
149
187
|
}
|
|
150
188
|
if (this.activityEventHandler) {
|
|
@@ -155,7 +193,12 @@ class GroupEventHandler {
|
|
|
155
193
|
async handleGroupDescriptionChanged(event) {
|
|
156
194
|
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
157
195
|
const updatedModel = event.apply(existingModel);
|
|
158
|
-
|
|
196
|
+
if (!this.shouldSkipSave(existingModel, updatedModel)) {
|
|
197
|
+
await this.modelStore.save(updatedModel);
|
|
198
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
199
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
159
202
|
const allPerspectives = await this.modelStore.findAllByGroupIdAndDeletedIsFalse(updatedModel.groupId);
|
|
160
203
|
for (const perspective of allPerspectives) {
|
|
161
204
|
if (perspective.streamId !== event.streamId) {
|
|
@@ -171,7 +214,12 @@ class GroupEventHandler {
|
|
|
171
214
|
});
|
|
172
215
|
await this.groupEventStore.addEvent(perspectiveEvent);
|
|
173
216
|
const updatedPerspective = perspectiveEvent.apply(perspective);
|
|
174
|
-
|
|
217
|
+
if (!this.shouldSkipSave(perspective, updatedPerspective)) {
|
|
218
|
+
await this.modelStore.save(updatedPerspective);
|
|
219
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
220
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedPerspective);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
175
223
|
}
|
|
176
224
|
}
|
|
177
225
|
if (this.activityEventHandler) {
|
|
@@ -185,7 +233,12 @@ class GroupEventHandler {
|
|
|
185
233
|
throw new Error(`Group model not found for streamId ${event.streamId}`);
|
|
186
234
|
}
|
|
187
235
|
const updatedModel = event.apply(existingModel);
|
|
188
|
-
|
|
236
|
+
if (!this.shouldSkipSave(existingModel, updatedModel)) {
|
|
237
|
+
await this.modelStore.save(updatedModel);
|
|
238
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
239
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
189
242
|
const allMemberIds = updatedModel.members ?? [];
|
|
190
243
|
for (const memberId of event.members) {
|
|
191
244
|
const memberUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(memberId);
|
|
@@ -214,7 +267,12 @@ class GroupEventHandler {
|
|
|
214
267
|
});
|
|
215
268
|
await this.groupEventStore.addEvent(perspectiveGroupCreated);
|
|
216
269
|
const perspectiveModel = perspectiveGroupCreated.apply(undefined);
|
|
217
|
-
|
|
270
|
+
if (!this.shouldSkipSave(undefined, perspectiveModel)) {
|
|
271
|
+
await this.modelStore.save(perspectiveModel);
|
|
272
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
273
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", perspectiveModel);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
218
276
|
}
|
|
219
277
|
const allPerspectives = await this.modelStore.findAllByGroupIdAndDeletedIsFalse(updatedModel.groupId);
|
|
220
278
|
for (const perspective of allPerspectives) {
|
|
@@ -232,7 +290,12 @@ class GroupEventHandler {
|
|
|
232
290
|
});
|
|
233
291
|
await this.groupEventStore.addEvent(perspectiveEvent);
|
|
234
292
|
const updatedPerspective = perspectiveEvent.apply(perspective);
|
|
235
|
-
|
|
293
|
+
if (!this.shouldSkipSave(perspective, updatedPerspective)) {
|
|
294
|
+
await this.modelStore.save(updatedPerspective);
|
|
295
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
296
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedPerspective);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
236
299
|
}
|
|
237
300
|
}
|
|
238
301
|
if (this.activityEventHandler) {
|
|
@@ -243,7 +306,12 @@ class GroupEventHandler {
|
|
|
243
306
|
async handleGroupMembersRemoved(event) {
|
|
244
307
|
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
245
308
|
const updatedModel = event.apply(existingModel);
|
|
246
|
-
|
|
309
|
+
if (!this.shouldSkipSave(existingModel, updatedModel)) {
|
|
310
|
+
await this.modelStore.save(updatedModel);
|
|
311
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
312
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
247
315
|
const allPerspectives = await this.modelStore.findAllByGroupIdAndDeletedIsFalse(updatedModel.groupId);
|
|
248
316
|
for (const perspective of allPerspectives) {
|
|
249
317
|
if (perspective.streamId !== event.streamId) {
|
|
@@ -259,7 +327,12 @@ class GroupEventHandler {
|
|
|
259
327
|
});
|
|
260
328
|
await this.groupEventStore.addEvent(perspectiveEvent);
|
|
261
329
|
const updatedPerspective = perspectiveEvent.apply(perspective);
|
|
262
|
-
|
|
330
|
+
if (!this.shouldSkipSave(perspective, updatedPerspective)) {
|
|
331
|
+
await this.modelStore.save(updatedPerspective);
|
|
332
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
333
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedPerspective);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
263
336
|
}
|
|
264
337
|
}
|
|
265
338
|
if (this.activityEventHandler) {
|
|
@@ -270,7 +343,12 @@ class GroupEventHandler {
|
|
|
270
343
|
async handleGroupDeleted(event) {
|
|
271
344
|
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
272
345
|
const updatedModel = event.apply(existingModel);
|
|
273
|
-
|
|
346
|
+
if (!this.shouldSkipSave(existingModel, updatedModel)) {
|
|
347
|
+
await this.modelStore.save(updatedModel);
|
|
348
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
349
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupModel", updatedModel);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
274
352
|
if (this.activityEventHandler) {
|
|
275
353
|
await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
|
|
276
354
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupEvents.d.ts","sourceRoot":"","sources":["../src/GroupEvents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GroupEvents.d.ts","sourceRoot":"","sources":["../src/GroupEvents.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,9 @@ import { GroupTransactionEventStore } from ".";
|
|
|
4
4
|
import { GroupModelStore } from ".";
|
|
5
5
|
import { TransactionEventStore } from ".";
|
|
6
6
|
import { TransactionModelStore } from ".";
|
|
7
|
+
import { BaseEventHandler } from "./BaseEventHandler";
|
|
7
8
|
import { ActivityEventHandler } from "./ActivityEventHandler";
|
|
8
|
-
export declare class GroupTransactionEventHandler {
|
|
9
|
+
export declare class GroupTransactionEventHandler implements BaseEventHandler<GroupTransactionEvent> {
|
|
9
10
|
private modelStore;
|
|
10
11
|
private eventStore;
|
|
11
12
|
private groupModelStore;
|
|
@@ -13,6 +14,8 @@ export declare class GroupTransactionEventHandler {
|
|
|
13
14
|
private transactionModelStore;
|
|
14
15
|
private activityEventHandler?;
|
|
15
16
|
constructor(modelStore: GroupTransactionModelStore, eventStore: GroupTransactionEventStore, groupModelStore: GroupModelStore, transactionEventStore: TransactionEventStore, transactionModelStore: TransactionModelStore, activityEventHandler?: ActivityEventHandler | undefined);
|
|
17
|
+
private shouldSkipSave;
|
|
18
|
+
handleClientEventFromRemoteListener(event: GroupTransactionEvent): Promise<void>;
|
|
16
19
|
handleEvent(event: GroupTransactionEvent): Promise<GroupTransactionModel>;
|
|
17
20
|
private calculateNetBalances;
|
|
18
21
|
private createFriendTransactions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupTransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/GroupTransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,mCAAmC,EACnC,qBAAqB,EAIrB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"GroupTransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/GroupTransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,mCAAmC,EACnC,qBAAqB,EAIrB,qBAAqB,EAKxB,MAAM,GAAG,CAAC;AACX,OAAO,EAAE,0BAA0B,EAAE,MAAM,GAAG,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,GAAG,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,qBAAa,4BACT,YAAW,gBAAgB,CAAC,qBAAqB,CAAC;IAG9C,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,oBAAoB,CAAC;gBALrB,UAAU,EAAE,0BAA0B,EACtC,UAAU,EAAE,0BAA0B,EACtC,eAAe,EAAE,eAAe,EAChC,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGvD,OAAO,CAAC,cAAc;IAaT,mCAAmC,CAC5C,KAAK,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC;IAmBV,WAAW,CACb,KAAK,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC;IAsBjC,OAAO,CAAC,oBAAoB;YAad,wBAAwB;YA8FxB,wBAAwB;IAatC,OAAO,CAAC,6BAA6B;YAsDvB,gCAAgC;IAqGxC,6BAA6B,CAC/B,KAAK,EAAE,uBAAuB,GAC/B,OAAO,CAAC,qBAAqB,CAAC;IAkF3B,yCAAyC,CAC3C,KAAK,EAAE,mCAAmC,GAC3C,OAAO,CAAC,qBAAqB,CAAC;CAsGpC"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GroupTransactionEventHandler = void 0;
|
|
4
4
|
const _1 = require(".");
|
|
5
|
-
const DomainEvents_1 = require("./common/DomainEvents");
|
|
6
5
|
const splitTypeUtils_1 = require("./utils/splitTypeUtils");
|
|
7
6
|
const uuid_1 = require("uuid");
|
|
7
|
+
const EventProcessorSDK_1 = require("./EventProcessorSDK");
|
|
8
8
|
class GroupTransactionEventHandler {
|
|
9
9
|
constructor(modelStore, eventStore, groupModelStore, transactionEventStore, transactionModelStore, activityEventHandler) {
|
|
10
10
|
this.modelStore = modelStore;
|
|
@@ -14,14 +14,28 @@ class GroupTransactionEventHandler {
|
|
|
14
14
|
this.transactionModelStore = transactionModelStore;
|
|
15
15
|
this.activityEventHandler = activityEventHandler;
|
|
16
16
|
}
|
|
17
|
+
shouldSkipSave(existingModel, updatedModel) {
|
|
18
|
+
if (!existingModel) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return (existingModel.streamId === updatedModel.streamId &&
|
|
22
|
+
existingModel.version === updatedModel.version);
|
|
23
|
+
}
|
|
24
|
+
async handleClientEventFromRemoteListener(event) {
|
|
25
|
+
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
26
|
+
const updatedModel = event.apply(existingModel);
|
|
27
|
+
if (!this.shouldSkipSave(existingModel, updatedModel)) {
|
|
28
|
+
await this.modelStore.save(updatedModel);
|
|
29
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
30
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", updatedModel);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
17
34
|
async handleEvent(event) {
|
|
18
35
|
if (_1.residence.isClient) {
|
|
19
36
|
await this.eventStore.addEvent(event);
|
|
20
37
|
}
|
|
21
38
|
const eventType = event.constructor.name;
|
|
22
|
-
if (!(0, DomainEvents_1.isValidGroupTransactionEventType)(eventType)) {
|
|
23
|
-
throw new Error(`Unknown group transaction event type: ${eventType}`);
|
|
24
|
-
}
|
|
25
39
|
switch (eventType) {
|
|
26
40
|
case "GroupTransactionCreated":
|
|
27
41
|
return await this.handleGroupTransactionCreated(event);
|
|
@@ -78,7 +92,9 @@ class GroupTransactionEventHandler {
|
|
|
78
92
|
});
|
|
79
93
|
await this.transactionEventStore.addEvent(creditorTransactionEvent);
|
|
80
94
|
const creditorModel = creditorTransactionEvent.apply(undefined);
|
|
81
|
-
|
|
95
|
+
if (!this.shouldSkipSave(undefined, creditorModel)) {
|
|
96
|
+
await this.transactionModelStore.save(creditorModel);
|
|
97
|
+
}
|
|
82
98
|
const debtorStreamId = (0, uuid_1.v4)();
|
|
83
99
|
const debtorTransactionEvent = new _1.TransactionCreated({
|
|
84
100
|
eventId: (0, uuid_1.v4)(),
|
|
@@ -102,7 +118,9 @@ class GroupTransactionEventHandler {
|
|
|
102
118
|
});
|
|
103
119
|
await this.transactionEventStore.addEvent(debtorTransactionEvent);
|
|
104
120
|
const debtorModel = debtorTransactionEvent.apply(undefined);
|
|
105
|
-
|
|
121
|
+
if (!this.shouldSkipSave(undefined, debtorModel)) {
|
|
122
|
+
await this.transactionModelStore.save(debtorModel);
|
|
123
|
+
}
|
|
106
124
|
creditor.amount -= transactionAmount;
|
|
107
125
|
debtor.amount -= transactionAmount;
|
|
108
126
|
}
|
|
@@ -176,7 +194,9 @@ class GroupTransactionEventHandler {
|
|
|
176
194
|
});
|
|
177
195
|
await this.transactionEventStore.addEvent(updateEvent);
|
|
178
196
|
const updatedModel = updateEvent.apply(existingTx);
|
|
179
|
-
|
|
197
|
+
if (!this.shouldSkipSave(existingTx, updatedModel)) {
|
|
198
|
+
await this.transactionModelStore.save(updatedModel);
|
|
199
|
+
}
|
|
180
200
|
}
|
|
181
201
|
requiredTransactions.delete(key);
|
|
182
202
|
}
|
|
@@ -192,7 +212,9 @@ class GroupTransactionEventHandler {
|
|
|
192
212
|
});
|
|
193
213
|
await this.transactionEventStore.addEvent(deleteEvent);
|
|
194
214
|
const deletedModel = deleteEvent.apply(existingTx);
|
|
195
|
-
|
|
215
|
+
if (!this.shouldSkipSave(existingTx, deletedModel)) {
|
|
216
|
+
await this.transactionModelStore.save(deletedModel);
|
|
217
|
+
}
|
|
196
218
|
}
|
|
197
219
|
}
|
|
198
220
|
}
|
|
@@ -221,13 +243,20 @@ class GroupTransactionEventHandler {
|
|
|
221
243
|
});
|
|
222
244
|
await this.transactionEventStore.addEvent(createEvent);
|
|
223
245
|
const model = createEvent.apply(undefined);
|
|
224
|
-
|
|
246
|
+
if (!this.shouldSkipSave(undefined, model)) {
|
|
247
|
+
await this.transactionModelStore.save(model);
|
|
248
|
+
}
|
|
225
249
|
}
|
|
226
250
|
}
|
|
227
251
|
async handleGroupTransactionCreated(event) {
|
|
228
252
|
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
229
253
|
const updatedModel = event.apply(existingModel);
|
|
230
|
-
|
|
254
|
+
if (!this.shouldSkipSave(existingModel, updatedModel)) {
|
|
255
|
+
await this.modelStore.save(updatedModel);
|
|
256
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
257
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", updatedModel);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
231
260
|
if (this.activityEventHandler) {
|
|
232
261
|
await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
|
|
233
262
|
}
|
|
@@ -256,7 +285,12 @@ class GroupTransactionEventHandler {
|
|
|
256
285
|
});
|
|
257
286
|
await this.eventStore.addEvent(perspectiveEvent);
|
|
258
287
|
const perspectiveModel = perspectiveEvent.apply(undefined);
|
|
259
|
-
|
|
288
|
+
if (!this.shouldSkipSave(undefined, perspectiveModel)) {
|
|
289
|
+
await this.modelStore.save(perspectiveModel);
|
|
290
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
291
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", perspectiveModel);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
260
294
|
if (this.activityEventHandler) {
|
|
261
295
|
await this.activityEventHandler.createActivityLog(perspectiveEvent, undefined, perspectiveModel);
|
|
262
296
|
}
|
|
@@ -273,7 +307,12 @@ class GroupTransactionEventHandler {
|
|
|
273
307
|
const oldMembers = existingModel.originalTransaction.members;
|
|
274
308
|
const newMembers = event.originalTransaction.members;
|
|
275
309
|
const updatedModel = event.apply(existingModel);
|
|
276
|
-
|
|
310
|
+
if (!this.shouldSkipSave(existingModel, updatedModel)) {
|
|
311
|
+
await this.modelStore.save(updatedModel);
|
|
312
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
313
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", updatedModel);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
277
316
|
if (this.activityEventHandler) {
|
|
278
317
|
await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
|
|
279
318
|
}
|
|
@@ -298,7 +337,12 @@ class GroupTransactionEventHandler {
|
|
|
298
337
|
const existingPerspectiveModel = await this.modelStore.findByUserIdAndTransactionId(groupPerspective.userId, updatedModel.transactionId);
|
|
299
338
|
if (existingPerspectiveModel) {
|
|
300
339
|
const perspectiveModel = perspectiveEvent.apply(existingPerspectiveModel);
|
|
301
|
-
|
|
340
|
+
if (!this.shouldSkipSave(existingPerspectiveModel, perspectiveModel)) {
|
|
341
|
+
await this.modelStore.save(perspectiveModel);
|
|
342
|
+
if ((0, EventProcessorSDK_1.isSDKInitialized)()) {
|
|
343
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("GroupTransactionModel", perspectiveModel);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
302
346
|
if (this.activityEventHandler) {
|
|
303
347
|
await this.activityEventHandler.createActivityLog(perspectiveEvent, existingPerspectiveModel, perspectiveModel);
|
|
304
348
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupTransactionEvents.d.ts","sourceRoot":"","sources":["../src/GroupTransactionEvents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GroupTransactionEvents.d.ts","sourceRoot":"","sources":["../src/GroupTransactionEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAc,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACrC,OAAO,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAsB,SAAQ,KAAK;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,IAAI,CAAC;IACtB,mBAAmB,EAAE,wBAAwB,CAAC;IAC9C,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,4BAA4B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,IAAI,CAAC;IACtB,mBAAmB,EAAE,wBAAwB,CAAC;IAC9C,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,uBAAwB,YAAW,qBAAqB;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,IAAI,CAAC;IACtB,mBAAmB,EAAE,wBAAwB,CAAC;IAC9C,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,4BAA4B;IAmB/C,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,qBAAqB;IAsB/C,WAAW,CACP,SAAS,CAAC,EAAE,KAAK,EACjB,SAAS,CAAC,EAAE,MAAM,GACnB,uBAAuB,GAAG,SAAS;CAwBzC;AAED,MAAM,WAAW,uCAAuC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,kCACT,YAAW,qBAAqB;IAEzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,uCAAuC;IAW1D,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,qBAAqB;IAgB9C,WAAW,CACP,QAAQ,CAAC,EAAE,KAAK,EAChB,SAAS,CAAC,EAAE,MAAM,GACnB,uBAAuB,GAAG,SAAS;CA0BzC;AAED,MAAM,WAAW,iCAAiC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,4BAA6B,YAAW,qBAAqB;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,iCAAiC;IAWpD,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,qBAAqB;IAc9C,WAAW,CACP,QAAQ,CAAC,EAAE,KAAK,EAChB,SAAS,CAAC,EAAE,MAAM,GACnB,uBAAuB,GAAG,SAAS;CAwBzC;AAED,MAAM,WAAW,uCAAuC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,kCACT,YAAW,qBAAqB;IAEzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,uCAAuC;IAW1D,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,qBAAqB;IAgB9C,WAAW,CACP,QAAQ,CAAC,EAAE,KAAK,EAChB,SAAS,CAAC,EAAE,MAAM,GACnB,uBAAuB,GAAG,SAAS;CAwBzC;AAED,MAAM,WAAW,oCAAoC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,+BAAgC,YAAW,qBAAqB;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,oCAAoC;IAWvD,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,qBAAqB;IAc9C,WAAW,CACP,QAAQ,CAAC,EAAE,KAAK,EAChB,SAAS,CAAC,EAAE,MAAM,GACnB,uBAAuB,GAAG,SAAS;CAwBzC;AAED,MAAM,WAAW,qCAAqC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,gCAAiC,YAAW,qBAAqB;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,qCAAqC;IAWxD,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,qBAAqB;IAc9C,WAAW,CACP,QAAQ,CAAC,EAAE,KAAK,EAChB,SAAS,CAAC,EAAE,MAAM,GACnB,uBAAuB,GAAG,SAAS;CAwBzC;AAED,MAAM,WAAW,gCAAgC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,IAAI,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,2BAA4B,YAAW,qBAAqB;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,IAAI,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,gCAAgC;IAWnD,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,qBAAqB;IAgB9C,WAAW,CACP,QAAQ,CAAC,EAAE,KAAK,EAChB,SAAS,CAAC,EAAE,MAAM,GACnB,uBAAuB,GAAG,SAAS;CAwBzC;AAED,MAAM,WAAW,wCAAwC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,wBAAwB,CAAC;IAC9C,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,mCACT,YAAW,qBAAqB;IAEzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,wBAAwB,CAAC;IAC9C,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,wCAAwC;IAa3D,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,qBAAqB;IAkB9C,WAAW,CACP,QAAQ,CAAC,EAAE,KAAK,EAChB,SAAS,CAAC,EAAE,MAAM,GACnB,uBAAuB,GAAG,SAAS;CAwBzC;AAED,MAAM,WAAW,4BAA4B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,uBAAwB,YAAW,qBAAqB;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;gBAEpB,KAAK,EAAE,4BAA4B;IAU/C,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,qBAAqB;IAc9C,WAAW,CACP,QAAQ,CAAC,EAAE,KAAK,EAChB,SAAS,CAAC,EAAE,MAAM,GACnB,uBAAuB,GAAG,SAAS;CAyBzC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Model } from "./common/Model";
|
|
2
|
+
import { Observable, Subscription } from "rxjs";
|
|
3
|
+
export interface ModelChange {
|
|
4
|
+
modelType: string;
|
|
5
|
+
model: Model;
|
|
6
|
+
}
|
|
7
|
+
export declare class ModelChangeEmitter {
|
|
8
|
+
private subject;
|
|
9
|
+
subscribe(next: (change: ModelChange) => void, error?: (error: Error) => void): Subscription;
|
|
10
|
+
asObservable(): Observable<ModelChange>;
|
|
11
|
+
emit(modelType: string, model: Model): void;
|
|
12
|
+
clear(): void;
|
|
13
|
+
hasListeners(): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ModelChangeEmitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelChangeEmitter.d.ts","sourceRoot":"","sources":["../src/ModelChangeEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAW,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzD,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,OAAO,CAA8B;IAE7C,SAAS,CACL,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,EACnC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC/B,YAAY;IAIf,YAAY,IAAI,UAAU,CAAC,WAAW,CAAC;IAIvC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAW3C,KAAK,IAAI,IAAI;IAKb,YAAY,IAAI,OAAO;CAG1B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModelChangeEmitter = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
class ModelChangeEmitter {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.subject = new rxjs_1.Subject();
|
|
8
|
+
}
|
|
9
|
+
subscribe(next, error) {
|
|
10
|
+
return this.subject.subscribe({ next, error });
|
|
11
|
+
}
|
|
12
|
+
asObservable() {
|
|
13
|
+
return this.subject.asObservable();
|
|
14
|
+
}
|
|
15
|
+
emit(modelType, model) {
|
|
16
|
+
try {
|
|
17
|
+
this.subject.next({ modelType, model });
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
console.error(`Error in ModelChangeEmitter listener for ${modelType}:`, error);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
clear() {
|
|
24
|
+
this.subject.complete();
|
|
25
|
+
this.subject = new rxjs_1.Subject();
|
|
26
|
+
}
|
|
27
|
+
hasListeners() {
|
|
28
|
+
return this.subject.observed;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.ModelChangeEmitter = ModelChangeEmitter;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { TransactionEvent, TransactionEventStore, TransactionModel, TransactionModelStore
|
|
1
|
+
import { TransactionEvent, TransactionEventStore, TransactionModel, TransactionModelStore } from ".";
|
|
2
|
+
import { BaseEventHandler } from "./BaseEventHandler";
|
|
2
3
|
import { ActivityEventHandler } from "./ActivityEventHandler";
|
|
3
|
-
export declare class TransactionEventHandler {
|
|
4
|
+
export declare class TransactionEventHandler implements BaseEventHandler<TransactionEvent> {
|
|
4
5
|
private modelStore;
|
|
5
6
|
private eventStore;
|
|
6
|
-
private txUserModelStore;
|
|
7
7
|
private activityEventHandler?;
|
|
8
|
-
constructor(modelStore: TransactionModelStore, eventStore: TransactionEventStore,
|
|
8
|
+
constructor(modelStore: TransactionModelStore, eventStore: TransactionEventStore, activityEventHandler?: ActivityEventHandler | undefined);
|
|
9
|
+
private shouldSkipSave;
|
|
10
|
+
handleClientEventFromRemoteListener(event: TransactionEvent): Promise<void>;
|
|
9
11
|
handleEvent(event: TransactionEvent): Promise<TransactionModel>;
|
|
10
12
|
private createMirrorEvent;
|
|
11
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/TransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TransactionEventHandler.d.ts","sourceRoot":"","sources":["../src/TransactionEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAUH,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACxB,MAAM,GAAG,CAAC;AACX,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAQ9D,qBAAa,uBACT,YAAW,gBAAgB,CAAC,gBAAgB,CAAC;IAGzC,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,oBAAoB,CAAC;gBAFrB,UAAU,EAAE,qBAAqB,EACjC,UAAU,EAAE,qBAAqB,EACjC,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGvD,OAAO,CAAC,cAAc;IAaT,mCAAmC,CAC5C,KAAK,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC;IAeV,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YA6BvD,iBAAiB;CA6KlC"}
|
|
@@ -2,40 +2,50 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TransactionEventHandler = void 0;
|
|
4
4
|
const _1 = require(".");
|
|
5
|
-
const DomainEvents_1 = require("./common/DomainEvents");
|
|
6
5
|
const splitTypeUtils_1 = require("./utils/splitTypeUtils");
|
|
7
|
-
const userPathUtils_1 = require("./utils/userPathUtils");
|
|
8
6
|
const uuid_1 = require("uuid");
|
|
7
|
+
const EventProcessorSDK_1 = require("./EventProcessorSDK");
|
|
9
8
|
class TransactionEventHandler {
|
|
10
|
-
constructor(modelStore, eventStore,
|
|
9
|
+
constructor(modelStore, eventStore, activityEventHandler) {
|
|
11
10
|
this.modelStore = modelStore;
|
|
12
11
|
this.eventStore = eventStore;
|
|
13
|
-
this.txUserModelStore = txUserModelStore;
|
|
14
12
|
this.activityEventHandler = activityEventHandler;
|
|
15
13
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
throw new Error(`Unknown transaction event type: ${eventType}`);
|
|
14
|
+
shouldSkipSave(existingModel, updatedModel) {
|
|
15
|
+
if (!existingModel) {
|
|
16
|
+
return false;
|
|
20
17
|
}
|
|
18
|
+
return (existingModel.streamId === updatedModel.streamId &&
|
|
19
|
+
existingModel.version === updatedModel.version);
|
|
20
|
+
}
|
|
21
|
+
async handleClientEventFromRemoteListener(event) {
|
|
21
22
|
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
22
23
|
const model = event.apply(existingModel);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (this.activityEventHandler) {
|
|
27
|
-
await this.activityEventHandler.createActivityLog(event, existingModel, model);
|
|
28
|
-
}
|
|
24
|
+
if (!this.shouldSkipSave(existingModel, model)) {
|
|
25
|
+
await this.modelStore.save(model);
|
|
26
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("TransactionModel", model);
|
|
29
27
|
}
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
}
|
|
29
|
+
async handleEvent(event) {
|
|
30
|
+
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
31
|
+
const model = event.apply(existingModel);
|
|
32
|
+
if (!this.shouldSkipSave(existingModel, model)) {
|
|
33
|
+
await this.modelStore.save(model);
|
|
34
|
+
if (_1.residence.isClient) {
|
|
35
|
+
await this.eventStore.addEvent(event);
|
|
36
|
+
EventProcessorSDK_1.EventProcessorSDK.getInstance().emitModelChange("TransactionModel", model);
|
|
37
|
+
if (this.activityEventHandler) {
|
|
38
|
+
await this.activityEventHandler.createActivityLog(event, existingModel, model);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
await this.createMirrorEvent(event, model);
|
|
43
|
+
}
|
|
32
44
|
}
|
|
33
45
|
return model;
|
|
34
46
|
}
|
|
35
47
|
async createMirrorEvent(originalEvent, transactionModel) {
|
|
36
48
|
const eventType = originalEvent.constructor.name;
|
|
37
|
-
const recipientUserModel = await this.txUserModelStore.getByStreamId(transactionModel.recipientUserId);
|
|
38
|
-
(0, userPathUtils_1.getUserEventPath)(recipientUserModel, transactionModel.recipientUserId);
|
|
39
49
|
const existingMirrorModel = await this.modelStore.findByUserAndLogicalTransactionId(transactionModel.recipientUserId, transactionModel.userId, transactionModel.logicalTransactionId);
|
|
40
50
|
const mirrorStreamId = existingMirrorModel
|
|
41
51
|
? existingMirrorModel.streamId
|
|
@@ -162,9 +172,11 @@ class TransactionEventHandler {
|
|
|
162
172
|
}
|
|
163
173
|
await this.eventStore.addEvent(mirrorEvent);
|
|
164
174
|
const updatedModel = mirrorEvent.apply(existingMirrorModel);
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
175
|
+
if (!this.shouldSkipSave(existingMirrorModel, updatedModel)) {
|
|
176
|
+
await this.modelStore.save(updatedModel);
|
|
177
|
+
if (this.activityEventHandler) {
|
|
178
|
+
await this.activityEventHandler.createActivityLog(mirrorEvent, existingMirrorModel, updatedModel);
|
|
179
|
+
}
|
|
168
180
|
}
|
|
169
181
|
}
|
|
170
182
|
}
|