1.0.2 • Published 3 years ago

@antstackio/json-to-graphql v1.0.2

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

JSON to GraphQL Query / Mutation

Creating dynamic GraphQL queries can be quite cumbersome. This package addresses this problem and generates GraphQL syntax-based queries / mutation based on JSON data.

Installation

Use the package manager npm to install the package

npm i @antstackio/json-to-graphql

Usage

const { jsonToGrapqhQLMutation, jsonToGrapqhQLQuery } = require("@antstackio/json-to-graphql");

// sample JSON data for creating a mutation
const mutationDataSample = {...};

// sample JSON data for creating a query
const queryDataSample = {...}

// returns GraphQL Mutation
console.log(jsonToGrapqhQLMutation(mutationDataSample));

// returns GraphQL Query
console.log(jsonToGrapqhQLQuery(queryDataSample));

Sample Data

Json to GraphQL Mutation Input

{
  name: "myMutationName",
  tableName: "tableName",
  returnValues: [
    "id1",
    {
      id2: ["id21", "id22"],
    },
  ],
  jsonData: {
    Book: [
      {
        Title: "ABCDEFGHIJKLMNOPQRSTUVWX",
        Price: 997.5,
        ISBN: "ABCDEFGHIJKLMNOPQRSTUVWX",
        Genre: "ABCD",
        Author: [
          {
            FirstName: "ABCDEFGHIJKLM",
            Surname: "ABCDEFGHIJKLMNOPQRS",
          },
          {
            FirstName: "ABCD",
            Surname: "ABCDEFGHI",
          },
          {
            FirstName: "ABCDEFGHIJKLMNOPQRSTUVWXYZAB",
            Surname: "ABCDEFGHIJKLMNOPQRSTUVWXYZAB",
          },
          {
            FirstName: "ABCDEFGHIJ",
            Surname: "ABCDEFGHIJKLMNOPQRSTUVW",
          },
        ],
      },
      {
        Title: "ABCDEFGHIJKLMNO",
        Price: 115.25,
        ISBN: "ABCDEFGHIJKLMNOPQRSTU",
        Genre: "ABCDEFGHIJKLMNOPQRSTUV",
        Author: [
          {
            FirstName: "ABCDEFGH",
            Surname: "ABCDEFGH",
          },
        ],
      },
    ],
  },
}

Json to GraphQL Mutation Output

mutation myMutationName {
  tableName(
    objects: {
      Book: [
        {
          Title: "ABCDEFGHIJKLMNOPQRSTUVWX"
          Price: 997.5
          ISBN: "ABCDEFGHIJKLMNOPQRSTUVWX"
          Genre: "ABCD"
          Author: [
            { FirstName: "ABCDEFGHIJKLM", Surname: "ABCDEFGHIJKLMNOPQRS" }
            { FirstName: "ABCD", Surname: "ABCDEFGHI" }
            {
              FirstName: "ABCDEFGHIJKLMNOPQRSTUVWXYZAB"
              Surname: "ABCDEFGHIJKLMNOPQRSTUVWXYZAB"
            }
            { FirstName: "ABCDEFGHIJ", Surname: "ABCDEFGHIJKLMNOPQRSTUVW" }
          ]
        }
        {
          Title: "ABCDEFGHIJKLMNO"
          Price: 115.25
          ISBN: "ABCDEFGHIJKLMNOPQRSTU"
          Genre: "ABCDEFGHIJKLMNOPQRSTUV"
          Author: [{ FirstName: "ABCDEFGH", Surname: "ABCDEFGH" }]
        }
      ]
    }
  ) {
    id1
    id2 {
      id21
      id22
    }
  }
}

Json to GraphQL Query Input

{
  name: "myQueryName",
  jsonData: [
    "item1",
    {
      item2: [
        "item21",
        {
          item22: [
            "item221",
            {
              item222: ["item2221", "item2222"],
            },
          ],
        },
      ],
    },
    "item3",
  ],
}

Json to GraphQL Query Output

query myQueryName {
  item1
  item2 {
    item21
    item22 {
      item221
      item222 {
        item2221
        item2222
      }
    }
  }
  item3
}

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT