sk-query-builder

1.0.2 • Public • Published

SK GraphQL Query Builder

An even simpler Javascript, 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:

npm version License pull requests welcome GitHub stars

If this was helpful, ★ it on github

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( query_obj[, options ] );

Query Constructor:

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}}"

Additional Options:

Key Value Argument Description
prefix String prefix string before query obj ( i.e. "mutation" )
Example:
var prefixQuery = Query({
  func: 'update',
  filters: { id: 1, value: 3 },
  value: [ "id", "value" ]
}, { prefix: 'mutation' );
 
console.log( prefixQuery );
// "mutation{update(id:1,value:3){id,value}}"

## 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' ), // can also be "e$DAILY"
    value: Enum( 'CLICKS' )
  },
  values: [ 'timestamp', 'value' ]
});
 
console.log( eventQuery );
// "{event_123:event(frequency:DAILY,value:CLICKS){timestamp,value}}"

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 );
//"{FetchLeeAndSam:users{lee:user(id:"1"){name,id},sam:user(id:"2"){name,id}}}"

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 );
//"{Mustang:vehicle(year:"1964"){num_produced,horsepower} Camero:vehicle(year:"1988"){num_produced,horsepower}}"

run Examples

node example/simple.js

Package Sidebar

Install

npm i sk-query-builder

Weekly Downloads

3

Version

1.0.2

License

MIT

Last publish

Collaborators

  • sean6bucks