graphene-generator 0.1.2

Creator: codyrutscher

Last updated:

Add to Cart

Description:

graphenegenerator 0.1.2

Graphene-Generator
A
Graphene-Django
(GraphQL) queries and mutations generator

You can:

Generate queries and mutations based on the specified model(s)
Require authentication for some and/or all generated
queries/mutations



Tech
Graphene-Generator uses a number of open source projects to work
properly:

Django - a Python-based web
framework,
Graphene-Django
- A Django integration for Graphene.

If you are not familiar with the above technologies, please refer to
their respective documentation.
And of course Graphene-generator itself is open source with a public
repository on
GitHub.


Quickstart
For installing graphene, just run this command in your shell:
pip install "graphene-generator"

Settings
We need to specify the model(s) name to be used and their respective
path(s)
GRAPHENE_GENERATOR_MODELS = [
{
'name': 'ingredient',
'path': 'path.to.the.model',
}
]
Note that GRAPHENE_GENERATOR_MODELS is an array to support many
models at once.


Authentication
If we want to require the authentication, we need to specify that in our
settings under the require_auth dictionary for each model
GRAPHENE_GENERATOR_MODELS = [
{
# ...
'require_auth': {
'queries': ["all", "single"],
'mutations': ["create", 'update', 'delete']
}
}
]
To make the difference between Mutations and Queries the
require_auth contains queries and mutations as different
keys.
Below are the different values and their meaning:

Queries


Key word
Meaning



all
The get all query (usually the model['name'] + s)

single
The get one query (usually the model['name'])





Mutations


Key word
Meaning



create
The create mutation

update
The update mutation

delete
The delete mutation






Schema
We need to import the QueriesHolder and/or MutationsHolder
classes into our schema used by graphene and you should be able to see
the generated CRUD operations into you schema.




Examples
Here is a simple Django model:
from django.db import models

class Ingredient(models.Model):
name = models.CharField(max_length=100)
notes = models.TextField()
Based on the above model ou settings would look like:
GRAPHENE_GENERATOR_MODELS = [
{
'name': 'ingredient',
'path': 'ingredients.models.Ingredient',
'require_auth': {
'queries': ["all", "single"],
'mutations': ["create", 'update', 'delete']
}
}
]
Here is a graphene schema sample which use the generated requests:
import graphene

from graphene_generator.holder import QueriesHolder, MutationsHolder


class Query(QueriesHolder, graphene.ObjectType):
pass


class Mutation(MutationsHolder, graphene.ObjectType):
pass


schema = graphene.Schema(query=Query, mutation=MutationsHolder)
Then you can query the schema:
query = '''
query {
ingredients {
name,
notes
}
}
'''
result = schema.execute(query)

Todos

Write Tests
Handle model’s relations properly
Use corresponding graphene scalar type for each field(currently using
string for all fields)
Handle pagination




License
MIT

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.