document API and format code

This commit is contained in:
Ruidy 2020-11-08 12:46:41 +01:00
parent f3f0466e1e
commit cb1a547fa7
22 changed files with 85 additions and 43 deletions

View file

@ -2,10 +2,7 @@ from uuid import uuid4
class Todo: class Todo:
def __init__(self, def __init__(self, title: str, todo_id: str = None, is_done: bool = False):
todo_id: str = None,
title: str = '',
is_done: bool = False):
self.todo_id = todo_id or str(uuid4()) self.todo_id = todo_id or str(uuid4())
self.title = title self.title = title
self.is_done = is_done self.is_done = is_done

View file

@ -3,8 +3,8 @@ from typing import List
from app.models.todo import Todo from app.models.todo import Todo
todo_list: List[Todo] = [ todo_list: List[Todo] = [
Todo(title='First'), Todo(title="First"),
Todo(todo_id="ec73296f-e108-46a3-bfb3-b4237cb072ba", title='Second') Todo(todo_id="ec73296f-e108-46a3-bfb3-b4237cb072ba", title="Second"),
] ]

View file

@ -1,12 +1,12 @@
import graphene 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 ( from app.schema.mutations.user import (
CreateUser,
UpdateUser,
DeleteUser,
AssignTodoToUser, AssignTodoToUser,
CreateUser,
DeassignTodoToUser, DeassignTodoToUser,
DeleteUser,
UpdateUser,
) )

View file

@ -5,6 +5,8 @@ from app.usecases.todo import close_todo
class CloseTodo(graphene.Mutation): class CloseTodo(graphene.Mutation):
"""Close an existing task"""
class Arguments: class Arguments:
todo_id = graphene.String(required=True) todo_id = graphene.String(required=True)

View file

@ -5,8 +5,10 @@ from app.usecases.todo import create_todo
class CreateTodo(graphene.Mutation): class CreateTodo(graphene.Mutation):
"""Create a new task."""
class Arguments: class Arguments:
title = graphene.String(default_value="") title = graphene.String(required=True)
result = graphene.Field(TodoResponseField) result = graphene.Field(TodoResponseField)

View file

@ -5,6 +5,8 @@ from app.usecases.todo import delete_todo
class DeleteTodo(graphene.Mutation): class DeleteTodo(graphene.Mutation):
"""Delete an existing task"""
class Arguments: class Arguments:
todo_id = graphene.String(required=True) todo_id = graphene.String(required=True)

View file

@ -6,11 +6,13 @@ from app.usecases.todo import update_todo
class UpdateTodo(graphene.Mutation): class UpdateTodo(graphene.Mutation):
"""Update an existing task"""
class Arguments: class Arguments:
todo = TodoInputType() todo = TodoInputType()
result = graphene.Field(TodoResponseField) result = graphene.Field(TodoResponseField)
def mutate(self, info, todo: Todo): 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)) return UpdateTodo(TodoResponseField(todo=res))

View file

@ -1,4 +1,4 @@
from .assign_todo_to_user import AssignTodoToUser, DeassignTodoToUser
from .create_user import CreateUser from .create_user import CreateUser
from .delete_user import DeleteUser from .delete_user import DeleteUser
from .update_user import UpdateUser from .update_user import UpdateUser
from .assign_todo_to_user import AssignTodoToUser, DeassignTodoToUser

View file

@ -5,6 +5,8 @@ from app.usecases.user import assign_todo_to_user, deassign_todo_to_user
class AssignTodoToUser(graphene.Mutation): class AssignTodoToUser(graphene.Mutation):
"""Assign an existing task to an existing user"""
class Arguments: class Arguments:
todo_id = graphene.String() todo_id = graphene.String()
user_id = graphene.String() user_id = graphene.String()
@ -21,6 +23,8 @@ class AssignTodoToUser(graphene.Mutation):
class DeassignTodoToUser(graphene.Mutation): class DeassignTodoToUser(graphene.Mutation):
"""Deassign an existing task from an existing user"""
class Arguments: class Arguments:
todo_id = graphene.String() todo_id = graphene.String()
user_id = graphene.String() user_id = graphene.String()

View file

@ -5,6 +5,8 @@ from app.usecases.user import create_user
class CreateUser(graphene.Mutation): class CreateUser(graphene.Mutation):
"""Register an user"""
class Arguments: class Arguments:
username = graphene.String() username = graphene.String()

View file

@ -5,6 +5,8 @@ from app.usecases.user import delete_user
class DeleteUser(graphene.Mutation): class DeleteUser(graphene.Mutation):
"""Unregister an existing user"""
class Arguments: class Arguments:
user_id = graphene.String(required=True) user_id = graphene.String(required=True)

View file

@ -6,6 +6,8 @@ from app.usecases.user import update_user
class UpdateUser(graphene.Mutation): class UpdateUser(graphene.Mutation):
"""Update user information"""
class Arguments: class Arguments:
user = UserInputType() user = UserInputType()

View file

