1
1
import inspect
2
2
from typing import Callable
3
- from allocation .domain import commands , events
4
3
from allocation .adapters import email , orm , redis_eventpublisher
5
4
from allocation .service_layer import handlers , messagebus , unit_of_work
6
5
@@ -15,24 +14,17 @@ def bootstrap(
15
14
if start_orm :
16
15
orm .start_mappers ()
17
16
17
+ dependencies = {"uow" : uow , "send_mail" : send_mail , "publish" : publish }
18
18
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 ()
30
24
}
31
25
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 ()
36
28
}
37
29
38
30
return messagebus .MessageBus (
0 commit comments