Skip to content

Commit

Permalink
Prepare to distinguish between existing and potential owners #25
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Haarhoff committed Jun 19, 2024
1 parent ec1fc45 commit 56d74fa
Showing 1 changed file with 22 additions and 7 deletions.
29 changes: 22 additions & 7 deletions src/read-models/members/getPotentialOwners.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,28 @@ type AreaOwners = {
potential: ReadonlyArray<PotentialOwner>;
};

const pertinentEventTypes: Array<EventName> = [
'MemberNumberLinkedToEmail',
'MemberDetailsUpdated',
'AreaCreated',
];
type Area = {
id: string;
owners: Set<number>;
};

type State = {
members: Map<Member['number'], Member>;
areas: Map<string, unknown>;
areas: Map<Area['id'], Area>;
};

const emptyState = (): State => ({
members: new Map(),
areas: new Map(),
});

const pertinentEventTypes: Array<EventName> = [
'MemberNumberLinkedToEmail',
'MemberDetailsUpdated',
'AreaCreated',
'OwnerAdded',
];

const handleEvent = (
state: State,
event: SubsetOfDomainEvent<typeof pertinentEventTypes>
Expand All @@ -64,7 +70,16 @@ const handleEvent = (
}
}
if (isEventOfType('AreaCreated')(event)) {
state.areas.set(event.id, {});
state.areas.set(event.id, {id: event.id, owners: new Set()});
}
if (isEventOfType('OwnerAdded')(event)) {
const current = state.areas.get(event.areaId);
if (current) {
state.areas.set(event.areaId, {
...current,
owners: current.owners.add(event.memberNumber),
});
}
}
return state;
};
Expand Down

0 comments on commit 56d74fa

Please sign in to comment.