UNPKG

@darwino/darwino

Version:

A set of Javascript classes and utilities

79 lines (66 loc) 1.63 kB
/* * (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(let 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() { let url = `$darwino-jstore` if(this.database) { url += `/databases/${encodeURIComponent(this.database)}` } url += '/jsql' // Use POST to not have length constraints return fetchJson( url, { method: 'POST', body: JSON.stringify(this._params||{}) } ); } }