mirror of
https://github.com/graphql-python/graphene.git
synced 2025-07-18 03:52:24 +03:00
Add code examples to all custom scalars
This commit is contained in:
parent
0736e3b5d7
commit
5016cf8c26
|
@ -62,24 +62,148 @@ Graphene defines the following base Scalar Types:
|
|||
When expected as an input type, any string (such as `"4"`) or integer
|
||||
(such as `4`) input value will be accepted as an ID.
|
||||
|
||||
Graphene also provides custom scalars for Dates, Times, and JSON:
|
||||
Graphene also provides custom scalars for common types:
|
||||
|
||||
``graphene.types.datetime.Date``
|
||||
``graphene.Date``
|
||||
|
||||
Represents a Date value as specified by `iso8601 <https://en.wikipedia.org/wiki/ISO_8601>`_.
|
||||
|
||||
``graphene.types.datetime.DateTime``
|
||||
.. code:: python
|
||||
|
||||
import datetime
|
||||
from graphene import Schema, ObjectType, Date
|
||||
|
||||
class Query(ObjectType):
|
||||
one_week_from = Date(required=True, date_input=Date(required=True))
|
||||
|
||||
def resolve_one_week_from(root, info, date_input):
|
||||
assert date_input == datetime.date(2006, 1, 2)
|
||||
return date_input + datetime.timedelta(weeks=1)
|
||||
|
||||
schema = Schema(query=Query)
|
||||
|
||||
results = schema.execute("""
|
||||
query {
|
||||
oneWeekFrom(dateInput: "2006-01-02")
|
||||
}
|
||||
""")
|
||||
|
||||
assert results.data == {"oneWeekFrom": "2006-01-09"}
|
||||
|
||||
|
||||
``graphene.DateTime``
|
||||
|
||||
Represents a DateTime value as specified by `iso8601 <https://en.wikipedia.org/wiki/ISO_8601>`_.
|
||||
|
||||
``graphene.types.datetime.Time``
|
||||
.. code:: python
|
||||
|
||||
import datetime
|
||||
from graphene import Schema, ObjectType, DateTime
|
||||
|
||||
class Query(ObjectType):
|
||||
one_hour_from = DateTime(required=True, datetime_input=DateTime(required=True))
|
||||
|
||||
def resolve_one_hour_from(root, info, datetime_input):
|
||||
assert datetime_input == datetime.datetime(2006, 1, 2, 15, 4, 5)
|
||||
return datetime_input + datetime.timedelta(hours=1)
|
||||
|
||||
schema = Schema(query=Query)
|
||||
|
||||
results = schema.execute("""
|
||||
query {
|
||||
oneHourFrom(datetimeInput: "2006-01-02T15:04:05")
|
||||
}
|
||||
""")
|
||||
|
||||
assert results.data == {"oneHourFrom": "2006-01-02T16:04:05"}
|
||||
|
||||
``graphene.Time``
|
||||
|
||||
Represents a Time value as specified by `iso8601 <https://en.wikipedia.org/wiki/ISO_8601>`_.
|
||||
|
||||
``graphene.types.json.JSONString``
|
||||
.. code:: python
|
||||
|
||||
import datetime
|
||||
from graphene import Schema, ObjectType, Time
|
||||
|
||||
class Query(ObjectType):
|
||||
one_hour_from = Time(required=True, time_input=Time(required=True))
|
||||
|
||||
def resolve_one_hour_from(root, info, time_input):
|
||||
assert time_input == datetime.time(15, 4, 5)
|
||||
tmp_time_input = datetime.datetime.combine(datetime.date(1, 1, 1), time_input)
|
||||
return (tmp_time_input + datetime.timedelta(hours=1)).time()
|
||||
|
||||
schema = Schema(query=Query)
|
||||
|
||||
results = schema.execute("""
|
||||
query {
|
||||
oneHourFrom(timeInput: "15:04:05")
|
||||
}
|
||||
""")
|
||||
|
||||
assert results.data == {"oneHourFrom": "16:04:05"}
|
||||
|
||||
``graphene.JSONString``
|
||||
|
||||
Represents a JSON string.
|
||||
|
||||
.. code:: python
|
||||
|
||||
from graphene import Schema, ObjectType, JSONString, String
|
||||
|
||||
class Query(ObjectType):
|
||||
update_json_key = JSONString(
|
||||
required=True,
|
||||
json_input=JSONString(required=True),
|
||||
key=String(required=True),
|
||||
value=String(required=True)
|
||||
)
|
||||
|
||||
def resolve_update_json_key(root, info, json_input, key, value):
|
||||
assert json_input == {"name": "Jane"}
|
||||
json_input[key] = value
|
||||
return json_input
|
||||
|
||||
schema = Schema(query=Query)
|
||||
|
||||
results = schema.execute("""
|
||||
query {
|
||||
updateJsonKey(jsonInput: "{\\"name\\": \\"Jane\\"}", key: "name", value: "Beth")
|
||||
}
|
||||
""")
|
||||
|
||||
assert results.data == {"updateJsonKey": "{\"name\": \"Beth\"}"}
|
||||
|
||||
|
||||
``graphene.Base64``
|
||||
|
||||
Represents a Base64 encoded string.
|
||||
|
||||
.. code:: python
|
||||
|
||||
from graphene import Schema, ObjectType, Base64
|
||||
|
||||
class Query(ObjectType):
|
||||
increment_encoded_id = Base64(
|
||||
required=True,
|
||||
base64_input=Base64(required=True),
|
||||
)
|
||||
|
||||
def resolve_increment_encoded_id(root, info, base64_input):
|
||||
assert base64_input == "4"
|
||||
return int(base64_input) + 1
|
||||
|
||||
schema = Schema(query=Query)
|
||||
|
||||
results = schema.execute("""
|
||||
query {
|
||||
incrementEncodedId(base64Input: "NA==")
|
||||
}
|
||||
""")
|
||||
|
||||
assert results.data == {"incrementEncodedId": "NQ=="}
|
||||
|
||||
|
||||
Custom scalars
|
||||
--------------
|
||||
|
|
Loading…
Reference in New Issue
Block a user