This package has been deprecated

Author message:

We moved, we are now within the @herbsjs organization. Please visit herbsjs.org

herbs2gql

1.0.8 • Public • Published

herbs2gql

​ herbs2gql creates GraphQL types based on herbs entities (gotu) and usecases (buchu), based on Apollo GraphQL. ​

Installing

​ $ npm install herbs2gql ​

Using

​ All methods returns a string in GraphQL format representing the type based (gql) and a resolver (when expected). ​

GraphQL Type

​ To convert a Herbs Entity to GraphQL Type: ​

const { entity2type } = require('herbs2gql')const entity = entity('User', {
    id: field(String),
    name: field(String),
    document: field(String),
    age: field(Number),
    active: field(Boolean),
})const gql = entity2type(entity)

GraphQL Input

​ To convert a Herbs Entity to GraphQL Input: ​

const { entity2input } = require('herbs2gql')const entity = entity('UserFilter', {    
    name: field(String),    
    age: field(Number),    
})const gql = entity2input(entity)

GraphQL Query

​ To convert a Herbs Use Case to GraphQL Query: ​

const { usecase2query } = require('herbs2gql')const usecase = usecase('Get User', {
    request: {
        id: Number,
        document: String
    },response: User
})const resolverFunc = (parent, args, context, info) => { }const [gql, resolver] = usecase2query(usecase, resolverFunc)

GraphQL Mutation

​ To convert a Herbs Use Case to GraphQL Mutation: ​

const { usecase2mutation } = require('herbs2gql')const usecase = usecase('Update User', {
    request: {
        id: Number,
        name: String,
        age: Number,
        active: Boolean
    },response: User
})const resolverFunc = (parent, args, context, info) => { }const [gql, resolver] = usecase2mutation(usecase, resolverFunc)

GraphQL Subscription

​ To convert a Herbs Use Case to GraphQL Subscription: ​

const { usecase2subscription } = require('herbs2gql')const usecase = usecase('New User Notification', {
    request: {
        id: Number,        
    },response: UserMessage
})const resolverFunc = () => { }const [gql, resolver] = usecase2subscription(usecase, resolverFunc)

GraphQL Resolvers

herbs2gql provides a generic resolver implementation for mutations and queries. ​

const { defaultResolver } = require('herbs2gql')const updateUser = (injection) => usecase('Update User', {
    request: {
        id: Number,
        name: String,
        age: Number,
        active: Boolean
    },response: User
})const [gql, resolver] = usecase2mutation(updateUser(), defaultResolver(updateUser))

​ In case you need to implement your own resolver: ​

const usecase = usecase('Update User', {
    request: {
        id: Number,
        name: String,
        age: Number,
        active: Boolean
    },response: User
})const resolverFunc = (parent, args, context, info) => { }const [gql, resolver] = usecase2mutation(usecase, resolverFunc)

​ Or you can use herbs2gql defaultResolver implementation as a reference. ​ ​

Custom Names or Conventions

In Herbs it is possible to include personalized names for queries, mutations, inputs and types custom names are always prioritized ​

Custom Names

const options = { inputName: 'An-Entity' }// for entity2input
const gql = entity2input(givenAnInput, options)// for entity2type
const gql = entity2type(givenAnEntity, options)//for mutation, query or subscription example using mutation
const [gql, resolver] = usecase2mutation(givenAnUseCase, resolverFunc, options)

Conventions

At the convention, a function must be sent, it must return a text formatted according to the sended convention

const options = { convention: { inputNameRule: (str) => `snake_case_returned` }}// for entity2input
const gql = entity2input(givenAnInput, options)// for entity2type
const gql = entity2type(givenAnEntity, options)//for mutation, query or subscription example using mutation
const [gql, resolver] = usecase2mutation(givenAnUseCase, resolverFunc, options)

Example

​ Additionally you can view a simple demo application of this library in todolist-on-herbs. ​

How to contribute

​ If you would like to help contribute to this repository, please see CONTRIBUTING

License

Package Sidebar

Install

npm i herbs2gql

Weekly Downloads

6

Version

1.0.8

License

MIT

Unpacked Size

139 kB

Total Files

38

Last publish

Collaborators

  • herbsjs-robot
  • dalssoft
  • jhomarolo