module d_webservice_example.facade.todo_facade; class TodoFacade { import d_webservice_example.business.todo_notification_service : TodoNotificationService; import d_webservice_example.business.todo_service : TodoService; import d_webservice_example.data.todo_update_do : TodoUpdateDO; import d_webservice_example.model.todo : Todo; import std.uuid : UUID; private: TodoNotificationService todoNotificationService; TodoService todoService; public: this(TodoNotificationService todoNotificationService, TodoService todoService) nothrow pure @nogc @safe { this.todoNotificationService = todoNotificationService; this.todoService = todoService; } Todo createTodo(Todo newTodo) @safe { immutable todo = todoService.createTodo(newTodo); todoNotificationService.onTodoCreated(todo); return todo; } Todo[] getAllTodos() @safe { return todoService.getAllTodos; } Todo getTodoByUuid(const UUID uuid) @safe { return todoService.getTodoByUuid(uuid); } Todo updateTodo(UUID uuid, const TodoUpdateDO todoUpdate) @safe { immutable todo = todoService.updateTodo(uuid, todoUpdate); todoNotificationService.onTodoUpdated(todo); return todo; } void deleteTodo(UUID uuid) @safe { immutable todo = todoService.deleteTodo(uuid); todoNotificationService.onTodoDeleted(todo); } }