From 22e377df366ca958c18e087323d471d8f45e9097 Mon Sep 17 00:00:00 2001 From: Ruidy Date: Fri, 30 Oct 2020 12:41:19 +0100 Subject: [PATCH] create close Todo Mutation --- app/schema/mutations/__init__.py | 3 ++- app/schema/mutations/close_todo.py | 15 +++++++++++++++ app/schema/mutations/mutations.py | 3 ++- app/usecases/close_todo.py | 11 +++++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 app/schema/mutations/close_todo.py create mode 100644 app/usecases/close_todo.py diff --git a/app/schema/mutations/__init__.py b/app/schema/mutations/__init__.py index ca0a9ae..7cda91d 100644 --- a/app/schema/mutations/__init__.py +++ b/app/schema/mutations/__init__.py @@ -1,3 +1,4 @@ +from .close_todo import CloseTodo from .create_todo import CreateTodo from .delete_todo import DeleteTodo -from .update_todo import UpdateTodo \ No newline at end of file +from .update_todo import UpdateTodo diff --git a/app/schema/mutations/close_todo.py b/app/schema/mutations/close_todo.py new file mode 100644 index 0000000..0489dd9 --- /dev/null +++ b/app/schema/mutations/close_todo.py @@ -0,0 +1,15 @@ +import graphene + +from app.schema.types.todo import TodoType +from app.usecases.close_todo import close_todo + + +class CloseTodo(graphene.Mutation): + class Arguments: + todo_id = graphene.String(required=True) + + todo = graphene.Field(TodoType) + + def mutate(self, info, todo_id: str): + todo = close_todo(todo_id) + return CloseTodo(todo=todo) diff --git a/app/schema/mutations/mutations.py b/app/schema/mutations/mutations.py index c98e46b..3a92415 100644 --- a/app/schema/mutations/mutations.py +++ b/app/schema/mutations/mutations.py @@ -1,9 +1,10 @@ import graphene -from . import CreateTodo, DeleteTodo, UpdateTodo +from . import CreateTodo, DeleteTodo, UpdateTodo, CloseTodo class Mutations(graphene.ObjectType): create_todo = CreateTodo.Field() update_todo = UpdateTodo.Field() delete_todo = DeleteTodo.Field() + close_todo = CloseTodo.Field() diff --git a/app/usecases/close_todo.py b/app/usecases/close_todo.py new file mode 100644 index 0000000..7c99727 --- /dev/null +++ b/app/usecases/close_todo.py @@ -0,0 +1,11 @@ +from app.models.todo import Todo +from app.repositories.todos import get_todo_by_id, todo_exists + + +def close_todo(todo_id: str) -> Todo: + if not todo_exists(todo_id): + return None + + todo = get_todo_by_id(todo_id) + todo.is_done = True + return todo