# erplain-graphql

> Erplain's GraphQL query builder

Latest version **0.0.13** (published 2021-10-14) · MIT license · 0 weekly downloads

## Install

```sh
npm install erplain-graphql
pnpm add erplain-graphql
yarn add erplain-graphql
bun add erplain-graphql
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.13 |
| Published | 2021-10-14 |
| First published | 2021-09-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 6 |
| Unpacked size | 17.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | erplain |
| Maintainers | lil-re |
| Keywords | erplain, graphql, query, builder |

## Links

- npm: https://www.npmjs.com/package/erplain-graphql
- npm.io page: https://npm.io/package/erplain-graphql

## Dependencies (6)

- [core-js](https://npm.io/package/core-js.md) ^3.6.5
- [@babel/cli](https://npm.io/package/@babel/cli.md) ^7.11.6
- [@babel/core](https://npm.io/package/@babel/core.md) ^7.11.6
- [@babel/polyfill](https://npm.io/package/@babel/polyfill.md) ^7.11.5
- [@babel/preset-env](https://npm.io/package/@babel/preset-env.md) ^7.11.5
- [@babel/plugin-proposal-class-properties](https://npm.io/package/@babel/plugin-proposal-class-properties.md) ^7.10.4

## Alternatives

- [gamedig](https://npm.io/package/gamedig.md) — 29.3K weekly downloads
- [join-monster](https://npm.io/package/join-monster.md) — 12.8K weekly downloads
- [masked](https://npm.io/package/masked.md) — 5.5K weekly downloads
- [@comunica/actor-query-process-explain-logical](https://npm.io/package/@comunica/actor-query-process-explain-logical.md) — 4.7K weekly downloads
- [@veracity/vui](https://npm.io/package/@veracity/vui.md) — 4.6K weekly downloads

## Recent versions

- 0.0.13 (latest) — 2021-10-14
- 0.0.12 — 2021-09-23

## README

# 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 :
```js
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
```js
const statement = Query.queryOne('Product', ['id', 'label'], {id: 3})
// => query{Product(id:3){id,label,}}
```

Generate query for many elements
```js
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
```js
const statement = Query.subqueryOne('product', ['id', 'label'])
// => product{id,label,}
```

Generate subquery for many elements
```js
const statement = Query.subqueryMany('products', ['id', 'label'])
// => products{edges{node{id,label,}}}
```

## Mutation

Import :  
```
import { Mutation } from 'erplain-graphql'
```

Basic usage :
```js
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
```js
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 :
```js
const fragment = new Fragment('variant', ['sku'])

fragment.addField('product_id')
// => ['sku', 'product_id']

fragment.build()
// => ... on variant{sku,product_id,}
```

Generate one fragment
```js
const statement = Fragment.generate('variant', ['sku'])
// => ... on variant{sku,product_id,}
```

---
_Source: https://npm.io/package/erplain-graphql · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
