@darwino/darwino
Version:
A set of Javascript classes and utilities
92 lines (76 loc) • 1.49 kB
JavaScript
/*
* (c) Copyright Darwino Inc. 2014-2017.
*/
import queryString from 'query-string';
import { fetchJson } from './Fetch';
/*
* JSON store query builder
*/
export default class Jsql {
constructor() {
this._params = {};
}
_stringify(s) {
return typeof s === 'object' ? JSON.stringify(s) : s;
}
database(database) {
this.database = database;
return this;
}
queryParams(params) {
if (params) {
for (var k in params) {
if (params.hasOwnProperty(k)) {
if (params[k]) {
this._params[k] = this._stringify(params[k]);
} else {
delete this._params[k];
}
}
}
}
return this;
}
name(name) {
return this.queryParams({
name
});
}
format(format) {
return this.queryParams({
format
});
}
query(query) {
return this.queryParams({
query
});
}
skip(skip) {
return this.queryParams({
skip
});
}
limit(limit) {
return this.queryParams({
limit
});
}
params(params) {
return this.queryParams({
params
});
}
fetch() {
var url = "$darwino-jstore";
if (this.database) {
url += "/databases/".concat(encodeURIComponent(this.database));
}
url += '/jsql'; // Use POST to not have length constraints
return fetchJson(url, {
method: 'POST',
body: JSON.stringify(this._params || {})
});
}
}
//# sourceMappingURL=Jsql.js.map