mirror of
https://github.com/rjNemo/graphql_python_template
synced 2026-06-06 02:26:47 +00:00
document API and format code
This commit is contained in:
parent
f3f0466e1e
commit
cb1a547fa7
22 changed files with 85 additions and 43 deletions
|
|
@ -2,10 +2,7 @@ from uuid import uuid4
|
|||
|
||||
|
||||
class Todo:
|
||||
def __init__(self,
|
||||
todo_id: str = None,
|
||||
title: str = '',
|
||||
is_done: bool = False):
|
||||
def __init__(self, title: str, todo_id: str = None, is_done: bool = False):
|
||||
self.todo_id = todo_id or str(uuid4())
|
||||
self.title = title
|
||||
self.is_done = is_done
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ from typing import List
|
|||
from app.models.todo import Todo
|
||||
|
||||
todo_list: List[Todo] = [
|
||||
Todo(title='First'),
|
||||
Todo(todo_id="ec73296f-e108-46a3-bfb3-b4237cb072ba", title='Second')
|
||||
Todo(title="First"),
|
||||
Todo(todo_id="ec73296f-e108-46a3-bfb3-b4237cb072ba", title="Second"),
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
import graphene
|
||||
|
||||
from app.schema.mutations.todo import CreateTodo, DeleteTodo, CloseTodo, UpdateTodo
|
||||
from app.schema.mutations.todo import CloseTodo, CreateTodo, DeleteTodo, UpdateTodo
|
||||
from app.schema.mutations.user import (
|
||||
CreateUser,
|
||||
UpdateUser,
|
||||
DeleteUser,
|
||||
AssignTodoToUser,
|
||||
CreateUser,
|
||||
DeassignTodoToUser,
|
||||
DeleteUser,
|
||||
UpdateUser,
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ from app.usecases.todo import close_todo
|
|||
|
||||
|
||||
class CloseTodo(graphene.Mutation):
|
||||
"""Close an existing task"""
|
||||
|
||||
class Arguments:
|
||||
todo_id = graphene.String(required=True)
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,10 @@ from app.usecases.todo import create_todo
|
|||
|
||||
|
||||
class CreateTodo(graphene.Mutation):
|
||||
"""Create a new task."""
|
||||
|
||||
class Arguments:
|
||||
title = graphene.String(default_value="")
|
||||
title = graphene.String(required=True)
|
||||
|
||||
result = graphene.Field(TodoResponseField)
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ from app.usecases.todo import delete_todo
|
|||
|
||||
|
||||
class DeleteTodo(graphene.Mutation):
|
||||
"""Delete an existing task"""
|
||||
|
||||
class Arguments:
|
||||
todo_id = graphene.String(required=True)
|
||||
|
||||
|
|
|
|||
|
|
@ -6,11 +6,13 @@ from app.usecases.todo import update_todo
|
|||
|
||||
|
||||
class UpdateTodo(graphene.Mutation):
|
||||
"""Update an existing task"""
|
||||
|
||||
class Arguments:
|
||||
todo = TodoInputType()
|
||||
|
||||
result = graphene.Field(TodoResponseField)
|
||||
|
||||
def mutate(self, info, todo: Todo):
|
||||
res = update_todo(todo.todo_id, todo.__dict__)
|
||||
res = update_todo(todo.todo_id, vars(todo))
|
||||
return UpdateTodo(TodoResponseField(todo=res))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from .assign_todo_to_user import AssignTodoToUser, DeassignTodoToUser
|
||||
from .create_user import CreateUser
|
||||
from .delete_user import DeleteUser
|
||||
from .update_user import UpdateUser
|
||||
from .assign_todo_to_user import AssignTodoToUser, DeassignTodoToUser
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ from app.usecases.user import assign_todo_to_user, deassign_todo_to_user
|
|||
|
||||
|
||||
class AssignTodoToUser(graphene.Mutation):
|
||||
"""Assign an existing task to an existing user"""
|
||||
|
||||
class Arguments:
|
||||
todo_id = graphene.String()
|
||||
user_id = graphene.String()
|
||||
|
|
@ -21,6 +23,8 @@ class AssignTodoToUser(graphene.Mutation):
|
|||
|
||||
|
||||
class DeassignTodoToUser(graphene.Mutation):
|
||||
"""Deassign an existing task from an existing user"""
|
||||
|
||||
class Arguments:
|
||||
todo_id = graphene.String()
|
||||
user_id = graphene.String()
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ from app.usecases.user import create_user
|
|||
|
||||
|
||||
class CreateUser(graphene.Mutation):
|
||||
"""Register an user"""
|
||||
|
||||
class Arguments:
|
||||
username = graphene.String()
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ from app.usecases.user import delete_user
|
|||
|
||||
|
||||
class DeleteUser(graphene.Mutation):
|
||||
"""Unregister an existing user"""
|
||||
|
||||
class Arguments:
|
||||
user_id = graphene.String(required=True)
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ from app.usecases.user import update_user
|
|||
|
||||
|
||||
class UpdateUser(graphene.Mutation):
|
||||
"""Update user information"""
|
||||
|
||||
class Arguments:
|
||||
user = UserInputType()
|
||||
|
||||
|
|
|
|||
|
|
@ -1,28 +1,37 @@
|
|||
import graphene
|
||||
|
||||
from .todo import resolve_get_todo, resolve_list_todos
|
||||
from .user import resolve_list_users, resolve_get_user
|
||||
from ..types.todo import TodoListResponseField, TodoResponseField
|
||||
from ..types.user import UserListResponseField, UserResponseField
|
||||
from app.schema.queries.todo import resolve_get_todo, resolve_list_todos
|
||||
from app.schema.queries.user import resolve_get_user, resolve_list_users
|
||||
from app.schema.types.todo import TodoListResponseField, TodoResponseField
|
||||
from app.schema.types.user import UserListResponseField, UserResponseField
|
||||
|
||||
|
||||
class Query(graphene.ObjectType):
|
||||
"""Schema Queries"""
|
||||
|
||||
"""Task Queries"""
|
||||
list_todos = graphene.Field(TodoListResponseField, resolver=resolve_list_todos)
|
||||
# Task Queries
|
||||
list_todos = graphene.Field(
|
||||
TodoListResponseField,
|
||||
resolver=resolve_list_todos,
|
||||
description="List existing tasks",
|
||||
)
|
||||
|
||||
get_todo = graphene.Field(
|
||||
TodoResponseField,
|
||||
todo_id=graphene.String(required=True),
|
||||
resolver=resolve_get_todo,
|
||||
description="Retrieve an existing tasks",
|
||||
)
|
||||
|
||||
"""User Queries"""
|
||||
list_users = graphene.Field(UserListResponseField, resolver=resolve_list_users)
|
||||
# User Queries
|
||||
list_users = graphene.Field(
|
||||
UserListResponseField,
|
||||
resolver=resolve_list_users,
|
||||
description="List registered users",
|
||||
)
|
||||
|
||||
get_user = graphene.Field(
|
||||
UserResponseField,
|
||||
user_id=graphene.String(required=True),
|
||||
resolver=resolve_get_user,
|
||||
description="Retrieve a registered user",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
Defines the query and how to interact with
|
||||
"""
|
||||
|
||||
from app.schema.types.todo import TodoResponseField, TodoListResponseField
|
||||
from app.schema.types.todo import TodoListResponseField, TodoResponseField
|
||||
from app.usecases.todo import read_all_todos, read_todo_by_id
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
import graphene
|
||||
|
||||
|
||||
class ResponseField(graphene.ObjectType):
|
||||
class ResponseField(graphene.Interface):
|
||||
"""Response interface"""
|
||||
|
||||
is_success = graphene.Boolean(default_value=True)
|
||||
error_message = graphene.String()
|
||||
|
|
|
|||
|
|
@ -4,9 +4,7 @@ from app.schema.types.response import ResponseField
|
|||
|
||||
|
||||
class TodoType(graphene.ObjectType):
|
||||
"""
|
||||
Query Object Type
|
||||
"""
|
||||
"""Todo Object Type"""
|
||||
|
||||
todo_id = graphene.String()
|
||||
title = graphene.String(default_value="")
|
||||
|
|
@ -14,22 +12,26 @@ class TodoType(graphene.ObjectType):
|
|||
|
||||
|
||||
class TodoInputType(graphene.InputObjectType):
|
||||
"""
|
||||
Mutation Input Object Type
|
||||
"""
|
||||
"""Todo Input Object"""
|
||||
|
||||
todo_id = graphene.String()
|
||||
title = graphene.String(default_value="")
|
||||
is_done = graphene.Boolean(default_value=False)
|
||||
|
||||
|
||||
class TodoResponseField(ResponseField):
|
||||
class TodoResponseField(graphene.ObjectType):
|
||||
"""Todo response object"""
|
||||
|
||||
class Meta:
|
||||
interfaces = (ResponseField,)
|
||||
|
||||
todo = graphene.Field(TodoType)
|
||||
|
||||
|
||||
class TodoListResponseField(ResponseField):
|
||||
class TodoListResponseField(graphene.ObjectType):
|
||||
"""Todos list response object"""
|
||||
|
||||
class Meta:
|
||||
interfaces = (ResponseField,)
|
||||
|
||||
todos = graphene.Field(graphene.List(TodoType))
|
||||
|
||||
|
||||
class CreateTodoResponseField(ResponseField):
|
||||
todo = graphene.Field(TodoType)
|
||||
|
|
|
|||
|
|
@ -5,19 +5,33 @@ from app.schema.types.todo import TodoType
|
|||
|
||||
|
||||
class UserType(graphene.ObjectType):
|
||||
"""User schema type"""
|
||||
|
||||
user_id = graphene.String()
|
||||
username = graphene.String()
|
||||
tasks = graphene.List(TodoType)
|
||||
|
||||
|
||||
class UserInputType(graphene.InputObjectType):
|
||||
"""User input object"""
|
||||
|
||||
user_id = graphene.String()
|
||||
username = graphene.String()
|
||||
|
||||
|
||||
class UserListResponseField(ResponseField):
|
||||
class UserListResponseField(graphene.ObjectType):
|
||||
"""User list response object"""
|
||||
|
||||
class Meta:
|
||||
interfaces = (ResponseField,)
|
||||
|
||||
users = graphene.List(UserType)
|
||||
|
||||
|
||||
class UserResponseField(ResponseField):
|
||||
class UserResponseField(graphene.ObjectType):
|
||||
"""User response object"""
|
||||
|
||||
class Meta:
|
||||
interfaces = (ResponseField,)
|
||||
|
||||
user = graphene.Field(UserType)
|
||||
|
|
|
|||
|
|
@ -2,5 +2,5 @@ from app.models.todo import Todo
|
|||
from app.repositories.todos import add_todo
|
||||
|
||||
|
||||
def create_todo(title: str = '') -> Todo:
|
||||
def create_todo(title: str) -> Todo:
|
||||
return add_todo(title)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
from app.models.todo import Todo
|
||||
from app.repositories.todos import todo_exists, remove_todo
|
||||
from app.repositories.todos import remove_todo, todo_exists
|
||||
|
||||
|
||||
def delete_todo(todo_id: str) -> Todo:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from app.models import User, Todo
|
||||
from app.models import Todo, User
|
||||
from app.repositories.users import add_todo_to_user, remove_todo_from_user
|
||||
from app.usecases.todo import read_todo_by_id
|
||||
from app.usecases.user.read_user_by_id import read_user_by_id
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from typing import Tuple
|
||||
|
||||
from app.models.user import User
|
||||
from app.repositories.users import user_exists, remove_user
|
||||
from app.repositories.users import remove_user, user_exists
|
||||
|
||||
|
||||
def delete_user(user_id: str) -> Tuple[User, bool]:
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from typing import Tuple
|
||||
|
||||
from app.models.user import User
|
||||
from app.repositories.users import user_exists, edit_user
|
||||
from app.repositories.users import edit_user, user_exists
|
||||
|
||||
|
||||
def update_user(user_id: str, data: dict) -> Tuple[User, bool]:
|
||||
|
|
|
|||
Loading…
Reference in a new issue