Skip to content
Branch: master
Go to file
Code

Latest commit

bjornbytes committed 6312c75 May 6, 2017
Custom JSON Serialization of Empty Objects

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 

README.md

GraphQL Lua Join the chat at https://gitter.im/bjornbytes/graphql-lua

Lua implementation of GraphQL.

Installation

  1. Using luvit

     lit install bjornbytes/graphql
    
  2. Using luarocks

     luarocks install graphql
    

Example

local parse = require 'graphql.parse'
local schema = require 'graphql.schema'
local types = require 'graphql.types'
local validate = require 'graphql.validate'
local execute = require 'graphql.execute'

-- Parse a query
local ast = parse [[
query getUser($id: ID) {
  person(id: $id) {
    firstName
    lastName
  }
}
]]

-- Create a type
local Person = types.object {
  name = 'Person',
  fields = {
    id = types.id.nonNull,
    firstName = types.string.nonNull,
    middleName = types.string,
    lastName = types.string.nonNull,
    age = types.int.nonNull
  }
}

-- Create a schema
local schema = schema.create {
  query = types.object {
    name = 'Query',
    fields = {
      person = {
        kind = Person,
        arguments = {
          id = types.id
        },
        resolve = function(rootValue, arguments)
          if arguments.id ~= 1 then return nil end

          return {
            id = 1,
            firstName = 'Bob',
            lastName = 'Ross',
            age = 52
          }
        end
      }
    }
  }
}

-- Validate a parsed query against a schema
validate(schema, ast)

-- Execution
local rootValue = {}
local variables = { id = 1 }
local operationName = 'getUser'

execute(schema, ast, rootValue, variables, operationName)

--[[
{
  person = {
    firstName = 'Bob',
    lastName = 'Ross'
  }
}
]]

Status

  • Parsing
    • Improve error messages
  • Type system
  • Introspection
  • Validation
  • Execution
    • Asynchronous execution (coroutines)
  • Example server

Running tests

lua tests/runner.lua

License

MIT

About

GraphQL implementation in Lua

Resources

License

Contributors 4

  •  
  •  
  •  
  •  

Languages

You can’t perform that action at this time.