.. meta:: :description: Codegen for Hasura actions :keywords: hasura, docs, actions, codegen .. _actions_codegen: Actions codegen =============== .. contents:: Table of contents :backlinks: none :depth: 2 :local: 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. .. _actions-codegen-execute: Generating handler code for your action --------------------------------------- .. rst-class:: api_tabs .. tabs:: .. tab:: Console 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. .. thumbnail:: /img/graphql/core/actions/console-codegen-tab.png :alt: Console codegen tab .. tab:: CLI **Configuration** Before being able to codegen for actions, you have to configure your CLI. Run: .. code-block:: bash hasura actions use-codegen 1. Choose which framework you want to codegen for: .. thumbnail:: /img/graphql/core/actions/cli-framework-prompt.png :alt: CLI Framework Prompt 2. Choose if you also wish to clone a starter kit for the chosen framework: .. thumbnail:: /img/graphql/core/actions/cli-starter-kit-prompt.png :alt: CLI Starter Kit Prompt 3. Choose a path where you want to output the auto-generated code files .. thumbnail:: /img/graphql/core/actions/cli-output-dir-prompt.png :alt: 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: .. code-block:: yaml :emphasize-lines: 8-10 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: .. code-block:: bash 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 :ref:`created an action <create_actions>`. We will continue adding more examples to the documentation. .. toctree:: :maxdepth: 1 Python & Flask <python-flask> Building your own codegen ^^^^^^^^^^^^^^^^^^^^^^^^^ If you wish to build a code generator for your framework `read the contrib guide <https://github.com/hasura/codegen-assets/blob/master/builder-kit/README.md>`__. .. admonition:: Additional Resources Introduction to Hasura Actions - `View Recording <https://hasura.io/events/webinar/hasura-actions/?pg=docs&plcmt=body&cta=view-recording&tech=>`__.