@zeeshan60/event-processor 1.0.4 → 1.0.6
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 +12 -0
- package/dist/ActivityEventHandler.d.ts.map +1 -0
- package/dist/ActivityEventHandler.js +35 -0
- package/dist/ActivityLogEvents.d.ts +2 -0
- package/dist/ActivityLogEvents.d.ts.map +1 -1
- package/dist/ActivityLogEvents.js +1 -0
- package/dist/FriendEventHandler.d.ts +21 -0
- package/dist/FriendEventHandler.d.ts.map +1 -0
- package/dist/FriendEventHandler.js +180 -0
- package/dist/FriendEvents.d.ts +10 -0
- package/dist/FriendEvents.d.ts.map +1 -1
- package/dist/FriendEvents.js +9 -0
- package/dist/GroupEventHandler.d.ts +25 -0
- package/dist/GroupEventHandler.d.ts.map +1 -0
- package/dist/GroupEventHandler.js +278 -0
- package/dist/GroupEvents.d.ts +12 -0
- package/dist/GroupEvents.d.ts.map +1 -1
- package/dist/GroupEvents.js +12 -0
- package/dist/GroupTransactionEventHandler.d.ts +25 -0
- package/dist/GroupTransactionEventHandler.d.ts.map +1 -0
- package/dist/GroupTransactionEventHandler.js +303 -0
- package/dist/GroupTransactionEvents.d.ts +18 -0
- package/dist/GroupTransactionEvents.d.ts.map +1 -1
- package/dist/GroupTransactionEvents.js +18 -0
- package/dist/TransactionEventHandler.d.ts +11 -7
- package/dist/TransactionEventHandler.d.ts.map +1 -1
- package/dist/TransactionEventHandler.js +146 -10
- package/dist/TransactionEvents.d.ts +16 -0
- package/dist/TransactionEvents.d.ts.map +1 -1
- package/dist/TransactionEvents.js +16 -0
- package/dist/UserEventHandler.d.ts +17 -0
- package/dist/UserEventHandler.d.ts.map +1 -0
- package/dist/UserEventHandler.js +82 -0
- package/dist/UserEvents.d.ts +16 -0
- package/dist/UserEvents.d.ts.map +1 -1
- package/dist/UserEvents.js +12 -0
- package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts +9 -0
- package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts.map +1 -0
- package/dist/__tests__/test-helpers/IMActivityLogEventStore.js +21 -0
- package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts +11 -0
- package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts.map +1 -0
- package/dist/{store/InMemoryModelStore.js → __tests__/test-helpers/IMActivityLogModelStore.js} +14 -13
- package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts +9 -0
- package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts.map +1 -0
- package/dist/__tests__/test-helpers/IMFriendEventStore.js +20 -0
- package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts +16 -0
- package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts.map +1 -0
- package/dist/__tests__/test-helpers/IMFriendModelStore.js +74 -0
- package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts +9 -0
- package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts.map +1 -0
- package/dist/__tests__/test-helpers/IMGroupEventStore.js +20 -0
- package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts +14 -0
- package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts.map +1 -0
- package/dist/__tests__/test-helpers/IMGroupModelStore.js +53 -0
- package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts +9 -0
- package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts.map +1 -0
- package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.js +22 -0
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts +14 -0
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts.map +1 -0
- package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.js +55 -0
- package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts +10 -0
- package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts.map +1 -0
- package/dist/__tests__/test-helpers/IMTransactionEventStore.js +23 -0
- package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts +14 -0
- package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts.map +1 -0
- package/dist/__tests__/test-helpers/IMTransactionModelStore.js +56 -0
- package/dist/__tests__/test-helpers/IMUserEventStore.d.ts +10 -0
- package/dist/__tests__/test-helpers/IMUserEventStore.d.ts.map +1 -0
- package/dist/{store/InMemoryEventStore.js → __tests__/test-helpers/IMUserEventStore.js} +5 -5
- package/dist/__tests__/test-helpers/IMUserModelStore.d.ts +15 -0
- package/dist/__tests__/test-helpers/IMUserModelStore.d.ts.map +1 -0
- package/dist/__tests__/test-helpers/IMUserModelStore.js +58 -0
- package/dist/common/Event.d.ts +1 -0
- package/dist/common/Event.d.ts.map +1 -1
- package/dist/events.d.ts +30 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +60 -0
- package/dist/index.d.ts +1 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -86
- package/dist/utils/splitTypeUtils.d.ts +7 -0
- package/dist/utils/splitTypeUtils.d.ts.map +1 -0
- package/dist/utils/splitTypeUtils.js +45 -0
- package/dist/utils/userPathUtils.d.ts +6 -0
- package/dist/utils/userPathUtils.d.ts.map +1 -0
- package/dist/utils/userPathUtils.js +16 -0
- package/package.json +1 -1
- package/dist/common/EventStore.d.ts +0 -5
- package/dist/common/EventStore.d.ts.map +0 -1
- package/dist/common/EventStore.js +0 -6
- package/dist/common/ModelStore.d.ts +0 -6
- package/dist/common/ModelStore.d.ts.map +0 -1
- package/dist/common/ModelStore.js +0 -6
- package/dist/store/InMemoryEventStore.d.ts +0 -10
- package/dist/store/InMemoryEventStore.d.ts.map +0 -1
- package/dist/store/InMemoryModelStore.d.ts +0 -11
- package/dist/store/InMemoryModelStore.d.ts.map +0 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Event, Model } from '.';
|
|
2
|
+
import { ActivityLogModelStore } from '.';
|
|
3
|
+
import { ActivityLogEventStore } from '.';
|
|
4
|
+
import { UserModelStore } from '.';
|
|
5
|
+
export declare class ActivityEventHandler {
|
|
6
|
+
private activityLogModelStore;
|
|
7
|
+
private activityLogEventStore;
|
|
8
|
+
private userModelStore;
|
|
9
|
+
constructor(activityLogModelStore: ActivityLogModelStore, activityLogEventStore: ActivityLogEventStore, userModelStore: UserModelStore);
|
|
10
|
+
createActivityLog(event: Event, existingModel: Model | undefined, updatedModel: Model): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=ActivityEventHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityEventHandler.d.ts","sourceRoot":"","sources":["../src/ActivityEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,KAAK,EAA8C,MAAM,GAAG,CAAC;AAC5E,OAAO,EAAC,qBAAqB,EAAC,MAAM,GAAG,CAAC;AACxC,OAAO,EAAC,qBAAqB,EAAC,MAAM,GAAG,CAAC;AACxC,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AAEjC,qBAAa,oBAAoB;IAEzB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,cAAc;gBAFd,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,EAAE,cAAc;IAGpC,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,GAAG,SAAS,EAAE,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CA2B9G"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ActivityEventHandler = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
class ActivityEventHandler {
|
|
6
|
+
constructor(activityLogModelStore, activityLogEventStore, userModelStore) {
|
|
7
|
+
this.activityLogModelStore = activityLogModelStore;
|
|
8
|
+
this.activityLogEventStore = activityLogEventStore;
|
|
9
|
+
this.userModelStore = userModelStore;
|
|
10
|
+
}
|
|
11
|
+
async createActivityLog(event, existingModel, updatedModel) {
|
|
12
|
+
if (!event.activityLog) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
let actorName;
|
|
16
|
+
if (event.createdBy !== updatedModel.userId) {
|
|
17
|
+
const actorUser = await this.userModelStore.getByStreamId(event.createdBy);
|
|
18
|
+
if (actorUser) {
|
|
19
|
+
actorName = actorUser.displayName;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
actorName = event.createdBy;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const activityLogProps = event.activityLog(existingModel, actorName);
|
|
26
|
+
if (!activityLogProps) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const activityLogEvent = new _1.ActivityLogCreated(activityLogProps);
|
|
30
|
+
const activityLogModel = activityLogEvent.apply();
|
|
31
|
+
await this.activityLogEventStore.addEvent(updatedModel.userId, activityLogEvent);
|
|
32
|
+
await this.activityLogModelStore.save(activityLogModel);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.ActivityEventHandler = ActivityEventHandler;
|
|
@@ -25,6 +25,7 @@ export interface ActivityLogCreatedProps {
|
|
|
25
25
|
createdBy: string;
|
|
26
26
|
streamId: string;
|
|
27
27
|
version: number;
|
|
28
|
+
systemGenerated: boolean;
|
|
28
29
|
}
|
|
29
30
|
export declare class ActivityLogCreated implements Event {
|
|
30
31
|
userId: string;
|
|
@@ -37,6 +38,7 @@ export declare class ActivityLogCreated implements Event {
|
|
|
37
38
|
createdBy: string;
|
|
38
39
|
streamId: string;
|
|
39
40
|
version: number;
|
|
41
|
+
systemGenerated: boolean;
|
|
40
42
|
constructor(props: ActivityLogCreatedProps);
|
|
41
43
|
apply(_existing?: Model): ActivityLogModel;
|
|
42
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityLogEvents.d.ts","sourceRoot":"","sources":["../src/ActivityLogEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,oBAAY,UAAU;IACpB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,gBAAgB,qBAAqB;CACtC;AAED,MAAM,WAAW,gBAAiB,SAAQ,KAAK;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ActivityLogEvents.d.ts","sourceRoot":"","sources":["../src/ActivityLogEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,oBAAY,UAAU;IACpB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,gBAAgB,qBAAqB;CACtC;AAED,MAAM,WAAW,gBAAiB,SAAQ,KAAK;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,kBAAmB,YAAW,KAAK;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,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,uBAAuB;IAc1C,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,gBAAgB;CAa3C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { FriendCreated, FriendDeleted, FriendIdAdded, FriendIdRemoved, FriendModel, FriendUpdated, Event } from '.';
|
|
2
|
+
import { FriendModelStore } from '.';
|
|
3
|
+
import { UserModelStore } from '.';
|
|
4
|
+
import { FriendEventStore } from '.';
|
|
5
|
+
import { UserEventStore } from '.';
|
|
6
|
+
import { ActivityEventHandler } from './ActivityEventHandler';
|
|
7
|
+
export declare class FriendEventHandler {
|
|
8
|
+
private modelStore;
|
|
9
|
+
private userModelStore;
|
|
10
|
+
private friendEventStore;
|
|
11
|
+
private userEventStore;
|
|
12
|
+
private activityEventHandler?;
|
|
13
|
+
constructor(modelStore: FriendModelStore, userModelStore: UserModelStore, friendEventStore: FriendEventStore, userEventStore: UserEventStore, activityEventHandler?: ActivityEventHandler | undefined);
|
|
14
|
+
handleEvent(event: Event): Promise<FriendModel>;
|
|
15
|
+
handleFriendCreated(event: FriendCreated): Promise<FriendModel>;
|
|
16
|
+
handleFriendUpdated(event: FriendUpdated): Promise<FriendModel>;
|
|
17
|
+
handleFriendDeleted(event: FriendDeleted): Promise<FriendModel>;
|
|
18
|
+
handleFriendIdAdded(event: FriendIdAdded): Promise<FriendModel>;
|
|
19
|
+
handleFriendIdRemoved(event: FriendIdRemoved): Promise<FriendModel>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=FriendEventHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FriendEventHandler.d.ts","sourceRoot":"","sources":["../src/FriendEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,aAAa,EAGb,KAAK,EACR,MAAM,GAAG,CAAC;AACX,OAAO,EAAC,gBAAgB,EAAC,MAAM,GAAG,CAAC;AACnC,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AACjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,GAAG,CAAC;AACnC,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AACjC,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAG5D,qBAAa,kBAAkB;IAEvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,oBAAoB,CAAC;gBAJrB,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,EAC9B,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGjD,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;IA8B/C,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IA6G/D,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAU/D,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAU/D,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAU/D,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;CAS5E"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FriendEventHandler = void 0;
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
const uuid_1 = require("uuid");
|
|
6
|
+
class FriendEventHandler {
|
|
7
|
+
constructor(modelStore, userModelStore, friendEventStore, userEventStore, activityEventHandler) {
|
|
8
|
+
this.modelStore = modelStore;
|
|
9
|
+
this.userModelStore = userModelStore;
|
|
10
|
+
this.friendEventStore = friendEventStore;
|
|
11
|
+
this.userEventStore = userEventStore;
|
|
12
|
+
this.activityEventHandler = activityEventHandler;
|
|
13
|
+
}
|
|
14
|
+
async handleEvent(event) {
|
|
15
|
+
const validEventTypes = [
|
|
16
|
+
'FriendCreated',
|
|
17
|
+
'FriendUpdated',
|
|
18
|
+
'FriendDeleted',
|
|
19
|
+
'FriendIdAdded',
|
|
20
|
+
'FriendIdRemoved'
|
|
21
|
+
];
|
|
22
|
+
const eventType = event.constructor.name;
|
|
23
|
+
if (!validEventTypes.includes(eventType)) {
|
|
24
|
+
throw new Error(`Unknown friend event type: ${eventType}`);
|
|
25
|
+
}
|
|
26
|
+
switch (eventType) {
|
|
27
|
+
case 'FriendCreated':
|
|
28
|
+
return await this.handleFriendCreated(event);
|
|
29
|
+
case 'FriendUpdated':
|
|
30
|
+
return await this.handleFriendUpdated(event);
|
|
31
|
+
case 'FriendDeleted':
|
|
32
|
+
return await this.handleFriendDeleted(event);
|
|
33
|
+
case 'FriendIdAdded':
|
|
34
|
+
return await this.handleFriendIdAdded(event);
|
|
35
|
+
case 'FriendIdRemoved':
|
|
36
|
+
return await this.handleFriendIdRemoved(event);
|
|
37
|
+
default:
|
|
38
|
+
throw new Error(`Unknown friend event type: ${eventType}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async handleFriendCreated(event) {
|
|
42
|
+
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
43
|
+
const updatedModel = event.apply(existingModel);
|
|
44
|
+
await this.modelStore.save(updatedModel);
|
|
45
|
+
// Check if friend is already a user (try phone first, then email)
|
|
46
|
+
let friendUser = null;
|
|
47
|
+
if (event.friendPhoneNumber) {
|
|
48
|
+
friendUser = await this.userModelStore.findByPhone(event.friendPhoneNumber);
|
|
49
|
+
}
|
|
50
|
+
if (!friendUser && event.friendEmail) {
|
|
51
|
+
friendUser = await this.userModelStore.findByEmail(event.friendEmail);
|
|
52
|
+
}
|
|
53
|
+
// If friend is a user, link them and create reciprocal friendship
|
|
54
|
+
if (friendUser) {
|
|
55
|
+
// Create FriendIdAdded event for current user
|
|
56
|
+
const friendIdAddedEvent = new _1.FriendIdAdded({
|
|
57
|
+
userId: event.userId,
|
|
58
|
+
friendId: friendUser.userId,
|
|
59
|
+
createdAt: new Date(),
|
|
60
|
+
createdBy: event.userId,
|
|
61
|
+
streamId: event.streamId,
|
|
62
|
+
version: updatedModel.version + 1,
|
|
63
|
+
systemGenerated: true,
|
|
64
|
+
});
|
|
65
|
+
await this.friendEventStore.addEvent(event.userId, friendIdAddedEvent);
|
|
66
|
+
const modelWithFriendId = friendIdAddedEvent.apply(updatedModel);
|
|
67
|
+
await this.modelStore.save(modelWithFriendId);
|
|
68
|
+
const primaryUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(event.userId);
|
|
69
|
+
if (primaryUser) {
|
|
70
|
+
const reciprocalFriendCreated = new _1.FriendCreated({
|
|
71
|
+
userId: friendUser.userId,
|
|
72
|
+
friendEmail: primaryUser.email,
|
|
73
|
+
friendPhoneNumber: primaryUser.phoneNumber,
|
|
74
|
+
friendDisplayName: primaryUser.displayName,
|
|
75
|
+
friendId: event.userId,
|
|
76
|
+
groupId: event.groupId,
|
|
77
|
+
createdAt: new Date(),
|
|
78
|
+
createdBy: friendUser.userId,
|
|
79
|
+
streamId: `stream-${(0, uuid_1.v4)()}`,
|
|
80
|
+
version: 1,
|
|
81
|
+
systemGenerated: true,
|
|
82
|
+
});
|
|
83
|
+
await this.friendEventStore.addEvent(friendUser.userId, reciprocalFriendCreated);
|
|
84
|
+
const reciprocalModel = reciprocalFriendCreated.apply(undefined);
|
|
85
|
+
await this.modelStore.save(reciprocalModel);
|
|
86
|
+
}
|
|
87
|
+
return modelWithFriendId;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// Friend user not found - create placeholder user
|
|
91
|
+
const placeholderStreamId = `stream-${(0, uuid_1.v4)()}`;
|
|
92
|
+
const placeholderUserCreated = new _1.PlaceholderUserCreated({
|
|
93
|
+
userId: placeholderStreamId,
|
|
94
|
+
displayName: event.friendDisplayName,
|
|
95
|
+
phoneNumber: event.friendPhoneNumber,
|
|
96
|
+
email: event.friendEmail,
|
|
97
|
+
createdAt: new Date(),
|
|
98
|
+
createdBy: event.userId,
|
|
99
|
+
streamId: placeholderStreamId,
|
|
100
|
+
version: 1,
|
|
101
|
+
systemGenerated: true,
|
|
102
|
+
});
|
|
103
|
+
await this.userEventStore.addEvent(placeholderStreamId, placeholderUserCreated);
|
|
104
|
+
const placeholderUser = placeholderUserCreated.apply(undefined);
|
|
105
|
+
await this.userModelStore.save(placeholderUser);
|
|
106
|
+
// Link primary user to placeholder
|
|
107
|
+
const friendIdAddedEvent = new _1.FriendIdAdded({
|
|
108
|
+
userId: event.userId,
|
|
109
|
+
friendId: placeholderStreamId,
|
|
110
|
+
createdAt: new Date(),
|
|
111
|
+
createdBy: event.userId,
|
|
112
|
+
streamId: event.streamId,
|
|
113
|
+
version: updatedModel.version + 1,
|
|
114
|
+
systemGenerated: true,
|
|
115
|
+
});
|
|
116
|
+
await this.friendEventStore.addEvent(event.userId, friendIdAddedEvent);
|
|
117
|
+
const modelWithPlaceholderId = friendIdAddedEvent.apply(updatedModel);
|
|
118
|
+
await this.modelStore.save(modelWithPlaceholderId);
|
|
119
|
+
// Create reciprocal friendship for placeholder user
|
|
120
|
+
const primaryUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(event.userId);
|
|
121
|
+
if (primaryUser) {
|
|
122
|
+
const primaryUserModel = primaryUser;
|
|
123
|
+
const reciprocalFriendCreated = new _1.FriendCreated({
|
|
124
|
+
userId: placeholderStreamId,
|
|
125
|
+
friendEmail: primaryUserModel.email,
|
|
126
|
+
friendPhoneNumber: primaryUserModel.phoneNumber,
|
|
127
|
+
friendDisplayName: primaryUserModel.displayName,
|
|
128
|
+
friendId: event.userId,
|
|
129
|
+
groupId: event.groupId,
|
|
130
|
+
createdAt: new Date(),
|
|
131
|
+
createdBy: placeholderStreamId,
|
|
132
|
+
streamId: `stream-${(0, uuid_1.v4)()}`,
|
|
133
|
+
version: 1,
|
|
134
|
+
systemGenerated: true,
|
|
135
|
+
});
|
|
136
|
+
await this.friendEventStore.addEvent(placeholderStreamId, reciprocalFriendCreated);
|
|
137
|
+
const reciprocalModel = reciprocalFriendCreated.apply(undefined);
|
|
138
|
+
await this.modelStore.save(reciprocalModel);
|
|
139
|
+
}
|
|
140
|
+
return modelWithPlaceholderId;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async handleFriendUpdated(event) {
|
|
144
|
+
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
145
|
+
const updatedModel = event.apply(existingModel);
|
|
146
|
+
await this.modelStore.save(updatedModel);
|
|
147
|
+
if (this.activityEventHandler) {
|
|
148
|
+
await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
|
|
149
|
+
}
|
|
150
|
+
return updatedModel;
|
|
151
|
+
}
|
|
152
|
+
async handleFriendDeleted(event) {
|
|
153
|
+
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
154
|
+
const updatedModel = event.apply(existingModel);
|
|
155
|
+
await this.modelStore.save(updatedModel);
|
|
156
|
+
if (this.activityEventHandler) {
|
|
157
|
+
await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
|
|
158
|
+
}
|
|
159
|
+
return updatedModel;
|
|
160
|
+
}
|
|
161
|
+
async handleFriendIdAdded(event) {
|
|
162
|
+
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
163
|
+
const updatedModel = event.apply(existingModel);
|
|
164
|
+
await this.modelStore.save(updatedModel);
|
|
165
|
+
if (this.activityEventHandler) {
|
|
166
|
+
await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
|
|
167
|
+
}
|
|
168
|
+
return updatedModel;
|
|
169
|
+
}
|
|
170
|
+
async handleFriendIdRemoved(event) {
|
|
171
|
+
const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
|
|
172
|
+
const updatedModel = event.apply(existingModel);
|
|
173
|
+
await this.modelStore.save(updatedModel);
|
|
174
|
+
if (this.activityEventHandler) {
|
|
175
|
+
await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
|
|
176
|
+
}
|
|
177
|
+
return updatedModel;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.FriendEventHandler = FriendEventHandler;
|
package/dist/FriendEvents.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export interface FriendCreatedProps {
|
|
|
28
28
|
createdBy: string;
|
|
29
29
|
streamId: string;
|
|
30
30
|
version: number;
|
|
31
|
+
systemGenerated: boolean;
|
|
31
32
|
}
|
|
32
33
|
export declare class FriendCreated implements Event {
|
|
33
34
|
userId: string;
|
|
@@ -40,6 +41,7 @@ export declare class FriendCreated implements Event {
|
|
|
40
41
|
createdBy: string;
|
|
41
42
|
streamId: string;
|
|
42
43
|
version: number;
|
|
44
|
+
systemGenerated: boolean;
|
|
43
45
|
constructor(props: FriendCreatedProps);
|
|
44
46
|
apply(_existing?: Model): FriendModel;
|
|
45
47
|
activityLog(_existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
|
|
@@ -53,6 +55,7 @@ export interface FriendUpdatedProps {
|
|
|
53
55
|
createdBy: string;
|
|
54
56
|
streamId: string;
|
|
55
57
|
version: number;
|
|
58
|
+
systemGenerated: boolean;
|
|
56
59
|
}
|
|
57
60
|
export declare class FriendUpdated implements Event {
|
|
58
61
|
userId?: string;
|
|
@@ -63,6 +66,7 @@ export declare class FriendUpdated implements Event {
|
|
|
63
66
|
createdBy: string;
|
|
64
67
|
streamId: string;
|
|
65
68
|
version: number;
|
|
69
|
+
systemGenerated: boolean;
|
|
66
70
|
constructor(props: FriendUpdatedProps);
|
|
67
71
|
apply(existing?: Model): FriendModel;
|
|
68
72
|
activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
|
|
@@ -73,6 +77,7 @@ export interface FriendDeletedProps {
|
|
|
73
77
|
createdBy: string;
|
|
74
78
|
streamId: string;
|
|
75
79
|
version: number;
|
|
80
|
+
systemGenerated: boolean;
|
|
76
81
|
}
|
|
77
82
|
export declare class FriendDeleted implements Event {
|
|
78
83
|
userId?: string;
|
|
@@ -80,6 +85,7 @@ export declare class FriendDeleted implements Event {
|
|
|
80
85
|
createdBy: string;
|
|
81
86
|
streamId: string;
|
|
82
87
|
version: number;
|
|
88
|
+
systemGenerated: boolean;
|
|
83
89
|
constructor(props: FriendDeletedProps);
|
|
84
90
|
apply(existing?: Model): FriendModel;
|
|
85
91
|
activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
|
|
@@ -91,6 +97,7 @@ export interface FriendIdAddedProps {
|
|
|
91
97
|
createdBy: string;
|
|
92
98
|
streamId: string;
|
|
93
99
|
version: number;
|
|
100
|
+
systemGenerated: boolean;
|
|
94
101
|
}
|
|
95
102
|
export declare class FriendIdAdded implements Event {
|
|
96
103
|
userId?: string;
|
|
@@ -99,6 +106,7 @@ export declare class FriendIdAdded implements Event {
|
|
|
99
106
|
createdBy: string;
|
|
100
107
|
streamId: string;
|
|
101
108
|
version: number;
|
|
109
|
+
systemGenerated: boolean;
|
|
102
110
|
constructor(props: FriendIdAddedProps);
|
|
103
111
|
apply(existing?: Model): FriendModel;
|
|
104
112
|
activityLog(existing?: Model, _actorName?: string): ActivityLogCreatedProps | undefined;
|
|
@@ -109,6 +117,7 @@ export interface FriendIdRemovedProps {
|
|
|
109
117
|
createdBy: string;
|
|
110
118
|
streamId: string;
|
|
111
119
|
version: number;
|
|
120
|
+
systemGenerated: boolean;
|
|
112
121
|
}
|
|
113
122
|
export declare class FriendIdRemoved implements Event {
|
|
114
123
|
userId?: string;
|
|
@@ -116,6 +125,7 @@ export declare class FriendIdRemoved implements Event {
|
|
|
116
125
|
createdBy: string;
|
|
117
126
|
streamId: string;
|
|
118
127
|
version: number;
|
|
128
|
+
systemGenerated: boolean;
|
|
119
129
|
constructor(props: FriendIdRemovedProps);
|
|
120
130
|
apply(existing?: Model): FriendModel;
|
|
121
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FriendEvents.d.ts","sourceRoot":"","sources":["../src/FriendEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAc,MAAM,qBAAqB,CAAC;AAG1E,oBAAY,eAAe;IACzB,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;CACxC;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"FriendEvents.d.ts","sourceRoot":"","sources":["../src/FriendEvents.ts"],"names":[],"mappings":"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"}
|
package/dist/FriendEvents.js
CHANGED
|
@@ -23,6 +23,7 @@ class FriendCreated {
|
|
|
23
23
|
this.createdBy = props.createdBy;
|
|
24
24
|
this.streamId = props.streamId;
|
|
25
25
|
this.version = props.version;
|
|
26
|
+
this.systemGenerated = props.systemGenerated;
|
|
26
27
|
}
|
|
27
28
|
apply(_existing) {
|
|
28
29
|
return {
|
|
@@ -53,6 +54,7 @@ class FriendCreated {
|
|
|
53
54
|
createdBy: this.createdBy,
|
|
54
55
|
streamId: (0, uuid_1.v4)(),
|
|
55
56
|
version: 1,
|
|
57
|
+
systemGenerated: true,
|
|
56
58
|
};
|
|
57
59
|
}
|
|
58
60
|
}
|
|
@@ -67,6 +69,7 @@ class FriendUpdated {
|
|
|
67
69
|
this.createdBy = props.createdBy;
|
|
68
70
|
this.streamId = props.streamId;
|
|
69
71
|
this.version = props.version;
|
|
72
|
+
this.systemGenerated = props.systemGenerated;
|
|
70
73
|
}
|
|
71
74
|
apply(existing) {
|
|
72
75
|
if (!existing) {
|
|
@@ -101,6 +104,7 @@ class FriendUpdated {
|
|
|
101
104
|
createdBy: this.createdBy,
|
|
102
105
|
streamId: (0, uuid_1.v4)(),
|
|
103
106
|
version: 1,
|
|
107
|
+
systemGenerated: true,
|
|
104
108
|
};
|
|
105
109
|
}
|
|
106
110
|
}
|
|
@@ -112,6 +116,7 @@ class FriendDeleted {
|
|
|
112
116
|
this.createdBy = props.createdBy;
|
|
113
117
|
this.streamId = props.streamId;
|
|
114
118
|
this.version = props.version;
|
|
119
|
+
this.systemGenerated = props.systemGenerated;
|
|
115
120
|
}
|
|
116
121
|
apply(existing) {
|
|
117
122
|
if (!existing) {
|
|
@@ -143,6 +148,7 @@ class FriendDeleted {
|
|
|
143
148
|
createdBy: this.createdBy,
|
|
144
149
|
streamId: (0, uuid_1.v4)(),
|
|
145
150
|
version: 1,
|
|
151
|
+
systemGenerated: true,
|
|
146
152
|
};
|
|
147
153
|
}
|
|
148
154
|
}
|
|
@@ -155,6 +161,7 @@ class FriendIdAdded {
|
|
|
155
161
|
this.createdBy = props.createdBy;
|
|
156
162
|
this.streamId = props.streamId;
|
|
157
163
|
this.version = props.version;
|
|
164
|
+
this.systemGenerated = props.systemGenerated;
|
|
158
165
|
}
|
|
159
166
|
apply(existing) {
|
|
160
167
|
if (!existing) {
|
|
@@ -185,6 +192,7 @@ class FriendIdAdded {
|
|
|
185
192
|
createdBy: this.createdBy,
|
|
186
193
|
streamId: (0, uuid_1.v4)(),
|
|
187
194
|
version: 1,
|
|
195
|
+
systemGenerated: true,
|
|
188
196
|
};
|
|
189
197
|
}
|
|
190
198
|
}
|
|
@@ -196,6 +204,7 @@ class FriendIdRemoved {
|
|
|
196
204
|
this.createdBy = props.createdBy;
|
|
197
205
|
this.streamId = props.streamId;
|
|
198
206
|
this.version = props.version;
|
|
207
|
+
this.systemGenerated = props.systemGenerated;
|
|
199
208
|
}
|
|
200
209
|
apply(existing) {
|
|
201
210
|
if (!existing) {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { GroupCreated, GroupNameChanged, GroupDescriptionChanged, GroupMembersAdded, GroupMembersRemoved, GroupDeleted, GroupModel, Event } from '.';
|
|
2
|
+
import { GroupModelStore } from '.';
|
|
3
|
+
import { FriendModelStore } from '.';
|
|
4
|
+
import { UserModelStore } from '.';
|
|
5
|
+
import { GroupEventStore } from '.';
|
|
6
|
+
import { FriendEventStore } from '.';
|
|
7
|
+
import { ActivityEventHandler } from './ActivityEventHandler';
|
|
8
|
+
export declare class GroupEventHandler {
|
|
9
|
+
private modelStore;
|
|
10
|
+
private friendModelStore;
|
|
11
|
+
private userModelStore;
|
|
12
|
+
private groupEventStore;
|
|
13
|
+
private friendEventStore;
|
|
14
|
+
private activityEventHandler?;
|
|
15
|
+
constructor(modelStore: GroupModelStore, friendModelStore: FriendModelStore, userModelStore: UserModelStore, groupEventStore: GroupEventStore, friendEventStore: FriendEventStore, activityEventHandler?: ActivityEventHandler | undefined);
|
|
16
|
+
handleEvent(event: Event): Promise<GroupModel>;
|
|
17
|
+
private ensureBidirectionalFriendship;
|
|
18
|
+
handleGroupCreated(event: GroupCreated): Promise<GroupModel>;
|
|
19
|
+
handleGroupNameChanged(event: GroupNameChanged): Promise<GroupModel>;
|
|
20
|
+
handleGroupDescriptionChanged(event: GroupDescriptionChanged): Promise<GroupModel>;
|
|
21
|
+
handleGroupMembersAdded(event: GroupMembersAdded): Promise<GroupModel>;
|
|
22
|
+
handleGroupMembersRemoved(event: GroupMembersRemoved): Promise<GroupModel>;
|
|
23
|
+
handleGroupDeleted(event: GroupDeleted): Promise<GroupModel>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=GroupEventHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupEventHandler.d.ts","sourceRoot":"","sources":["../src/GroupEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EAEV,KAAK,EACR,MAAM,GAAG,CAAC;AACX,OAAO,EAAC,eAAe,EAAC,MAAM,GAAG,CAAC;AAClC,OAAO,EAAC,gBAAgB,EAAC,MAAM,GAAG,CAAC;AACnC,OAAO,EAAC,cAAc,EAAC,MAAM,GAAG,CAAC;AACjC,OAAO,EAAC,eAAe,EAAC,MAAM,GAAG,CAAC;AAClC,OAAO,EAAC,gBAAgB,EAAC,MAAM,GAAG,CAAC;AACnC,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAG5D,qBAAa,iBAAiB;IAEtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,oBAAoB,CAAC;gBALrB,UAAU,EAAE,eAAe,EAC3B,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAGjD,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;YAiCtC,6BAA6B;IAgErC,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IA+C5D,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IA+BpE,6BAA6B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IA+BlF,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAsEtE,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IA+B1E,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;CAWrE"}
|