Skip to content

Commit 23100b1

Browse files
committed
Event exclusion working
1 parent 467b865 commit 23100b1

File tree

2 files changed

+34
-12
lines changed

2 files changed

+34
-12
lines changed

src/init-dependencies/event-store/get-all-events.ts

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,13 @@ export const getAllEvents =
2222
() =>
2323
dbExecute(
2424
dbClient,
25-
"SELECT * FROM events WHERE event_type != 'EquipmentTrainingQuizResult'",
25+
`
26+
SELECT events.*
27+
FROM events
28+
LEFT JOIN events_exclusions ON events.id = events_exclusions.event_id
29+
WHERE events_exclusions.event_id IS NULL
30+
AND events.event_type != 'EquipmentTrainingQuizResult'
31+
`,
2632
{}
2733
),
2834
failureWithStatus(
@@ -46,9 +52,19 @@ export const getAllEventsByType =
4652
pipe(
4753
TE.tryCatch(
4854
() =>
49-
dbExecute(dbClient, 'SELECT * FROM events WHERE event_type = ?;', [
50-
eventType,
51-
]),
55+
dbExecute(
56+
dbClient,
57+
`
58+
SELECT *
59+
FROM events
60+
LEFT JOIN events_exclusions ON events.id = events_exclusions.event_id
61+
WHERE events_exclusions.event_id IS NULL
62+
AND event_type = ?;
63+
`,
64+
[
65+
eventType,
66+
]
67+
),
5268
failureWithStatus(
5369
`Failed to query database for events of type '${eventType}'`,
5470
StatusCodes.INTERNAL_SERVER_ERROR
@@ -82,7 +98,13 @@ export const getAllEventsByTypes =
8298
() =>
8399
dbExecute(
84100
dbClient,
85-
'SELECT * FROM events WHERE event_type = ? OR event_type = ?',
101+
`
102+
SELECT *
103+
FROM events
104+
LEFT JOIN events_exclusions ON events.id = events_exclusions.event_id
105+
WHERE events_exclusions.event_id IS NULL
106+
AND (event_type = ? OR event_type = ?)
107+
`,
86108
[eventType, eventType2]
87109
),
88110
failureWithStatus(

tests/init-dependencies/event-store/get-all-events.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ describe('get all events', () => {
9797
await persistEvent(equipmentTrainingSheetRegistered);
9898
});
9999
it('returns all persisted events except EquipmentTrainingQuizResult', async () => {
100-
expect(await initalisedGetAllEvents()).toStrictEqual([
100+
const allEvents = await initalisedGetAllEvents();
101+
expect(allEvents).toStrictEqual([
101102
memberNumberLinkedToEmail,
102103
equipmentTrainingSheetRegistered,
103104
]);
@@ -203,12 +204,11 @@ describe('get all events', () => {
203204
await unPersistEvent(eventId, excludedBy, excludedByReason)
204205
});
205206
it('returns only events of the requested type excluding the excluded event', async () => {
206-
expect(
207-
await initalisedGetAllEventsByTypes(
208-
'MemberNumberLinkedToEmail',
209-
'EquipmentTrainingSheetRegistered'
210-
)
211-
).toStrictEqual([
207+
const events = await initalisedGetAllEventsByTypes(
208+
'MemberNumberLinkedToEmail',
209+
'EquipmentTrainingSheetRegistered'
210+
);
211+
expect(events).toStrictEqual([
212212
memberLinkedEvent,
213213
]);
214214
});

0 commit comments

Comments
 (0)