Skip to content

codemeasandwich/graphql-query-builder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

graphql-query-builder

a simple but powerful graphQL query builder

info:

npm version License pull requests welcome GitHub stars

tests:

build Coverage Status

quality:

Code Climate bitHound Overall Score Issue Count Known Vulnerabilities

If this was helpful, ★ it on github

tested on NodeJS and Webpack

Buy me a coffee

Install

npm install graphql-query-builder

Api

const Query = require('graphql-query-builder');

constructor

query/mutator you wish to use, and an alias or filter arguments.

Argument (one to two) Description
String the name of the query function
* String / Object (optional) This can be an alias or filter values
let profilePicture = new Query("profilePicture",{size : 50});

setAlias

set an alias for this result.

Argument Description
String The alias for this result
profilePicture.setAlias("MyPic");

filter

the parameters to run the query against.

Argument Description
Object An object mapping attribute to values
profilePicture.filter({ height : 200, width : 200});

find

outlines the properties you wish to be returned from the query.

Argument (one to many) Description
String or Object representing each attribute you want Returned
... same as above
    profilePicture.find( { link : "uri"}, "width", "height");

toString

return to the formatted query string

  // A (ES6)
  `${profilePicture}`;
  // B
  profilePicture+'';
  // C
  profilePicture.toString();

run samples

node example/simple.js

Example

var Query = require('graphql-query-builder');

// example of nesting Querys
let profilePicture = new Query("profilePicture",{size : 50});
    profilePicture.find( "uri", "width", "height");
    
let user = new Query("user",{id : 123});
    user.find(["id", {"nickname":"name"}, "isViewerFriend",  {"image":profilePicture}])
    
    console.log(user)
    /*
     user( id:123 ) {
    id,
    nickname : name,
    isViewerFriend,
    
    image : profilePicture( size:50 ) {
        uri,
        width,
        height
    }
  }
    */
    
// And another example

let MessageRequest = { type:"chat", message:"yoyo",
                   user:{
                            name:"bob",
                            screen:{
                                    height:1080,
                                    width:1920
                                    }
                    },
                    friends:[
                             {id:1,name:"ann"},
                             {id:2,name:"tom"}
                             ]
                    };
                    
let MessageQuery = new Query("Message","myPost");
    MessageQuery.filter(MessageRequest);
    MessageQuery.find({ messageId : "id"}, {postedTime : "createTime" });
    
    console.log(MessageQuery);
    
    /*
    myPost:Message( type:"chat",
                    message:"yoyo",
                    user:{name:"bob",screen:{height:1080,width:1920}},
                    friends:[{id:1,name:"ann"},{id:2,name:"tom"}])
        {
            messageId : id,
            postedTime : createTime
        }
    */

    // Simple nesting
    
    let user = new Query("user");
        user.find([{"profilePicture":["uri", "width", "height"]}])
    
    /* 
    user {
      profilePicture {
        uri,
        width,
        height
       }
     }
    */ 
    
    // Simple nesting with rename
    
    let user = new Query("user");
        user.find([{"image":{"profilePicture":["uri", "width", "height"]}}])
    
    /* 
    user {
      image : profilePicture {
        uri,
        width,
        height
       }
     }
    */ 

About

a simple but powerful graphQL query builder

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published