Skip to content

Repository files navigation

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

localparse=require'graphql.parse'localschema=require'graphql.schema'localtypes=require'graphql.types'localvalidate=require'graphql.validate'localexecute=require'graphql.execute'-- Parse a querylocalast=parse[[query getUser($id: ID) { person(id: $id) { firstName lastName }}]]-- Create a typelocalPerson=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 schemalocalschema=schema.create {
query=types.object {
name='Query',
fields= {
person= {
kind=Person,
arguments= {
id=types.id
},
resolve=function(rootValue, arguments)
ifarguments.id~=1thenreturnnilendreturn {
id=1,
firstName='Bob',
lastName='Ross',
age=52
}
end
}
}
}
}
-- Validate a parsed query against a schemavalidate(schema, ast)
-- ExecutionlocalrootValue= {}
localvariables= { id=1 }
localoperationName='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

luatests/runner.lua

License

MIT

About

GraphQL implementation in Lua

Resources

Stars

191 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages