SK GraphQL Query Builder
An even simpler, ES5 friendly, GraphQL query builder
No need for multiple functions, commands, or es5 compatible compiling. Just create a single Query with an options object and get a GraphQL ready query string in return.
Forked from https://github.com/codemeasandwich/graphql-query-builder - a simple ES6 graphql query builder
info:
![GitHub stars](https://img.shields.io/github/stars/sean6bucks/sk-gql-query-builder.svg?style=social&label=Star)
Install
npm install sk-query-builder
Query function:
Query is available out of the box on the Window object, but can also be required to prevent namespace interference.
var Query = require('sk-query-builder');
Use:
Query can be called with a single arguement of either a single query object or an array of query objects and will return a GraphQL formatted string to be attached to query.
var query = Query( [ queryOptions ] );
Constructor / Options:
Single query object or an array of multiple queries to turn into a GQL query string.
Key Value | Argument | Description |
---|
func: | String | the name of the query function |
alias: | String | alias value that result will be returned under |
filters: | Object | An object mapping attribute to values |
value: | String or Object | Attribute name or nested query you want returned. Can be an array of multiple values with the values: key |
values: | Array | An Array of value items ( String or Obj ) to return multiple values |
Example: ( get the sum of users in given timeframe )
var sumQuery = Query({
func: "sum",
alias: "total_sum",
filters: { from: 0, to: 1501234567890 },
value: "count"
});
Output: ( returns formatted string )
"{total_sum: sum(from: 0,to: 1501234567890){count}}"
## Enum Values:
This library also creates an Enum function on the Window object that can be used to create enumeration values in the query string.
Use:
Add Enum values inside query objects buy either the Enum() function with a string to represent the final value or by simply using any string starting with "e$"
Enum( 'VALUE' ) == 'e$VALUE'
Argument (one) | Description |
---|
String | the name of the query function |
Example: ( get the sum of users in given timeframe )
var eventQuery = Query({
alias: 'event_123',
func: 'event',
filters: {
frequency: Enum( 'DAILY' ),
value: Enum( 'CLICKS' )
},
values: [ 'timestamp', 'value' ]
});
console.log( eventQuery );
Examples:
Nested query values
var FetchLeeAndSam = Query({
alias: 'FetchLeeAndSam',
func: 'users',
values: [
{
alias: 'lee',
func: 'user',
filters: { id: '1' },
values: ['name', 'id' ]
},
{
alias: 'sam',
func: 'user',
filters: { id: '2' },
values: ['name', 'id' ]
}
]
});
console.log( FetchLeeAndSam );
Multiple query array with reusable values
var reusable = function( model, year ) {
return {
alias: model,
func: 'vehicle',
filters: { year: year },
values: [
"num_produced",
"horsepower"
]
};
};
var CarCatalog = Query([
reusable( 'Mustang', '1964' ),
reusable( 'Camero', '1988' )
]);
console.log( CarCatalog );
run Examples
node example/simple.js