@ -1,28 +1,37 @@
import graphene import graphene
from .todo import resolve_get_todo, resolve_list_todos from app.schema.queries.todo import resolve_get_todo, resolve_list_todos
from .user import resolve_list_users, resolve_get_user from app.schema.queries.user import resolve_get_user, resolve_list_users
from ..types.todo import TodoListResponseField, TodoResponseField from app.schema.types.todo import TodoListResponseField, TodoResponseField
from ..types.user import UserListResponseField, UserResponseField from app.schema.types.user import UserListResponseField, UserResponseField
class Query(graphene.ObjectType): class Query(graphene.ObjectType):
"""Schema Queries"""
"""Task Queries""" # Task Queries
list_todos = graphene.Field(TodoListResponseField, resolver=resolve_list_todos) list_todos = graphene.Field(
TodoListResponseField,
resolver=resolve_list_todos,
description="List existing tasks",
)
get_todo = graphene.Field( get_todo = graphene.Field(
TodoResponseField, TodoResponseField,
todo_id=graphene.String(required=True), todo_id=graphene.String(required=True),
resolver=resolve_get_todo, resolver=resolve_get_todo,
description="Retrieve an existing tasks",
) )
"""User Queries""" # User Queries
list_users = graphene.Field(UserListResponseField, resolver=resolve_list_users) list_users = graphene.Field(
UserListResponseField,
resolver=resolve_list_users,
description="List registered users",
)
get_user = graphene.Field( get_user = graphene.Field(
UserResponseField, UserResponseField,
user_id=graphene.String(required=True), user_id=graphene.String(required=True),
resolver=resolve_get_user, resolver=resolve_get_user,
description="Retrieve a registered user",
) )

View file

@ -2,7 +2,7 @@
Defines the query and how to interact with 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 from app.usecases.todo import read_all_todos, read_todo_by_id

View file

@ -1,6 +1,8 @@
import graphene import graphene
class ResponseField(graphene.ObjectType): class ResponseField(graphene.Interface):
"""Response interface"""
is_success = graphene.Boolean(default_value=True) is_success = graphene.Boolean(default_value=True)
error_message = graphene.String() error_message = graphene.String()

View file

@ -4,9 +4,7 @@ from app.schema.types.response import ResponseField
class TodoType(graphene.ObjectType): class TodoType(graphene.ObjectType):
""" """Todo Object Type"""
Query Object Type
"""
todo_id = graphene.String() todo_id = graphene.String()
title = graphene.String(default_value="") title = graphene.String(default_value="")
@ -14,22 +12,26 @@ class TodoType(graphene.ObjectType):
class TodoInputType(graphene.InputObjectType): class TodoInputType(graphene.InputObjectType):
""" """Todo Input Object"""
Mutation Input Object Type
"""
todo_id = graphene.String() todo_id = graphene.String()
title = graphene.String(default_value="") title = graphene.String(default_value="")
is_done = graphene.Boolean(default_value=False) 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) 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)) todos = graphene.Field(graphene.List(TodoType))
class CreateTodoResponseField(ResponseField):
todo = graphene.Field(TodoType)

View file

@ -5,19 +5,33 @@ from app.schema.types.todo import TodoType
class UserType(graphene.ObjectType): class UserType(graphene.ObjectType):
"""User schema type"""
user_id = graphene.String() user_id = graphene.String()
username = graphene.String() username = graphene.String()
tasks = graphene.List(TodoType) tasks = graphene.List(TodoType)
class UserInputType(graphene.InputObjectType): class UserInputType(graphene.InputObjectType):
"""User input object"""
user_id = graphene.String() user_id = graphene.String()
username = graphene.String() username = graphene.String()
class UserListResponseField(ResponseField): class UserListResponseField(graphene.ObjectType):
"""User list response object"""
class Meta:
interfaces = (ResponseField,)
users = graphene.List(UserType) users = graphene.List(UserType)
class UserResponseField(ResponseField): class UserResponseField(graphene.ObjectType):
"""User response object"""
class Meta:
interfaces = (ResponseField,)
user = graphene.Field(UserType) user = graphene.Field(UserType)

View file

@ -2,5 +2,5 @@ from app.models.todo import Todo
from app.repositories.todos import add_todo from app.repositories.todos import add_todo
def create_todo(title: str = '') -> Todo: def create_todo(title: str) -> Todo:
return add_todo(title) return add_todo(title)

View file

@ -1,5 +1,5 @@
from app.models.todo import Todo 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: def delete_todo(todo_id: str) -> Todo:

View file

@ -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.repositories.users import add_todo_to_user, remove_todo_from_user
from app.usecases.todo import read_todo_by_id from app.usecases.todo import read_todo_by_id
from app.usecases.user.read_user_by_id import read_user_by_id from app.usecases.user.read_user_by_id import read_user_by_id

View file

@ -1,7 +1,7 @@
from typing import Tuple from typing import Tuple
from app.models.user import User 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]: def delete_user(user_id: str) -> Tuple[User, bool]:

View file

@ -1,7 +1,7 @@
from typing import Tuple from typing import Tuple
from app.models.user import User 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]: def update_user(user_id: str, data: dict) -> Tuple[User, bool]: