bjornbytes / Graphql Lua
Licence: mit
GraphQL implementation in Lua
Stars: ✭ 154
Programming Languages
lua
6591 projects
GraphQL Lua
Lua implementation of GraphQL.
Installation
-
Using luvit
lit install bjornbytes/graphql
-
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
- [x] Parsing
- [ ] Improve error messages
- [x] Type system
- [x] Introspection
- [x] Validation
- [x] Execution
- [ ] Asynchronous execution (coroutines)
- [ ] Example server
Running tests
lua tests/runner.lua
License
MIT
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].