mab-graphql-query-assembler
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

mab-graphql-query-assembler

a simple but powerful graphQL query builder

Install

npm install mab-graphql-query-assembler

Api

const Query = require('mab-graphql-query-assembler');

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('mab-graphql-query-assembler');
 
// 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
       }
     }
    */

Package Sidebar

Install

npm i mab-graphql-query-assembler

Weekly Downloads

1

Version

1.1.0

License

MIT

Unpacked Size

107 kB

Total Files

12

Last publish

Collaborators

  • e.stanley