0.0.13 • Published 3 years ago
erplain-graphql v0.0.13
Erplain GraphQL Query Builder
Install
Using npm :
$ npm install erplain-graphql
Using Yarn :
$ yarn add erplain-graphql
Query
Import :
import { Query } from 'erplain-graphql'
Basic usage :
const query = new Query('Product', ['id', 'label'], {id: 3})
query.addField('sku')
// => ['id', 'label', 'sku']
query.addParameter('sku', 'ABC123')
// => {id: 3, sku: "ABC123"}
query.removeParameter('id')
// => {sku: "ABC123"}
query.buildQueryOne()
// => query{Product(sku:"ABC123"){id,label,sku,}}
query.buildQueryMany()
// => query{Products(sku:"ABC123"){edges{node{id,label,sku,}}}}
query.buildSubqueryOne()
// => Product(sku:"ABC123"){id,label,sku,}
query.buildSubqueryMany()
// => Products(sku:"ABC123"){edges{node{id,label,sku,}}}
query.addTotalCount()
query.buildQueryMany()
// => query{Products(sku:"ABC123"){totalCount,edges{node{id,label,sku,}}}}
Generate query for one element
const statement = Query.queryOne('Product', ['id', 'label'], {id: 3})
// => query{Product(id:3){id,label,}}
Generate query for many elements
const statement = Query.queryMany('Products', ['id', 'label'], {tags: ['Tag A', 'Tag B']})
// => query{Products(tags:['Tag A', 'Tag B']){edges{node{id,label,}}}}
Generate subquery for one element
const statement = Query.subqueryOne('product', ['id', 'label'])
// => product{id,label,}
Generate subquery for many elements
const statement = Query.subqueryMany('products', ['id', 'label'])
// => products{edges{node{id,label,}}}
Mutation
Import :
import { Mutation } from 'erplain-graphql'
Basic usage :
const mutation = new Mutation('ProductCreate', ['id', 'label'], {id: 3})
mutation.addField('sku')
// => ['id', 'label', 'sku']
mutation.addParameter('input', { id: 3, sku: 'ABC123' })
// => {id: 3, input: { id: 3, sku: 'ABC123' }}
mutation.removeParameter('id')
// => {input: { id: 3, sku: 'ABC123' }}
mutation.build()
// => mutation{ProductCreate(input: { id: 3, sku: 'ABC123' }){id,label,sku,}}
Generate one mutation
const data = {
input: {
label: 'Super produit',
sku: 'SUP PDT',
}
}
const statement = Mutation.generate('ProductCreate', ['id', 'label'], data)
// => mutation{ProductCreate(input: { label: 'Super produit', sku: 'SUP PDT' }){id,label,}}
Fragment
Import :
import { Fragment } from 'erplain-graphql'
Basic usage :
const fragment = new Fragment('variant', ['sku'])
fragment.addField('product_id')
// => ['sku', 'product_id']
fragment.build()
// => ... on variant{sku,product_id,}
Generate one fragment
const statement = Fragment.generate('variant', ['sku'])
// => ... on variant{sku,product_id,}