d-webservice-example/source/d_webservice_example/facade/todo_facade.d

51 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);
}
}