From 5b695e485e031864bcc1de48fc4e254f06629f4d Mon Sep 17 00:00:00 2001 From: Ruidy Date: Sun, 18 Apr 2021 20:29:23 +0200 Subject: [PATCH] fix: typing --- product/schema/query.py | 3 ++- review/models/review.py | 2 +- review/schema/query.graphql | 2 +- review/schema/query.py | 3 ++- user/models/user.py | 18 +++++++++++------- user/schema/mutation.graphql | 2 +- user/schema/mutation.py | 7 ++++--- user/schema/query.graphql | 2 +- user/schema/types/user.graphql | 2 +- 9 files changed, 24 insertions(+), 17 deletions(-) diff --git a/product/schema/query.py b/product/schema/query.py index c9d30be..4393f36 100644 --- a/product/schema/query.py +++ b/product/schema/query.py @@ -17,4 +17,5 @@ def resolve_top_products(*_, first: int): weight=randint(0, first), name=choice(ascii_letters), ) - ] * first + for _ in range(first) + ] diff --git a/review/models/review.py b/review/models/review.py index dd9c21b..9cdac02 100644 --- a/review/models/review.py +++ b/review/models/review.py @@ -6,7 +6,7 @@ from user.models.user import User @dataclass class Review: - id: str + id: int body: str author: User product: Product diff --git a/review/schema/query.graphql b/review/schema/query.graphql index 22cd7d2..2556b78 100644 --- a/review/schema/query.graphql +++ b/review/schema/query.graphql @@ -1,3 +1,3 @@ type Query { - reviews(first:Int =5): [Review] + reviews(first: Int = 5): [Review] } \ No newline at end of file diff --git a/review/schema/query.py b/review/schema/query.py index 22630ef..0c5a61c 100644 --- a/review/schema/query.py +++ b/review/schema/query.py @@ -19,4 +19,5 @@ def resolve_reviews(*_, first: int): author=User(), product=Product(upc="id", name="product", price=10, weight=12), ) - ] * first + for _ in range(first) + ] diff --git a/user/models/user.py b/user/models/user.py index bb3fca1..76c1b7f 100644 --- a/user/models/user.py +++ b/user/models/user.py @@ -1,10 +1,11 @@ +from typing import Optional from uuid import uuid4 -from pydantic import BaseModel, validator +from pydantic import BaseModel, Field, validator class User(BaseModel): - id: str = str(uuid4()) + id: str = Field(default_factory=uuid4) name: str = "John" @property @@ -18,20 +19,23 @@ FORBIDDEN_NAMES = ["joe dalton"] class UserInput(BaseModel): name: str + class Config: + anystr_strip_whitespace = True + @validator("name") def name_must_contain_space(cls, name: str) -> str: - if " " not in name.strip(): + if " " not in name: raise ValueError("must contain a space") return name.title() @validator("name") - def name_must_not_be(cls, name: str): - if name.strip() in FORBIDDEN_NAMES: + def name_must_not_be(cls, name: str) -> str: + if name in FORBIDDEN_NAMES: raise ValueError("This name is forbidden") return name class UserResponse(BaseModel): success: bool = True - errorMessage: str = None - user: User = None + errorMessage: Optional[str] = None + user: Optional[User] = None diff --git a/user/schema/mutation.graphql b/user/schema/mutation.graphql index 0f22f6e..d8a3235 100644 --- a/user/schema/mutation.graphql +++ b/user/schema/mutation.graphql @@ -1,4 +1,4 @@ type Mutation { "Create a user" - createUser(input: UserInput!): UserResponse + createUser(userData: UserInput!): UserResponse } \ No newline at end of file diff --git a/user/schema/mutation.py b/user/schema/mutation.py index cabb9ff..6a17a6f 100644 --- a/user/schema/mutation.py +++ b/user/schema/mutation.py @@ -1,4 +1,4 @@ -from ariadne import MutationType +from ariadne import MutationType, convert_kwargs_to_snake_case from user.models.user import User, UserResponse, UserInput @@ -15,9 +15,10 @@ def create_user(user_input: UserInput) -> User: @mutation.field("createUser") -def resolve_create_user(*_, input: dict) -> UserResponse: +@convert_kwargs_to_snake_case +def resolve_create_user(*_, user_data: dict) -> UserResponse: try: - user_input = UserInput(name=input.get("name")) + user_input = UserInput(name=user_data["name"]) user = create_user(user_input) return UserResponse(user=user) except ValueError as error: diff --git a/user/schema/query.graphql b/user/schema/query.graphql index b39b137..a25b4b2 100644 --- a/user/schema/query.graphql +++ b/user/schema/query.graphql @@ -1,4 +1,4 @@ type Query { "Returns a user by its name" - user(name: String): User + user(name: String!): User } \ No newline at end of file diff --git a/user/schema/types/user.graphql b/user/schema/types/user.graphql index 030275b..c17d181 100644 --- a/user/schema/types/user.graphql +++ b/user/schema/types/user.graphql @@ -1,6 +1,6 @@ type User @key(fields:"email") { "A user" - id:ID! + id: ID! name: String! email: String! }