0.0.3 • Published 2 years ago

@cloudcycle/postgraphile-plugin-aws-appsync-scalars v0.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

postgraphile-plugin-aws-appsync-scalars

This plugin for PostGraphile converts Postgraphile-generated custom scalar names to those AWS AppSync accepts.

Current name mappings:

PostGraphile typeAWS type
JSONAWSJSON
DatetimeAWSDateTime
DateAWSDate
BigIntInt
BigFloatFloat
CursorString

Limitations

No warning is issued if you failed to set dynamic-json to false. In that case, the resulting schema will presented by AWS AppSync will not match what PostGrahile expects to receive.

Installation

Install using NPM or Yarn.

NPM:

npm install --save @cloudcycle/postgraphile-plugin-aws-appsync-scalars

Yarn:

yarn add @cloudcycle/postgraphile-plugin-aws-appsync-scalars

Usage

CLI:

postgraphile --dynamic-json false --append-plugins @cloudcycle/postgraphile-plugin-aws-appsync-scalars

Library:

import awsAppsyncScalarsPlugin from '@cloudcycle/postgraphile-plugin-aws-appsync-scalars';

Then add it to the appendPlugins array. E.g.:

app.use(
  postgraphile(process.env.AUTH_DATABASE_URL, "app_public", {
    appendPlugins: [
      awsAppsyncScalarsPlugin,
      // Any other plugins that reference types explicitly
      // should go here.
    ],

    // Ensure JSON fields are returned serialised to strings, as this is
    // what the AWSJSON type expects.
    dynamicJson: false,

    // Optional customisation
    graphileBuildOptions: {
    },
    // ... other settings ...
  })
);

Interoperability

The order in which this plugin is specified could affect the resulting schema, and you may achieve more predictable results by listing this plugin first. When another plugin makes explicit references to types, this plugin needs to be listed in append_plugins before it. In particular, this is the case with the @graphile/pg-aggregates plugin.

Roadmap

  • Add unit tests
  • Support scalar types from the PostGIS plugin, notably GeoJSON.
  • Allow the mapping of PosgreSQL types to AppSync compatible types to be customised.
  • Allow user-specified types (e.g. SQL domains) to be converted.
  • Allow AWS types for fields, arguments etc. to be specified via smart-comments, so that we could make use of the extra checking AWS AppSync performs when using AWSEmail, AWSPhone etc.
0.0.2-pre3

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.2-pre2

2 years ago

0.0.2-pre1

2 years ago

0.0.1

2 years ago

0.0.1-pre1

2 years ago