1.1.0 • Published 6 years ago

mab-graphql-query-assembler v1.1.0

Weekly downloads
7
License
MIT
Repository
github
Last release
6 years ago

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
Stringthe 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.

ArgumentDescription
StringThe alias for this result
profilePicture.setAlias("MyPic");

filter

the parameters to run the query against.

ArgumentDescription
ObjectAn 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 Objectrepresenting 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
       }
     }
    */