52 lines
1.4 KiB
D
52 lines
1.4 KiB
D
|
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);
|
||
|
}
|
||
|
}
|