ComposedQL
ComposedQL is a query language that aims URI friendly queries for RESTful APIs.
Use Cases
- Composing data queries with efficient way
- Selecting only a subset of data
- Filtering sensitive information
- Creating authZ compatible API endpoints
- Improving caching and routing
Design Goals
- URI friendly queries
- High performance query parsing
- Exchangeable and human readable/writable structure
Specification
(work in progress)
- Fields represent object properties, resources or functions.
- Examples:
foo
- field~foo
- resourcefoo()
- function
- Examples:
- Commas are separators for fields or function arguments
- Examples;
foo,bar
- fields~foo(bar,baz)
- resource fieldsfoo(bar,baz)
- function arguments
- Examples;
- Dots are accessors for accessing nested fields or field functions
- Examples;
foo.bar
- nested field~foo(bar.baz)
- nested resource fieldfoo.bar()
- field functionfoo(bar).baz(qux)
- function chain~foo(bar).baz(qux)
- resource field chain
- Examples;
Notes
This repository provides composed query language parser and specifications.
Installation
npm install composedql
Usage
var cql = ;
parse
Parses given composed query
cql;
name: 'user' type: 'field' source: 'user' name: 'location' type: 'field' source: 'location.city' properties: name: 'city' type: 'property'
cql;
name: 'user' type: 'field' source: 'user' name: 'photo' type: 'resource' source: '~photo(profile,cover)' fields: name: 'profile' type: 'field' source: 'profile' name: 'cover' type: 'field' source: 'cover' name: 'post' type: 'resource' source: '~post(id,text).from(today)' fields: name: 'id' type: 'field' source: 'id' name: 'text' type: 'field' source: 'text' properties: name: 'from' type: 'function' args: name: 'today' type: 'arg' source: 'today'
License
Licensed under The MIT License (MIT)
For the full copyright and license information, please view the LICENSE.txt file.