From cef01bdb89cbc70fdcdf006f6f36000757e7e8a5 Mon Sep 17 00:00:00 2001 From: Ruidy Date: Sat, 7 Nov 2020 22:34:00 +0100 Subject: [PATCH] add delete user mutation --- app/schema/mutations/__init__.py | 1 + app/schema/mutations/delete_user.py | 20 ++++++++++++++++++++ app/schema/mutations/mutations.py | 11 ++++++++++- app/usecases/user/delete_user.py | 11 +++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 app/schema/mutations/delete_user.py create mode 100644 app/usecases/user/delete_user.py diff --git a/app/schema/mutations/__init__.py b/app/schema/mutations/__init__.py index 2ca81d4..7da193a 100644 --- a/app/schema/mutations/__init__.py +++ b/app/schema/mutations/__init__.py @@ -4,3 +4,4 @@ from .delete_todo import DeleteTodo from .update_todo import UpdateTodo from .create_user import CreateUser from .update_user import UpdateUser +from .delete_user import DeleteUser diff --git a/app/schema/mutations/delete_user.py b/app/schema/mutations/delete_user.py new file mode 100644 index 0000000..b645427 --- /dev/null +++ b/app/schema/mutations/delete_user.py @@ -0,0 +1,20 @@ +import graphene + +from app.schema.types.user import UserResponseField +from app.usecases.user.delete_user import delete_user + + +class DeleteUser(graphene.Mutation): + class Arguments: + user_id = graphene.String(required=True) + + result = graphene.Field(UserResponseField) + + def mutate(self, info, user_id: str): + user, is_success = delete_user(user_id) + error_message = "This user does not exist." if not is_success else None + return DeleteUser( + UserResponseField( + user=user, is_success=is_success, error_message=error_message + ) + ) diff --git a/app/schema/mutations/mutations.py b/app/schema/mutations/mutations.py index 47880fe..91dd491 100644 --- a/app/schema/mutations/mutations.py +++ b/app/schema/mutations/mutations.py @@ -1,6 +1,14 @@ import graphene -from . import CreateTodo, DeleteTodo, UpdateTodo, CloseTodo, CreateUser, UpdateUser +from . import ( + CreateTodo, + DeleteTodo, + UpdateTodo, + CloseTodo, + CreateUser, + UpdateUser, + DeleteUser, +) class Mutations(graphene.ObjectType): @@ -12,3 +20,4 @@ class Mutations(graphene.ObjectType): # user create_user = CreateUser.Field() update_user = UpdateUser.Field() + delete_user = DeleteUser.Field() diff --git a/app/usecases/user/delete_user.py b/app/usecases/user/delete_user.py new file mode 100644 index 0000000..df87c79 --- /dev/null +++ b/app/usecases/user/delete_user.py @@ -0,0 +1,11 @@ +from typing import Tuple + +from app.models.user import User +from app.repositories.users import user_exists, remove_user + + +def delete_user(user_id: str) -> Tuple[User, bool]: + if not user_exists(user_id): + return None, False + + return remove_user(user_id), True