ql-io / ql.io Goto Github PK
View Code? Open in Web Editor NEWA node.js based declarative, data-retrieval and aggregation gateway for quickly consuming HTTP APIs
Home Page: http://ql.io
License: Other
A node.js based declarative, data-retrieval and aggregation gateway for quickly consuming HTTP APIs
Home Page: http://ql.io
License: Other
Need to think of a shorter path to supporting such features.
return {
...
} via route '/foo' using method blah every 10 min;
The client can then make a WebSocket connection and let ql.io do the polling. We may need to add support functions/events/expressions in the language to support this.
Our logging is very poor - this needs to be improved.
For inbound requests.
wherever IP is being returned. Need to upgrade to node>0.5
Send {flatten:false} to jsonpath. This option was added via JSONPath-Plus/JSONPath#5.
While
select * from foo where id = 1234
is possible,
select * from foo where in in (1234, 3456)
is not. But
select * from foo where in in ('1234', '3456')
is possible.
How do I know the number of results returned?
Right now, things don't fail soon enough making debugging hard.
Consider this example
select e.Title as title, e.ItemID as id, g.geometry.location as latlng, e.Location as loc from ebay.shopping.item as e,
google.geocode as g where
e.itemId in (select itemId from ebay.finding.items where keywords = 'mini')
and e.Location = g.address
This does rubbish results as the joiner part of the statement sends an undefined location to google.geocode. In other cases, the result set will be empty as the joiner would find no data.
On the otherhand, the same statement without aliases works fine
select e.Title, e.ItemID, g.geometry.location, e.Location from ebay.shopping.item as e,
google.geocode as g where
e.itemId in (select itemId from ebay.finding.items where keywords = 'mini')
and e.Location = g.address
Only the last one survives when a statement makes multiple requests.
Really? OK.
This is an idea from Juan.
items1 = select item from foos;
items2 = select item from bars;
Here items1
and items2
are objects with some common fields. Assume that these items have a unique key. The idea is provide a join between these two and hash the response using that key so that the joined response might look like
{
"key1": {...},
"key2": {...},
"key3": {...}.
...
}
It is bad to run foo[2] when foo resolves to string.
Such as INSERT and DELETE and UPDATE - run them only when the user says so in the console.
This is due to a bug in connect.
We need to upgrade connect and verify.
To work around, reload the page.
There is a lot of CSV data out there!
For instance,
select e.Title as title, e.ItemID as id, g.geometry.location as latlng, e.Location as loc from ebay.shopping.item as e, google.geocode as g where
e.itemId in (select itemId from ebay.finding.items where keywords = 'mini')
and e.Location = g.address
is valid while
select e.Title as title, e.ItemID as id, g.geometry.location as latlng, e.Location as loc
from google.geocode as g, ebay.shopping.item as e where
e.itemId in (select itemId from ebay.finding.items where keywords = 'mini')
and e.Location = g.address
is not.
In some cases, we might be interested in getting only the first X results returned by a query. For instance, if we have an API that might return many items that match a given search criteria, we could use a limit clause to get the first 5 of them, like this:
items = select Item from itemAPI where {some condition} limit 5
Additionally, this could also be used to implement pagination for those APIs that support such feature.
items = select Item from itemAPI where {some condition} limit 5, 5
would return the items 5 to 10 from the original response
Something very similar to MySQL's LIMIT syntax (http://dev.mysql.com/doc/refman/5.0/es/select.html):
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
Potential things to watch out
We do this for URI templates but no where else!
See http://codemirror.net/manual.html#option_fixedGutter. This requires CodeMirror upgrade.
Also consider req/resp sizes
In the SELECT where clause, if a field is not part of a web service input parameter, can ql.io perform local filtering of the response based on the where clause.
List in the mon page.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.