Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

graphitejs/server

Open more actions menu

GraphiteJS

Framework NodeJS for GraphQl

graphitejs TravisCI Status Codecov Status semantic-release npm latest version


GraphiteJS is a NODE.JS Framework for building GraphQL schemas/types fast, easily and with scalability.

  • Easy to use: GraphiteJS make easy GraphQL in NodeJS without effort.
  • Any Front: GraphiteJS support any front library.
  • Data agnostic: GraphiteJS supports any kind of data source.

Guide


Install

npm i @graphite/server --save

yarn add @graphite/server

on your index file:

import { Graphite } from '@graphite/server'

main = async () => {
  const graphite = await Graphite()
}

main()

and that's all, you have running the graphqli tool on the port 4000 by default.

How to use

After install @graphite/server you have to create your first model. We recommend creating a folder called models and follow the pattern matching the filename with the Type name.

Types

import { GraphQL } from '@graphite/server'

export const Developer = GraphQL('Developer')({
   // the value always have to be an array first arg is the type, the second arg is an optional comment
  name: ['String!', 'Your name is required'],
  age: ['Int'],
  isGreatDeveloper: ['Boolean']
})

So, now you need to pass this model to the Graphite Server

on index.js

import { Graphite } from '@graphite/server'
import { Developer } from './models/Developer'

main = async () => {
  await Graphite({ models: [Developer] })
}

main()

Queries

import { GraphQL } from '@graphite/server'

export const Developer = GraphQL('Developer')({
  name: ['String!', 'Your name is required'],
  age: ['Int'],
  isGreatDeveloper: ['Boolean'],

  Query: {
    'developer: Developer': () => ({ name: 'Your name' }),
    'developers: [Developer]': () => ([{ name: 'Your name' }]),
  }
})

Mutations

import { GraphQL } from '@graphite/server'

export const Developer = GraphQL('Developer')({
  name: ['String!', 'Your name is required'],

  Mutation: {
    'createDeveloper(name: String): Developer': (_, { name, }) => ({ name }),
    'updateDeveloper(id: ID!, name: String): Developer': (_, { name }) => ({ name }),
    'removeDeveloper(id: ID!): Developer': (_, { name }) => ({ name }),
  },
})

Subscriptions

import { GraphQL, PubSub } from '@graphite/server'

const pubsub = new PubSub()
const DEVELOPER_ADDED = 'DEVELOPER_ADDED'

export const Developer = GraphQL('Developer')({
  name: ['String!', 'Your name is required'],

  Mutation: {
    'createDeveloper(name: String): Developer': (_, { name, }) => { 
      pubsub.publish(DEVELOPER_ADDED, { developerAdded: { name } })
      return { name }
    },
  },

  Subscription: {
    'developerAdded: Developer': {
      subscribe: () => pubsub.asyncIterator([DEVELOPER_ADDED]),
    },
  },
})

Relations

  // models/Repository.js
  const Repository = GraphQL('Repository')({
      name: ['String'],
      url: ['String'],
  })

  // models/GithubProfile.js
  const GithubProfile = GraphQL('GithubProfile')({
      url: ['String'],
  })

  // models/Developer.js
  const Developer = GraphQL('Developer')({
    name: ['String'],

    'respositories: [Repository]': () => [{ name: 'GraphiteJS', url: 'https://github.com/graphitejs/graphitejs' }],

    'githubProfile: GithubProfile': () => ({ url: 'https://github.com/wzalazar' }),

    Query: {
      'developer: Developer': () => ({ name: 'Walter Zalazar' }),
    },
  })

So, now you need to pass this model to the Graphite Server

on index.js

import { Graphite } from '@graphite/server'
import { Developer } from './models/Developer'
import { Repository } from './models/Repository'
import { GithubProfile } from './models/GithubProfile'

main = async () => {
  await Graphite({ models: [Developer, Repository, GithubProfile] })
}

main()

Contributing

Please see our contributing.md

  • Clone this repository.
  • Install dependencies.
npm install
  • Feel free for pull request.

Team

Creator

Walter Zalazar
Walter Zalazar
:octocat: @wzalazar
🐦 @wzalazar_

Core members

Walter Zalazar Jose Casella
Walter Zalazar José Luis Casella
:octocat:@wzalazar @jl-casella
🐦@wzalazar_ @jl-casella

License

MIT

About

Framework NodeJS for GraphQl

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 5

Morty Proxy This is a proxified and sanitized view of the page, visit original site.