1+ import inspect
12from typing import Callable
2- from allocation .domain import commands , events
33from allocation .adapters import email , orm , redis_eventpublisher
44from allocation .service_layer import handlers , messagebus , unit_of_work
55
@@ -14,25 +14,17 @@ def bootstrap(
1414 if start_orm :
1515 orm .start_mappers ()
1616
17+ dependencies = {'uow' : uow , 'send_mail' : send_mail , 'publish' : publish }
1718 injected_event_handlers = {
18- events .Allocated : [
19- lambda e : handlers .publish_allocated_event (e , publish ),
20- lambda e : handlers .add_allocation_to_read_model (e , uow ),
21- ],
22- events .Deallocated : [
23- lambda e : handlers .remove_allocation_from_read_model (e , uow ),
24- lambda e : handlers .reallocate (e , uow ),
25- ],
26- events .OutOfStock : [
27- lambda e : handlers .send_out_of_stock_notification (e , send_mail )
19+ event_type : [
20+ inject_dependencies (handler , dependencies )
21+ for handler in event_handlers
2822 ]
23+ for event_type , event_handlers in handlers .EVENT_HANDLERS .items ()
2924 }
3025 injected_command_handlers = {
31- commands .Allocate : lambda c : handlers .allocate (c , uow ),
32- commands .CreateBatch : \
33- lambda c : handlers .add_batch (c , uow ),
34- commands .ChangeBatchQuantity : \
35- lambda c : handlers .change_batch_quantity (c , uow ),
26+ command_type : inject_dependencies (handler , dependencies )
27+ for command_type , handler in handlers .COMMAND_HANDLERS .items ()
3628 }
3729
3830 return messagebus .MessageBus (
0 commit comments