Skip to content

Commit 24081b6

Browse files
committed
top-level messagebus.handle dispatches events vs comannds [messagebus_dispatches_differently]
1 parent f0337f4 commit 24081b6

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

src/allocation/service_layer/messagebus.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,33 @@
1+
# pylint: disable=bare-except
12
from __future__ import annotations
2-
from typing import List, Dict, Callable, Type, TYPE_CHECKING
3-
from allocation.domain import events
3+
import logging
4+
from typing import List, Dict, Callable, Type, Union, TYPE_CHECKING
5+
from allocation.domain import commands, events
46
from . import handlers
57

68
if TYPE_CHECKING:
79
from . import unit_of_work
810

11+
logger = logging.getLogger(__name__)
12+
13+
Message = Union[commands.Command, events.Event]
14+
915

1016
def handle(
11-
event: events.Event,
17+
message: Message,
1218
uow: unit_of_work.AbstractUnitOfWork,
1319
):
1420
results = []
15-
queue = [event]
21+
queue = [message]
1622
while queue:
17-
event = queue.pop(0)
18-
for handler in HANDLERS[type(event)]:
19-
results.append(handler(event, uow=uow))
20-
queue.extend(uow.collect_new_events())
23+
message = queue.pop(0)
24+
if isinstance(message, events.Event):
25+
handle_event(message, queue, uow)
26+
elif isinstance(message, commands.Command):
27+
cmd_result = handle_command(message, queue, uow)
28+
results.append(cmd_result)
29+
else:
30+
raise Exception(f"{message} was not an Event or Command")
2131
return results
2232

2333

0 commit comments

Comments
 (0)