0.1.0 • Published 3 years ago

@appsync-butler/core v0.1.0

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

AppSync Butler

This package does the heavy-lifting to parse and load on-disk resolvers and functions.

Quick start

Begin your journey in your existing CDK/SST project ✨

1. Install the required dependencies

# Do not install @aws-cdk/aws-appsync-alpha when using SST.
npm install @aws-cdk/aws-appsync-alpha @appsync-butler/core

2. Setup the directory structure

mkdir -p vtl/{resolvers,functions} \
    vtl/resolvers/{Query,Mutation} \
    graphql
echo '# TODO: Write GraphQL schema' >> graphql/index.graphql

3. Create a simple date resolver

cat <<EOF >> graphql/index.graphql
schema {
  query: Query
}

type Query {
  getDateTime: String!
}
EOF

mkdir vtl/resolvers/Query/getDateTime

cat <<EOF > vtl/resolvers/Query/getDateTime/request.vtl
##@butler.dataSource('none')
{
    "version": "2018-05-29"
}
EOF

echo '$util.toJson($util.time.nowFormatted("yyyy-MM-dd HH:mm:ssZ"))' \
    >  vtl/resolvers/Query/getDateTime/response.vtl

4. Instantialize the loader and call Loader#load

import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { GraphqlApi } from '@aws-cdk/aws-appsync-alpha';
import { Loader } from '@appsync-butler/core';

export class AppStack extends Stack {
    constructor(scope: Construct, id: string, props?: StackProps) {
        super(scope, id, props);

        const api = new GraphqlApi(this, 'api', { name: "test" });
        const loader = new Loader(this, { api });
        loader.load();
    }
}

Congratulations! You have wrote your first AppSync Butler application 🎉 Deploy the stack to interact with your newly created GraphQL API. Alternatively, you can use npx appsync-butler to run steps 1 and 2.

Documentation

Explore the documentation of AppSync Butler here.