module d_webservice_example.component_registration;

import aermicioi.aedi;

void registerComponents(ConfigurableContainer container) @safe
{
    import d_webservice_example.business.todo_notification_service : TodoNotificationService;
    import d_webservice_example.business.todo_service : TodoRepository, TodoService;
    import d_webservice_example.controller.todo_controller : TodoController;
    import d_webservice_example.controller.todo_notification_controller : TodoNotificationController;
    import d_webservice_example.dataaccess.in_memory_todo_repository : InMemoryTodoRepository;
    import d_webservice_example.facade.todo_facade : TodoFacade;

    with (container.configure)
    {
        register!TodoService.autowire;
        register!TodoNotificationService.autowire;
        register!TodoController.autowire;
        register!TodoNotificationController.autowire;
        register!(TodoRepository, InMemoryTodoRepository).autowire;
        register!TodoFacade.autowire;
    }
}