-
Notifications
You must be signed in to change notification settings - Fork 16
/
index.js
137 lines (126 loc) · 3.76 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import {
START,
eventTypeFilter,
streamNameFilter,
} from "@eventstore/db-client";
export async function subscribeToAllExcludeSystemEvents(client) {
// region exclude-system
const excludeSystemEventsRegex = /^[^\$].*/;
const subscription = client
.subscribeToAll({
fromRevision: START,
filter: eventTypeFilter({ regex: excludeSystemEventsRegex }),
})
.on("data", function (resolvedEvent) {
console.log(
`Received event ${resolvedEvent.event.revision}@${resolvedEvent.event.streamId}`
);
});
// endregion exclude-system
}
export async function subscribeToAllFilteringByEventTypePrefix(client) {
// region event-type-prefix
const prefixes = ["customer-"];
const filter = eventTypeFilter({ prefixes });
// endregion event-type-prefix
const subscription = client
.subscribeToAll({
fromRevision: START,
filter,
})
.on("data", handleEvent);
}
export async function subscribeToAllFilteringByEventTypeRegex(client) {
// region event-type-regex
const regex = /^user|^company/;
const filter = eventTypeFilter({ regex });
// endregion event-type-regex
const subscription = client
.subscribeToAll({
fromRevision: START,
filter,
})
.on("data", handleEvent);
}
export async function subscribeToAllFilteringByStreamPrefix(client) {
// region stream-prefix
const prefixes = ["user-"];
const filter = streamNameFilter({ prefixes });
// endregion stream-prefix
const subscription = client
.subscribeToAll({
fromRevision: START,
filter,
})
.on("data", handleEvent);
}
export async function subscribeToAllFilteringByStreamRegex(client) {
// region stream-regex
const regex = /^account|^savings/;
const filter = streamNameFilter({ regex });
// endregion stream-regex
const subscription = client
.subscribeToAll({
fromRevision: START,
filter,
})
.on("data", handleEvent);
}
// private static async Task CheckpointCallback(EventStoreClient client) {
// #region checkpoint
// var filter = new SubscriptionFilterOptions(
// EventTypeFilter.ExcludeSystemEvents(),
// checkpointReached: (s, p, c) =>
// {
// Console.WriteLine($"checkpoint taken at {p.PreparePosition}");
// return Task.CompletedTask;
// });
// #endregion checkpoint
// await client.SubscribeToAllAsync(Position.Start,
// (s, e, c) => {
// Console.WriteLine(
// $"{e.Event.EventType} @ {e.Event.Position.PreparePosition}");
// return Task.CompletedTask;
// },
// filterOptions: filter
// );
// }
export async function subscribeToAllWithCheckpointInterval(client) {
// region checkpoint-with-interval
const excludeSystemEventsRegex = /^[^\$].*/;
const filter = eventTypeFilter({
checkpointIntervalMul: 1000,
regex: excludeSystemEventsRegex,
});
// endregion checkpoint-with-interval
const subscription = client
.subscribeToStream({
filter: streamNameFilter({ regex }),
})
.on("data", handleEvent);
}
function handleEvent(event) {
console.log(event);
}
// private static async Task CheckpointCallbackWithInterval(EventStoreClient client) {
// #region checkpoint-with-interval
// var filter = new SubscriptionFilterOptions(
// EventTypeFilter.ExcludeSystemEvents(),
// checkpointInterval: 1000,
// checkpointReached: (s, p, c) =>
// {
// Console.WriteLine($"checkpoint taken at {p.PreparePosition}");
// return Task.CompletedTask;
// });
// #endregion checkpoint-with-interval
// await client.SubscribeToAllAsync(Position.Start,
// (s, e, c) => {
// Console.WriteLine(
// $"{e.Event.EventType} @ {e.Event.Position.PreparePosition}");
// return Task.CompletedTask;
// },
// filterOptions: filter
// );
// }
// }
// }