mirror of
https://github.com/rjNemo/graphql_python_template
synced 2026-06-06 02:26:47 +00:00
add update user mutation
This commit is contained in:
parent
4cb328d9d8
commit
d9018897b5
6 changed files with 43 additions and 6 deletions
|
|
@ -19,13 +19,11 @@ def add_user(username: str) -> User:
|
|||
return user
|
||||
|
||||
|
||||
def edit_user(user_id: str, data) -> User:
|
||||
def edit_user(user_id: str, data: dict) -> User:
|
||||
user = get_user_by_id(user_id)
|
||||
|
||||
if title := data.get("title"):
|
||||
user.title = title
|
||||
if is_done := data.get("is_done"):
|
||||
user.is_done = is_done
|
||||
if username := data.get("username"):
|
||||
user.username = username
|
||||
|
||||
return user
|
||||
|
||||
|
|
|
|||
|
|
@ -3,3 +3,4 @@ from .create_todo import CreateTodo
|
|||
from .delete_todo import DeleteTodo
|
||||
from .update_todo import UpdateTodo
|
||||
from .create_user import CreateUser
|
||||
from .update_user import UpdateUser
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import graphene
|
||||
|
||||
from . import CreateTodo, DeleteTodo, UpdateTodo, CloseTodo, CreateUser
|
||||
from . import CreateTodo, DeleteTodo, UpdateTodo, CloseTodo, CreateUser, UpdateUser
|
||||
|
||||
|
||||
class Mutations(graphene.ObjectType):
|
||||
|
|
@ -11,3 +11,4 @@ class Mutations(graphene.ObjectType):
|
|||
close_todo = CloseTodo.Field()
|
||||
# user
|
||||
create_user = CreateUser.Field()
|
||||
update_user = UpdateUser.Field()
|
||||
|
|
|
|||
21
app/schema/mutations/update_user.py
Normal file
21
app/schema/mutations/update_user.py
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
import graphene
|
||||
|
||||
from app.models.user import User
|
||||
from app.schema.types.user import UserInputType, UserResponseField
|
||||
from app.usecases.user.update_user import update_user
|
||||
|
||||
|
||||
class UpdateUser(graphene.Mutation):
|
||||
class Arguments:
|
||||
user = UserInputType()
|
||||
|
||||
result = graphene.Field(UserResponseField)
|
||||
|
||||
def mutate(self, info, user: User):
|
||||
res, is_success = update_user(user.user_id, vars(user))
|
||||
error_message = "This user does not exist." if not is_success else None
|
||||
return UpdateUser(
|
||||
UserResponseField(
|
||||
user=res, is_success=is_success, error_message=error_message
|
||||
)
|
||||
)
|
||||
|
|
@ -8,6 +8,11 @@ class UserType(graphene.ObjectType):
|
|||
username = graphene.String()
|
||||
|
||||
|
||||
class UserInputType(graphene.InputObjectType):
|
||||
user_id = graphene.String()
|
||||
username = graphene.String()
|
||||
|
||||
|
||||
class UserListResponseField(ResponseField):
|
||||
users = graphene.List(UserType)
|
||||
|
||||
|
|
|
|||
11
app/usecases/user/update_user.py
Normal file
11
app/usecases/user/update_user.py
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
from typing import Tuple
|
||||
|
||||
from app.models.user import User
|
||||
from app.repositories.users import user_exists, edit_user
|
||||
|
||||
|
||||
def update_user(user_id: str, data: dict) -> Tuple[User, bool]:
|
||||
if not user_exists(user_id=user_id):
|
||||
return None, False
|
||||
|
||||
return edit_user(user_id, data), True
|
||||
Loading…
Reference in a new issue