Actions codegen

Introduction

Actions need HTTP handlers to run the business logic. It might be inconvenient to write the complete handler code for every action. Luckily, GraphQL’s type system allows us to auto-generate the boilerplate code for actions.

Note

Hasura currently has codegen set up for a few frameworks. The list of supported frameworks should grow with contributions from the community.

Generating handler code for your action

Head to the Actions -> [action-name] -> Codegen tab in the console

You can select the framework of your choice to get the corresponding handler boilerplate code.

Console codegen tab

Configuration

Before being able to codegen for actions, you have to configure your CLI.

Run:

hasura actions use-codegen
  1. Choose which framework you want to codegen for:

    CLI Framework Prompt
  2. Choose if you also wish to clone a starter kit for the chosen framework:

    CLI Starter Kit Prompt
  3. Choose a path where you want to output the auto-generated code files

    CLI Starter Kit Prompt

This command will update your config.yaml with the codegen config as per your preferences. You can also set these values manually in config.yaml.

For example:

 version: "2"
 endpoint: http://localhost:8080
 metadata_directory: metadata
 migrations_directory: migrations
 actions:
   handler_webhook_baseurl: http://localhost:3000
   kind: synchronous
   codegen:
     framework: nodejs-express
     output_dir: ./nodejs-express/src/handlers/

Codegen

To finally get auto-generated code for an action, run:

hasura actions codegen <action-name>

The codegen files will be generated at the output_dir path from config.yaml.

Codegen for your framework

As of now, Hasura provides codegen for a few frameworks (nodejs-express, typescript-zeit, python-flask and many more). You can see the full list in the Codegen tab on the console after you’ve created an action.

We will continue adding more examples to the documentation.

Building your own codegen

If you wish to build a code generator for your framework read the contrib guide.