Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bjornbytes/graphql-lua
GraphQL implementation in Lua
https://github.com/bjornbytes/graphql-lua
Last synced: 3 days ago
JSON representation
GraphQL implementation in Lua
- Host: GitHub
- URL: https://github.com/bjornbytes/graphql-lua
- Owner: bjornbytes
- License: mit
- Created: 2015-11-24T04:17:40.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2023-03-13T08:29:08.000Z (over 1 year ago)
- Last Synced: 2024-08-01T22:51:23.525Z (3 months ago)
- Language: Lua
- Size: 99.6 KB
- Stars: 185
- Watchers: 20
- Forks: 30
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-graphql - graphql-lua - GraphQL for Lua. (Libraries / Lua Libraries)
- awesome-graphql - graphql-lua - GraphQL for Lua. (Libraries / Lua Libraries)
README
GraphQL Lua [![Join the chat at https://gitter.im/bjornbytes/graphql-lua](https://badges.gitter.im/bjornbytes/graphql-lua.svg)](https://gitter.im/bjornbytes/graphql-lua?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
===Lua implementation of GraphQL.
Installation
------------1. Using luvit
lit install bjornbytes/graphql
2. Using luarocksluarocks install graphql
Example
---```lua
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 endreturn {
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 serverRunning tests
---```lua
lua tests/runner.lua
```License
---MIT