Skip to content

Speedy1991/graphql_workshop

Repository files navigation

Introduction to GraphQL and Graphene

Workshop Outline

  • TypeDefs
  • Query
  • Mutation
  • GraphQL Schema Language

System Requirements


Follow one of the installation instructions (1,2)

This is the minimum workshop setup. Please prepare the project as described below.

1) Pre-Workshop Instructions/Requirements (install)

  • git clone https://github.com/Speedy1991/graphql_workshop.git
  • cd graphql_workshop
  • If you want to use a virtual environment click here for instructions
  • pip install -r requirements.txt
  • python manage.py migrate
  • python manage.py loaddata assets/initial (Installed 91 object(s) from 1 fixture(s))
  • python manage.py runserver

2) Pre-Workshop Instructions/Requirements (dockerized)

  • git clone https://github.com/Speedy1991/graphql_workshop.git
  • cd graphql_workshop
  • docker-compose up --force-recreate --build

Test your setup

  • Open your browser and visit http://127.0.0.1:8000/admin and try to login with admin:12345

Exercise overview

  1. Write your first TypeDefs and resolvers
  2. Extend your TypeDefs with more complex resolvers
  3. Refactor with django-graphene
  4. Write a custom resolver
    • Add Query Arguments
  5. Write a mutation
  6. Refactor
    • Replace mutation arguments with an InputType
    • Use EnumType
  7. Interfaces
  8. Polymorphic & interfaces
  9. Some LiveCoding with AbstractTypes, etc.

Working through it

This is a very exercise-heavy workshop. You'll finde the exercises in the graphql_workshop/exercise[number] directory. Don't forget to change the used schema in the settings.

You find some helpful content on the Docs:

Helpful shortcuts

  • TODO: This is your job
  • DOCS: This will give you a link to the specific doc page
  • DJANGO: This will help you with some django specific code
  • HINT: This will give you some useful tips
  • QUESTION: Try to answer the question yourself - if you don't find the answer, feel free to ask :)

Django Cheatsheet

  • SELECT * FROM <table> -> <ModelName>.objects.all()
  • SELECT * FROM <table> WHERE id=<id> -> <ModelName>.objects.get(id=id) (raises if not exist)

Database overview

Database overview

License

This material is available for private, non-commercial use under the GPL version 3.

If you would like to use this material to conduct your own workshop, please contact me at [email protected]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages