11import inspect
22from typing import Callable
3- from allocation .domain import commands , events
43from allocation .adapters import email , orm , redis_eventpublisher
54from allocation .service_layer import handlers , messagebus , unit_of_work
65
@@ -15,24 +14,17 @@ def bootstrap(
1514 if start_orm :
1615 orm .start_mappers ()
1716
17+ dependencies = {"uow" : uow , "send_mail" : send_mail , "publish" : publish }
1818 injected_event_handlers = {
19- events .Allocated : [
20- lambda e : handlers .publish_allocated_event (e , publish ),
21- lambda e : handlers .add_allocation_to_read_model (e , uow ),
22- ],
23- events .Deallocated : [
24- lambda e : handlers .remove_allocation_from_read_model (e , uow ),
25- lambda e : handlers .reallocate (e , uow ),
26- ],
27- events .OutOfStock : [
28- lambda e : handlers .send_out_of_stock_notification (e , send_mail )
29- ],
19+ event_type : [
20+ inject_dependencies (handler , dependencies )
21+ for handler in event_handlers
22+ ]
23+ for event_type , event_handlers in handlers .EVENT_HANDLERS .items ()
3024 }
3125 injected_command_handlers = {
32- commands .Allocate : lambda c : handlers .allocate (c , uow ),
33- commands .CreateBatch : 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